Mysql的数据类型
数值类型
其中DEC(M,D)中的M的意思为最多显示M位数字(整数位和小数位),D的意思为小数位。
int(5)代表int的宽度为5.(默认为11)。只有与zerofill搭配使用时才有意义(左补0)当加了zerofill时,将把当前数据类型调整为无符号类型。当超出宽度时,按照正常情况显示(和c语言的%3d类似)。
bit(x)x代表字节数(1-8)当x=1时,bit可以表示0和1。插入数据时输入十进制数即可,因为会被自动转换成2进制。要查看bit类型数据时需要调用函数bin(字段名)或者hex(字段名)前者为显示2进制数后者为显示十六进制数。
日期时间类型
now()函数可以获得当前时间
可以设置时间的默认值为CURRENT_TIMESTAMP,这样插入数据时就不再需要为这个字段设置值了,他会自动填充当前时间。
可以设置on Update CURRENT_TIMESTAMP这样当数据更新时将会自动更新时间。
DateTime图TimeStamp的区别在于DateTime可以显示的范围更大。但是DateTime只有插入受时区影响。而DateStamp插入和查询都会受到时区的影响。
字符串类型
Char(x)和VarChar(x)
Char和VarChar都是用来存储比较短的字符的,其中Char为定长,长度在创建属性的时候就确定了,VarChar是变长的。在不超过x的情况下根据插入的数据确定长度。并且VarChar不会删除末尾的空格,而Char会删除末尾的空格。
Binary(x)和VarBinary(x)
存储二进制字符串。
Binary的结尾会用’\0’填充
ENUM类型
枚举类型需要在创建时规定。如create table test (day enum(‘1号’,‘2号’))
插入时可以插入’1号’ ‘2号’。也可以插入1,2(代表元素位置.1代表1号)
但是ENUM类型每次只能取一个值
###SET类型
SET类型与ENUM类型很相似。唯一的区别就是SET一次可以取多个值。
如
create table test (day set(‘a’,‘b’,‘c’))
然后插入
INSERT INTO test4 values (‘a’)
INSERT INTO test4 values (‘1’)
INSERT INTO test4 values (‘a,b,c’)
JSON类型
json类型可以是数字 字符串 布尔 null 数组 key-value(Object)
例子
create table test (t1 json)
可以插入
[“aa”,123,null,true]
{“key1”:“value”, “key2” : 1.99}
也可以进行组合
json中大小写敏感。且必须为false true null
函数
字符串函数