1 数值类型
1.1整型
TINYINT 微整型,占1个字节,范围-128~127;
SMALLINT 小整型,占2个字节 ,范围-32768~32767;
MEDIUINT 中整型,占3个字节,范围 -8388608~8388607;
INT 整型,占4个字节 ,范围 -2147483648~2147483647;
BIGINT 大整型,占8个字节, 范围 -9223372036854775808~9223372036854775807;
注意:
(1)在整型数据中,在设置列表类型时,默认设置均为有符号数,当增加unsigned时,列属性为无符号数;
(2)如果插入的数值超出了范围,则会报异常out of range,并且插入的值为临界值;
(3)如果不设置数值类型的长度,都会有默认长度,而长度代表显示的最大长度,如果填充不满最大长度,则会用0填充,但是必须要搭配zerofill使用,即在定义列类型时规定zerfill。
1.2 浮点型
FLOAT(M,D) 单精度浮点型,占4个字节,范围3.4e38,范围比INT大的多,可能产生计算误差;
DOUBLE(M,D) 双精度浮点型,占8个字节,范围比BIGINT大的多;
DECIMAL(M,D) 定点小数,不会产生计算误差,M代表总的有效位数,D代表小数点后的有效位数;
BOOL 布尔型,只有两个结果TRUE/1、FALSE/0,TRUE和FALSE不能添加引号;真正存储数据的时候,会使用TINYINT。
注意:
(1)如果插入数据超过M的最大值,则会插入临界值;
(2)如果数据类型为dec(M,D),则其中默认值为M=10,D=0,;
(3)如果数据类型为float或者double,则默认的M,D值会根据插入的数值的精度来决定精度;
(4)定点小数的精确性较高,如果要求插入的数值精度较高,比如货币运算等则考虑使用dec(M,D)。
2 时间日期型
DATE 日期型,4个字节,最小值’1000-01-01’,最大值’9999-12-31’ ,例如:'2018-12-31';
TIME 时间型,3个字节,最小值’-838:59:59‘,最大值’838:59:59’,例如'14:22:30';
DATETIME 日期时间型,8个字节,最小值’1000-01-01 00:00:00’,最大值’9999-12-31 23:59:59’,例如'2018-12-31 14:22:30';
YEAR 年类型,1个字节,最小值’1901’,最大值’2155’;
TIMESTAMP 时间戳,4个字节,最小值’19700101080001’,最大值’2038年的某个时刻’。
注意:
timestamp和实际的时区有关,更能反映实际的日期,而datetime只能反应出插入时的当地时区,并且,timestamp的属性收MySQL版本和SQLmode的影响很大。
3 字符串类型
VARCHAR(M) 变长字符串,不会产生空间浪费,操作速度相对较慢,M最大值是65535;
CHAR(M) 定长字符串,可能产生空间浪费,操作速度较快,M最大值是255;用于存储手机号码,身份证号等固定长度的字符;
BLOB 保存较大二进制;
ENUM 枚举类型,要求插入的值必须属于列表指定的值之一;
注意:
(1)M是字符数,不是字节数;
(2)Char的M默认为1,varchar的M值必须要指定。