一、数据类型介绍:
(1)数据表由多个字段组成,每一个字段都指定了自己的数据类型,指定了数据类型后,也就决定了向字段插入数据的内容;
(2)不同的数据类型也决定了MySQL在存储数据的时候使用的方式,以及在使用数据的时候选择什么运算符进行运算;
(3)数值数据类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL
(4)日期/时间数据:YEAR、TIME、DATE、DATETIME、TIMESTAMP
(5)字符串数据类型:CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET
二、数值类数据类型:
(1)数值类数据类型主要用来存储数字,不同的数值类型提供不同的取值范围,可以存储的值范围越大,需要的存储空间也越大;
(2)数值型分为:整数类型,浮点数类型,定点数类型;
1.整数类型(整数类型的属性字段可以添加auto_increment自增约束条件)
2.浮点数类型和定点数类型:
(1)MySQL中使用浮点数和定点数来表示小数,浮点数有两种类型:单精度浮点数(FLOAT),
双精度浮点数(DOUBLE),定点数只有DECIMAL;
(2)浮点数和定点数都可以用(M,D)来表示,其中M是精度,表示总共的位数(不算点号),D是标度,表示小数的位数
(3)DECIMAL实际上是以字符串形式存放的,在对精度要求比较高的时候(如货币、科学数据等)使用DECIMAL类型比较好;
(4)浮点数相对于定点数的有点是在长度一定的情况下,浮点数能够表示更大的数据范围(取值范围更大),他的缺点是会引起精度的问题
3.日期时间类型;
(1)MySQL有多重表示日期的数据类型,比如:当只记录年份信息时,可以使用YEAR类型,而没有必要使用DATE类型;
(2)每一个类型都有合法的取值范围,当数据是不合法的值时,系统将“零”值插入到数据库中
1、YEAR
(1) 格式:以4位字符串格式表示的 YEAR ,范围为 ‘1901’ ~ ‘2155’
(2) 格式:以4位数字格式表示的 YEAR ,范围为 1901 ~ 2155
(3) 格式:以2位字符串格式表示的 YEAR ,范围为 ‘00’ ~ ‘99’ ,其中,‘00’ ~ ‘69’ 被转换为 2000 ~ 2069 ,‘70’ ~ ‘99’ 被转换为 1970 ~ 1999
(4) 格式:以2位数字格式表示的 YEAR ,范围为 1 ~ 99 ,其中,1 ~ 69 被转换为 2001 ~ 2069 ,70 ~ 99 被转换为 1970 ~ 1999
2、TIME
(1) TIME 类型的格式为 HH:MM:SS ,HH 表示小时,MM 表示分钟,SS 表示秒
(2) 格式:以 ‘HHMMSS’ 格式表示的 TIME ,例如 ‘101112’ 被理解为 10:11:12 ,但如果插入不合法的时间,如 ‘109712’ ,则被存储为 00:00:00
(3) 格式:以 ‘D HH:MM:SS’ 字符串格式表示的 TIME ,其中 D 表示日,可以取 0 ~ 34 之间的值,在插入数据库的时候 D 会被转换成小时,如 ‘2 10:10’ 在数据库中表示为 58:10:00 ,即 2x24+10 = 58
3、DATE
(1) DATE 类型的格式为 YYYY-MM-DD ,其中,YYYY 表示年,MM 表示月,DD 表示日
(2) 格式:‘YYYY-MM-DD’ 或 ‘YYYYMMDD’ ,取值范围为 ‘1000-01-01’ ~ ‘9999-12-31’
(3) 格式:‘YY-MM-DD’ 或 ‘YYMMDD’ ,这里 YY 表示两位的年值,范围为 ‘00’ ~ ‘99’ ,其中,‘00’ ~ ‘69’ 被转换为 2000 ~ 2069 ,‘70’ ~ ‘99’ 被转换为 1970 ~ 1999
(4) 格式:YY-MM-DD 或 YYMMDD ,数字格式表示的日期,其中 YY 范围为 00 ~ 99 ,其中,00 ~ 69 被转换为 2000 ~ 2069 ,70 ~ 99 被转换为 1970 ~ 1999
4、DATETIME
(1) DATETIME 类型的格式为 YYYY-MM-DD HH:MM:SS ,其中,YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分钟,SS 表示秒
(2) 格式:‘YYYY-MM-DD HH:MM:SS’ 或 ‘YYYYMMDDHHMMSS’ ,字符串格式,取值范围为 ‘1000-01-01 00:00:00’ ~ ‘9999-12-31 23:59:59’
(3) 格式:‘YY-MM-DD HH:MM:SS’ 或 ‘YYMMDDHHMMSS’ ,字符串格式,其中 YY 范围为 ‘00’ ~ ‘99’ ,其中,‘00’ ~ ‘69’ 被转换为 2000 ~ 2069 ,‘70’ ~ ‘99’ 被转换为 1970 ~ 1999
(4) 格式:YYYYMMDDHHMMSS 或 YYMMDDHHMMSS ,数字格式,取值范围同上
5、TIMESTAMP
(1) TIMESTAMP 类型的格式为 YYYY-MM-DD HH:MM:SS,显示宽度固定在19个字符
(2) TIMESTAMP 与 DATETIME 的区别在于,TIMESTAMP 的取值范围小于 DATETIME 的取值范围
(3) TIMESTAMP 的取值范围为 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC ,其中 UTC 是世界标准时间,存储时会对当前时区进行转换,检索时再转换回当前时区