MySQL 数据类型的介绍
(1).数值数据类型:包括整数类型 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT、浮点小数数据类型 FLOAT 和 DOUBLE,定点小数类型 DECIMAL。
(2).日期/时间类型:包括 YEAR、TIME、DATE、DATETIME 和 TIMESTAMP。
(3).字符串类型:包括 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等。字符串类型又分为文本字符串和二进制字符串。
整数类型
MySQL 有多种整数类型,取值范围不同,可以添加 AUTO_INCREMENT 自增约束条件。
例如:
一个字段 id INT(11). 这个后面的数字 11,表示的是该数据类型指定显示的宽度。
显示的宽度和数据类型的范围是无关的,如果插入的数值大于显示的宽度,数值仍然是可以插入的,也可以显示,只要不超过取值范围。
不指定显示宽度,系统会指定默认宽度。
例如:
浮点数类型和定点数类型
浮点数类型和定点数类型都可以用(M,N)来表示,M 是精度,表示总共位数;N 是标度,是小数的位数。
DECIMAL 和 DOUBLE 最大取值范围一样,DECIMAL 的存储空间不是固定的,而由其精度值 M 决定,占用 M+2 个字节。
定点数和浮点数,如果插入的数据超过用户指定的精度,都会四舍五入进行处理。
浮点数对于定点数的优点是长度一定的情况下,浮点数能表示更大的数据范围,但是会引起精度问题。定点数以字符串形式储存,对精度要求比较高的手,DECIMAL 的类型会比较好。
日期与时间类型
在这里不细说了,只说一些语法注意事项:
YEAR:
在插入的时候可以以 2 位字符插入,范围是 '00' 到 '99'。‘00’ ~ ‘69’ 和 ‘70’ ~ ‘99’,分别转换为 2000~2069 和 1970~1999。数字 00~99 也是一样。
TIME:
格式为 ‘HH:MM:SS’。
插入时可以使用非严格语法:
‘HH:MM:SS’、'HH:MM'、'D HH:MM'、'D HH' 或 'SS'。
没有冒号的时候:
‘HHMMSS’ ‘109712’ 会被认为不合法,时间 97 超过了范围。
DATE:
可以以 ‘YYYY-MM-DD’ 或者 ‘YYYYMMDD’ 格式插入。
也可以以 ‘YY-MM-DD’ 和 ‘YYMMDD’ 或者 YY-MM-DD 和 YYMMDD 格式插入。
也可以用 CURRENT_DATE 和 NOW() 前者只有日期,后者有日期和时间,但是保存到数据库的时候也只有日期部分。
DATETIME
可以以 ‘YYYY-MM-DD HH:MM:SS’ 或者 ‘YYYYMMDDHHMMSS’, ‘YY-MM-DD HH:MM:SS’ 或者 ‘YYMMDDHHMMSS’,YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS格式 插入。
TIMESTAMP
格式也是 ‘YYYY-MM-DD HH:MM:SS’ 取值范围小于 DATETIME,为‘1970-01-01 00:00:01’ UTC~‘2038-01-19 03:14:07’UTC。
文本字符串类型
CHAR 和 VACHAR
除了存储字符串数据之外,还可以存储比如图片和声音的二进制数据。
CHAR 和 VACHAR 区别
TEXT 类型
ENUM 类型
格式 字段名 ENUM('值1','值2',。。。'值n') 最多可以有 65545 各元素。
SET 类型
SET('值1','值2',....'值n') 最多 64 个成员,不允许重复。
二进制字符串类型
BIT 类型
范围是 1~64 ,不指定默认为 1。
BINARY 和 VARBINARY
BINARY 是固定长度,填充不足的时候用 ‘\0’ 补齐,VARBINARY 是变长,如果填充不足的时候,是实际长度加1。
BLOB 类型