目录
数据类型分类
分为四种类型
- 数值类型
- 文本二进制类型
- 时间日期
- string类型
我们需要了解数值类型不同可容许的最大值和最小值分别是多少
我们来进行几组越界测试:
我们可以发现,整形默认是有符号的。那如何创建无符号的呢?
bit类型
//bit基本语法 bit[(M)]: 位字段类型。M表示每个值的位数,范围从1到64。如果M被忽略,默认为1。
问: 为什么a对应的值未显示呢?
因为bit字段在显示时,是按照ASCII码对应的值显示。
小数类型
数值类型中,其中float类型和decimal类型属于小数类型。
//float语法 float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
比如float(4,2)表示的范围是-99.9~99.99。
我们可以从插入值看出,float保存时会四舍五入。
当float是无符号时,float(4,2)unsigned范围是0~99.99
//decimal语法 decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
比如decimal(5,2)表示的范围是-999.99~999.99
如上,decimal(5,2) unsigned 表示的范围 0 ~ 999.99
看起来decimal和float十分相似,下来我们来看看两者有什么不同
字符串类型
字符串类型有char和varchar
//char语法 char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
//varchar语法 varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
char和varchar两个字符串类型比较
那如何选用使用哪个呢?请遵循以下规则
- 如果数据确定长度都一样,就使用定长(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 完全一致,占用四字节
我们可以看到,时间戳会自动生成当前时间。接下来我们修改一下t1的时间。
enum和set
//两者语法 enum('选项1','选项2','选项3',...); set('选项值1','选项值2','选项值3', ...);