数值类型、字符串类型、日期时间类型
- 数值类型(整数、小数):
- zerofill:位数不够用0填充。ALTER TABLE t1 MODIFY id1 int ZEROFILL;
- 小数(浮点数、定点数):浮点数(float、double)、定点数(decimal)
- 定点数在MySQL内部以字符串的形式存放,比浮点数更精确,适合用来表示货币等精确度高的数据。
- (M,D)M:精度;D:标度。CREATE TABLE t1(id float(5,2) default NULL);
- 浮点数如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。
- 位字段:直接使用SELECT命令将不会看到结果,可以用bin(显示为二进制格式)或者hex(显示为十六进制格式)函数进行读取。SELECT bin(id),hex(id) FROM table;
- 字符串类型
- CHAR和VARCHAR类型:相同点:都用来保存MySQL中较短的字符串;长度:0~255。不同点:CHAR长度为创建表时声明的长度;VARCHAR可变字符串长度;检索时CHAR列删除了尾部的空格,VARCHAR保留了这些空格。
- ENUM类型:忽略大小写,如果插入的值不在枚举范围内,不会返回警告,默认插入第一个值。ENUM类型只允许从值集合中选取单个值,而不能一次取多个值。CREATE TABLE t(gender enum('M',F));
- SET类型:SET和ENUM类似,但SET可以同时插入多个成员,对于SET插入成员中相同的只取一次。CREATE TABLE t(col set('a','b','c','d'));
- 日期时间类型
- 年月日,通常用DATE表示
- 年月日时分秒,通常用DATETIME表示
- 时分秒,通常用TIME表示
- TIMESTAMP类型:默认为CURRENT_TIMESTAMP,MySQL规定TIMESTAMP类型字段只能有一列的默认值为current_timestamp,TIMESTAMP和时区有关,不同时区的人看到的同一时期可能不一样;