文章目录
一,数值类型
MySQL数据库里面的数据类型
int类型
int类型是一个大类
类型 | 大小 |
---|---|
tinyint | 1字节 (-27 ~ 27-1) |
smallint | 2字节 (-215 ~ 215-1) |
mediumint | 3字节 (-223 ~ 223-1) |
int | 4字节 (-231 ~ 231-1) |
bigint | 8字节 (-263 ~ 263-1) |
默认创建都是有符号的类型
越界情况
- MySQL里面的数据内容若是越界,则会直接报错,不会像语言一样进行隐式转换、整型截断什么的
如图,直接报错,这是为了保证数据库里插入的数据一定是正确的。
bit类型
默认创建bit类型的大小为1比特位
小数类型
float 和 decimal
# {}表示里面内容是可选项,不填则有默认
float{(m,d)} {unsigned} # m表示总长度(包括小数位数),d表示小数位数,unsigned表示无符号类型
decimal{(m,d)} {unsigned} # m表示总长度(包括小数位数),d表示小数位数,unsigned表示无符号类型
decimal和float用法类似,不多赘述。
- float 浮点数一定存在精度是损失
二,字符串类型
char和varchar
使用场景:
- 如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
- 如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。
- 定长的磁盘空间比较浪费,但是效率高。
- 变长的磁盘空间比较节省,但是效率低。
- 定长的意义是,直接开辟好对应的空间
- 变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少
日期和时间类型
名称 | 大小 | 格式 | 特点 |
---|---|---|---|
date | 3字节 | ‘yyyy-mm-dd’ | 固定时间,需要手动更改 |
datetime | 8字节 | ‘yyyy-mmm-dd hh:mm:ss’ | 固定时间,需要手动更改 |
timestamp | 4字节 | ‘yyyy-mmm-dd hh:mm:ss’ | 时间戳,每次插入或更新数据,时间也会自动更新 |
enum和set
- enum的数字下标
插入或者查询数据时,可以填写内容,也可以填写数字,如上例子:1表示‘男’,2表示‘女’。(数字从1开始) - set的数字位图
同上,但是不同的是,这个数字是按位图操作(即二进制1的位置),如:1表示语文,2表示数学,3表示语文和数学,以此类推。
建议:不用用数字,因为不便于阅读