数值类型
如下是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类型可以一次选取多个成员