数据类型本身就是一种约束,在数据库的表中定义的字段都是有类型的,常见的类型有:
数值型
tinyint (默认为无符号-128——127)
bit (默认是一个比特位bit(1))
bit(m) m个比特位位可以表示的数字 范围1-64
小数类型
folat(m,d) 长度为位,小数点后有d位(不够就补0)
会四舍五入,当数据很大时就会发生精度丢失
小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。
create table tt6 (id int,salary float(4,2));
decimal
用法和float一样 ,但是decimal的精度更高,不会向float如果当小数点后超过7位就会发生精度不准确,
字符串类型
char(L)固定长度,L是字个数,不是字节个数所以不管是字母还是汉字都只占一个字符(3字节)
varchar(L) 并不是L有多长一次就开辟多少空间,L只是用来限制不超过的,实际存储数据的时候存了多少个字符就是多少
char vs varchar
都是用来存储字符的,且都有长度限制
char开多少是多少,varchar用多少开多少
因为varchar还要每次记录自身的长度,所以效率底
如果存储的字符的位数不会发生很大的变化的话就用char ——如身份证号码
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
时间日期类型
时间戳不需要插入数据,在每次插入数据的时候会根据当前时间爱自动更新
enum 和 set
enum(‘选项1’,‘选项2’,‘选项3’,…); ——单选,也可根据数字下标选
set(‘选项值1’,‘选项值2’,‘选项值3’, …);——多选,也可根据比特位图选
在多选查找的时候,他只会严格按照匹配的去查找
所以要用集合查询函数**:集合查询使用find_ in_ set函数:**
简单用法:
所以想要查找出所有爱好中有登山的就用find_in_set()函数