1. 数值类型
(1). ZEROFILL
ZEROFILL
对整型数据定义长度的,输入的数据长度不够,前面用 0 补齐;- 定义方式:
CREATE TABLE temp(id INT(5) ZEROFILL);
- 在添加
ZEROFILL
时,数据库为自动为该字段添加UNSIGNED
限制,即该字段的内容必须大于等于 0,如果插入的数据小于 0,则会抛出Out of range value
错误。
(2). AUTO_INCREMENT
- 只适用于
INT
类型的数据; - 每个表中只有一个字段可用该修饰符;
- 该字段必须为
PRIMARY KEY
或者UNIQUE
修饰的;
(3). 小数
- 在MySQL中对于小数的存储只有浮点数和定点数表示,浮点数包括
FLOAT
和DOUBLE
,定点数只有DECIMAL
;,定点数在MySQL中以字符串形式存放,比浮点数更精确,适用于存储货比数据; - 浮点数和定点数都可以加
(M,D)
形式表示,其中M表示总位数,D表示小数位数。定义方式如下:CREATE TABLE t1(id1 FLOAT(5,2) DEFAULT NULL);
; - 采用
(M,D)
定义后,如果整数位数超过限制会报Out of range value
错误,小数超过限制位数后会四舍五入
[仅看后一位进行四舍五入];
(4). BIT
- BIT类型数据,创建形式:
CREATE TABLE b(id BIT(1));
; - 正常查询二进制数据可以用
bin(id)
方法,查询十六进制数据可以用HEX(id)
方法;
2. 日期类型
(1). 加0
- 在查询日期类型的数据时,正常返回形式为:
yyyy-MM-DD HH:MM:SS
形式,如果要以20150421111025
形式的字符串返回时,可以在相应的字段加0,使用方式如下:SELECT t1+0 AS t1 FROM times;
;
(2).TIMESTAMP
TIMESTAMP
默认值为:CURRENT_TIMESTAMP
,当一个表中有两个字段为TIMESTAMP
类型时,第二个字段默认值为0000-00-00 00:00:00
;- 当
TIMESTAMP
字段超出限制越界时,用0000-00-00 00:00:00
进行填补; - 日期的插入是不严格语法:任何标点符号都可以作为日期部分或时间部分之间的间隔符,如:
98.12.31 11+30+45
;
3. 字符串类型
CHAR
和VARCHAR
区别:CHAR
类型的数据会自动删除字符串末尾的空格,VARCHAR
会保留字符串末尾的空格;ENUM
枚举类型:CREATE TABLE t(gender ENUM('M','F'));
、INSERT INTO t VALUES('M'),('f'),(1);
。枚举类型不区分大小写,可以用1,2等顺序表示相应的值,不能插入枚举数据中不存在的值【但是可以有NULL】,但是ENUM每次只能取一个值;set
集合类型,与ENUM
重要的区别是set
类型可以一次取多个值,ENUM
每次只能取一根值:CREATE TABLE t(col set('a','b','c','d'));
和INSERT INTO t VALUES('a','b');
;