第十二章数据类型
比如说tinyint(4)这个四表示的是那个取值范围的位数 他只是一个显示
比如说int后面应该是int(11)这是有符号的 无符号int是int(10) 如果写成int(3)但是存的数据是四位也可以 因为他只是一个显示 能不能存要看他确切的范围
整数字段四舍五入也会超
定点数
超出位数了
decimal表示的比double更精准
由于直接写2就是十进制的写法 转换为二进制就是01 这样的话就是占了两个字节了
如果是八进制的话0开头 二进制的话就是ob开头
f2是五个字节 也就是 五个1 1 1 1 1换算成十进制最大就是31
bin为转换为2进制 hex为转换为十六进制
直接写year就ok了 默认就是四位
到了70就是1970 69就是2069 数字0就是0000年 带引号的0就是2000
文本字符串类型
char是固定的长度 比如m是十位你不满十位的话 他会给你补齐
varchar就是 你使用了多少长度就是多少长度 另外多加一个字节就是为了记录你使用了多少长度
没有指明的话就是一个字符 太长就报错
检索char类型的数据时 char类型的字段会去除尾部的空格 这里我们多加了两个空格 但是检索长度的时候给我们把自己加的空格也给去了
vachar是一个可变长度的 所以必须指明长度 不然会报错
vachar虽然 m的范围是到65535 但是一个汉字是三个字节 除以三的话就是21845 所以 最多能存21845个字符
二进制类型和json类型的讲解
这个和char vachar 差不多 但是他们是字节 char和varchar是字符
json类型
小结及选择建议
第十三章约束
查看表中的约束
notnull没有表级约束
查看表中的约束
声明为unique的字段null值可以多次添加
修改字段的约束的时候可以起别民
复合唯一
主键约束
在实际开发中 不会去删除主键约束的
自增列
这个报错对应着是第3条 没有主键约束 也没有唯一约束
一般的话会设置主键约束加自增长
即使添加的是0或者1 都是递增 但是如果是直接指定其他的数字的话 如果不存在还是会写指定的数字 如果加的是-10 就放到了最前面
开发中
新特性mysql8.0 自增变量的持久化
mysql 5.7
重启服务器
mysql 8.0
mysql8.0是一个持久化的