MySQL 学习之数据类型

数据类型

数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。

整型

数据类型 存储范围(有符号值) 存储范围(无符号值) 字节 用途
TINYINT (-128,127)(-2^(7) 到 2^(7) - 1) (0,255) (0 到 2^(8) - 1) 1 小整数值
SMALLINT (-32 768,32 767)(-2^(15) 到 2^(15) - 1) (0,65 535) (0 到 2^(24) - 1) 2 大整数值
MEDIUMINT (-8 388 608,8 388 607)(-2^(23) 到 2^(23) - 1) (0,16 777 215) (0 到 2^(16) - 1) 3 大整数值
INT或INTEGER (-2 147 483 648,2 147 483 647)(-2^(31) 到 2^(31) - 1) (0,4 294 967 295) (0 到 2^(32) - 1) 4 大整数值
BIGINT (-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(-2^(63) 到 2^(63) - 1) (0,18 446 744 073 709 551 615) (0 到 2^(64) - 1) 8 极大整数值

浮点型

数据类型 存储范围(有符号值) 存储范围(无符号值) 字节 用途
FLOAT[(M,D)] (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 4 单精度浮点数值
DOUBLE[(M,D)] (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 8 双精度浮点数值

PS M 是数字总位数,D 是小数点后后面的位数,如果 M 和 D 被省略,根据硬件允许的限制来保存值

日期和时间类型

类型 字节 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 ‘-838:59:59’/‘838:59:59’ HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串类型

类型 字节 用途
CHAR(n) 0-255 定长字符串
VARCHAR(n) 0-65535 变长字符串
TINYBLOB 0-255 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 短文本字符串
BLOB 0-65 535 二进制形式的长文本数据
TEXT 0-65 535 长文本数据
MEDIUMBLOB 0-16 777 215 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 中等长度文本数据
LONGBLOB 0-4 294 967 295 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 极大文本数据
ENUM(‘value1’, ‘value2’) 1 或 2 个字节,取决于枚举类型的个数(最多 65 535 个值) 枚举
SET(‘value1’, ‘value2’) 1、2、3、4 或者 8 个字节,取决于 set 成员的数目(最多 64 个成员) 集合

PS CHAR 和 VARCHAR

  1. CHAR(n) 若存入字符数小于 n,则以空格补于其后,查询之时再将空格去掉。所以 CHAR 类型存储的字符串末尾不能有空格,VARCHAR 不限于此。
  2. CHAR(n) 固定长度,CHAR(4) 不管是存入几个字符,都将占用 4 个字节,VARCHAR 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节 (n>255),所以 VARCHAR(4),存入3个字符将占用4个字节。
  3. CHAR 类型的字符串检索速度要比 VARCHAR 类型的快。

数据类型的属性

关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
PRIMARY KEY 主键约束,每张数据表只能存在一个主键,保证记录的唯一性,自动为 NOT NULL
UNIQUE KEY 唯一约束,每张数据表可以存在多个唯一约束,保证记录唯一性,可以为空值(NULL)
AUTO_INCREMENT 自动递增,适用于整数类型,默认情况下,起始值为1,每次增量为1,且必须与主键组合使用
DEFAULT 默认值
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集
Author: Inno Fang
Link: http://innofang.github.io/2017/07/17/MySQL-%E5%AD%A6%E4%B9%A0%E4%B9%8B%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-ND 4.0 unless stating additionally.