MySQL数据类型分为
数值类型,文本、二进制类型,时间日期类型,string类型
在MySQL中,整形可以指定时有符号的和无符号的,默认是有符号的,可以通过unsigned来说明某字段是无符号的。
bit字段在显示时,是按照ASCII码对应的值显示。
同时在a,b中插入57,但显示时,a显示9 b显示57
因为bit是以Ascll码值显示的,而57刚好是字符9
float(m,d) m指定显示的长度,d指定小数的位数
float为(4,2)
插入19.9999时 显示为20,会自动四舍五入
在float和decimal中同时插入相同的值时,float最后两位已经改变,而decimal依旧是正确的值。
float精度大约为7位,而decimal精度大约位10位
在MySQL中使用float和decimal取决于您的数据需求和目的。 使用float可以存储宽松精度的数据,并能避免精度损失;而使用decimal可以确保精度,并且适用于需要精确计算或比例的应用程序。
char(L) L表示存储的长度,也就是字符的长度
varchar (L) 表示存储的长度,也就是字符的长度)
附:关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
varchar长度可以指定为0到65535之间的值,但是有1 - 3 个字节用于记录数据大小,所以说有效字 节数是65532。 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占 用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符 占用2字节)。
如何选择定长或变长字符串?
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。
定长的意义是,直接开辟好对应的空间
变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。
常用的日期有如下三个:
date :日期 'yyyy-mm-dd' ,占用三字节
datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用 四字节
date是用户记录日期,datetime是用户记录日期时间,而timestamp是时间戳,当表内发生变动,如插入,修改时,时间戳会自动更新修改时的时间。
enum枚举 如选择题的单选题
set集合 如选择题的多选题
enum和set都必须插入数据内的值,其他值都不允许插入。
enum只运行插入其中一个,而set可以插入多个。
用自带的查找,只能查找只有一个的值。
查询集合使用find_in_set函数
select * from 表名 where find_in_set('要查的关键字',列名);