【深入浅出MySQL-03 数据类型】

数值类型

如下是mysql支持的数据类型

对于整型数据,MySQL还支持在类型后面的小括号内显示指定宽度,如果数值宽度小于指定宽度时前面会进行填充,默认宽度为11

整数属性:

1、unsigned 如果需要在字段里面保存非负数或者需要较大的上限值时,可以使用此选项

2、auto_increment 这个属性只能用于整数类型。一个表中最多只能有一个列设为auto_increment,此外还需要将列定义为not null,将该列定义为primary key或者unique键

对于小数的表示,MySQL分为两种方式:浮点数和定点数。浮点数包括float,double,而定点数则包括decimal,定点数在MySQL内部以字符串形式存放,比浮点数更精确。

浮点数和定点数都可以用类型名称后加"(M,D)"的方式进行表示,表示该值一共显示M位数字,其中D位位于小数点后面,M和D分别称为精度和标度。


浮点数如果不写精度和标度,则会按照实际精度显示,如果有精度和标度,则会自动将四舍五入后的结果插入;定点数如果不写精度和标度,则按照默认值decimal(10,0)来进行操作

位类型用于存放位字段值,默认存放1位,对于位类型,直接使用select命令将不会看到结果,可以使用bin()或者hex()进行读取。

日期时间类型

对于timestamp,系统会默认用当前时间戳进行插入。

但如果表中有第二个字段类型为timestamp,则默认值为0;MySQL规定timestamp类型字段只能有一列的默认值为current_timestamp,如果强制修改,系统会报错误。

此外,timestamp还和时区相关,当插入日期或者取出日期时,会先转换为本地时区

timestamp和datetime主要有一下的一些区别:

year类型主要用来表示年份

日期插入格式,以Datetime为例进行说明:

1、YYYY-MM-DD HH:MM:SS 或者YY-MM-DD HH:MM:SS格式的字符串,该格式并不严格,任何标点符都可以做日期部分或时间部分之间的间隔符,比如 '1998.12.21 11+32+23'

2、YYYYMMDDHHMMSS或者YYMMDDHHMMSS格式的字符串,字符串必须是合法有意义的

3、YYYYMMDDHHMMSS或者YYMMDDHHMMSS格式的数字,同样必须是合法且有意义的。

4、函数返回的结果。

字符串类型

char和varchar用于保存较短的字符串,char是长度固定的字符串,varchar则是可变字符串,char会删除字符串末尾的空格,而varchar则会保留空格。

binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串而不包含非二进制字符串,当保存binary值时,在值的最后通过填充'0x00'已达到指定的字段定义长度

enum类型也就是枚举类型,需要在建表时通过枚举方式显式指定,enum类型是忽略大小写的。

set类型和enum类型非常相似,也是一个字符串对象,主要的区别在于set类型可以一次选取多个成员

你可能感兴趣的:(【深入浅出MySQL-03 数据类型】)