目录
数据类型
1.数值类型
1.1.位--类型bit(M)
1.2. 整数类型--tinyint,smallint,int,bigint
1.3.小数类型--float、decimal
2.字符类型--char、varchar
3.日期类型--datetime、timestamp
4.string类型--enum和set
mysql的约束
1.空属性--null
2.默认值--default
3.注释--comment
4. 显示位数--zerofill
5.主键(primary key)
5.1.复合主键
5.2.自增长--auto_increment
6.唯一键--unique
7.外键--foreign key
7.1.外键约束
数据类型
1.数值类型
1.1.位--类型bit(M)
数据类型 | 大小 | 说明 |
bit(M) | 由M决定,0-2^M-1; | M取值1-64,bit大小也就是最小0-2^1-1,最大0-2^64-1;默认为1 |
例子:
1.2. 整数类型--tinyint,smallint,int,bigint
- 就是对应C语言的char、short、int、long long
- 都可以添加unsigned约束,就只能去正整数了,例如int范围变为0到2^32-1;
数据类型 | 大小 | 说明 |
tinyint | 1字节 | 范围-2^7到2^7-1; |
smallint | 2字节 | 范围-2^15到2^15-1; |
int | 4字节 | 范围-2^31到2^31-1; |
bigint | 8字节 | 范围-2^63到2^63-1; |
多了一行,是我写多了 |
1.3.小数类型--float、decimal
数据类型 | 大小 | 说明 |
float(M,D) | 4字节 | 单精度,M指定长度,D指定小数位数,会发生丢失精度 |
double(M,D) | 8字节 | 和floar相同 |
decimal(M,D) | 双精度,M指定长度,D指定小数位数,准确数组 |
- float(4,2)的范围是[-99.99,99.99] ;
- float等小数类型都遵守四舍五入的准则插入;
- folat等也是可以使用unsigned的,不够范围会变成整数,[0,99.99];
decimal和float的区别
- float的精度大概有7位,decimal的精度很高;
- 当对精度有要求的时候使用dec
2.字符类型--char、varchar
- 像电话号码、身份证号就是char固长;
- 像地址、姓名就使用varchar变长;
数据类型 | 大小 | 说明 |
char | 最大255个字符,一个字符1-3个字节 | 固定长度,效率更高,但是空间浪费,就像c语言char tem[12]; |
varcahr | 0-65535字节 | 变长,效率没有固长快,但是更节省空间,就像string tem; |
3.日期类型--datetime、timestamp
- 时间戳会自动检测当前时间填入,在修改数据也会自动检测当前时间填入;
数据类型 | 大小 | 说明 | 格式 |
datetime | 8字节 | 范围从1000到9999年 | yyy-mmm-ddd hh-mm-ss |
timestamp | 4字节 | 范围1979到2038年,自动检索当前时 区并进行转换 | yyy-mmm-ddd hh-mm-ss |
4.string类型--enum和set
enum和set存储的是整数,0表示为空,>0表示非空
- enum如下面的选项’男‘ ,’女’分别代表‘1’,‘2’;依次递增,最大2^16;
- set最多有64个选项,它是一个位图0111就代表‘写代码,唱歌,跳舞’;
数据类型 | 说明 |
enum | 多选一,选项上限2^16个; |
set | 多选多,选项上限64个; |
mysql的约束
- 数据类型就是一种约束,但是比较单一需要一些其他的约束来相互配合;
1.空属性--null
- mysql默认是null的,null表示没有填写或不存在,!=0;
可以设置为not null表示必须填写;
2.默认值--default
- 设置一个默认值不填就使用默认值
3.注释--comment
查看创建信息;
show create table 表名 \G
4. 显示位数--zerofill
- 配合整形(位数),填充位数;
5.主键(primary key)
- 主键约束不能为空且唯一,因为它是用于检索的;
5.1.复合主键
- 多列数据做为主键;
5.2.自增长--auto_increment
- 不插入值时,使用当前最大值+1;
- 通常和主键连用;
6.唯一键--unique
- unique是可以为空的;相同不能插入
主键和唯一键
- 主键和唯一键的差别就是主键不可以为null,唯一键可以;
- 主键和唯一键是相互协作和补充的;
- 主键是用于检索的,它不能为空所有的记录都会有唯一值;主键就像学号在学校是最主要的识别你身份的信息,但是你还有一些唯一的信息那么就是唯一键
7.外键--foreign key
- 使用外键只使用一个整数,更节省空间
7.1.外键约束
- 从表插入主表没有的数据会插入失败
- 主表删除,从表还有那么删除不了