整形:tinyint smallint mediumint int bigint依次为1,2,3,4,8bytes
默认情况下整形是有符号的,需要一个二进制位存储符号
给整形加上约束unsinged来表示无符号,如果数据超出范围就取最大的,在无符号的情况下保存256其实为255
如果有符号如 tinyint 保存-1280 其实存的是-128 为最小值
show variables like ‘’sql_mode''查看当前模式
get global sql_mode=''STRICT_TRANS_TABLES''在严格模式下超出范围就直接报错,默认为严格模式
在正常情况下。先判断数据的正确性,没有问题在发送给数据库
浮点型数据:float double decimal 精度越来越高,在位数一样的情况下
float(m,d)m表示这个浮点数的整体长度,d表示小数部分
他们的小数部分长度都为30,float和double最大长度为225
char和varchar
char定长,存取速度快
varchar变长字符,节省空间,存取速度慢
char 填充空格来满足固定长度,但是在查询时会删除尾部的空格,而varchar存多少显示多少
虽然char和varchar的存储方式不一样,但是对两个字符串的比较都只是比较其值
单从数据的类型实现机制去考虑,char数据类型的处理速度更快,有事甚至可以超出varchar速度的一半
但是从Innodb存储引擎上看建议使用varchar
enum 单选只能在一个给定的范围选择一个值(后面的括号里面只能是字符串)
set 多选 在给定的范围可以选择一个或者一个以上的值(后面的括号里面只能是字符串)