字节流的博客

MySQL 数据类型

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中对于小数的存储只有浮点数和定点数表示,浮点数包括 FLOATDOUBLE ,定点数只有 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. 字符串类型

  • CHARVARCHAR 区别: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');
Thanks! 😊