补充知识点: 字段约束
1、字段约束
附件:MySql数据类型对照表
1.1概念
在创建数据表的时候,指定的对数据表的咧的数据限制性要求(对表的字段中的数进行限制)
- 为什么要给表中添加字段约束
- 保证数据的有效性
- 保证数的完整性
- 保证数据的准确性
- 常见字段约束
- 非空约束(not null) : 限制此列的值必须提供,不能为null;
- 唯一约束 (unique) : 不能重复
- 主键约束 (primary key) : 为空+ 唯一,能够唯一标识数据表中的一条数据
- 外键约束 (foreign): 建立不同表之间的关联关系
1.2 字段与约束
- 创建一个表
create table stus (
name varchar(10) primary key,
sex char(2) not null,
age int not null,
id int unique,
qq varchar(11)
);
-
非空字段 not null
-
唯一约束 unique
- 案例中 id int unique 表示 不能出现相同 id
- 主键约束 primary key
- 主键 就是数据表中记录的唯一标识,在一张表中只有一个主键,主键可以是一个列,也可以是多个列的组合
- 当一个字段声明为主键之后,添加数据时,1. 此字敦数据不能为null,此字段数据不能重复
- 定义主键⾃动增⻓ : 定义int类型字段⾃动增⻓: auto_increment
- 注意:⾃动增⻓从1开始,每添加⼀条记录,⾃动的增⻓的列会⾃定+1,当我们把某条记录删 除之后再添加数据,⾃动增⻓的数据也不会重复⽣成(⾃动增⻓只保证唯⼀性、不保证连续 性)
mysql 数据类型对照表
1. 数值类型
| 类型 | 内存空间⼤⼩ | 范围 | 说明 |
|---|---|---|---|
| tinyint | 1 byte | 有符号 -128 | 特⼩型整数(年龄) |
| samllint | 2byte | 有符号 -32768 ~ 32767 ⽆符号 0~65535 | ⼩型整数 |
| mediumint | 3byte | 有符号 -2^31 ~ 2^31 - 1 ⽆符号 0~2^32-1 | 中型整数 |
| int / integer | 4byte | 整数 | |
| bigint | 8byte | ⼤型整数 | |
| float | 4byte | 单精度 | |
| double | 8byte | 双精度 | |
| decimal | 第一参数 + 2 | decimal(10,2) 表示数值⼀共有10位 ⼩数位有2位 |
2. 字符串类型
| 类型 | 字符长度 | 说明 |
|---|---|---|
| char | 0-255字节 | 定⻓字符串,最多可以存储255个字符 ;当我们指定 数据表字段为char(n) 此列中的数据最⻓为n个字符,如果添加的数据少于 n,则补'\u0000'⾄n⻓度 |
| varchar | 0~65536 字节 | 可变⻓度字符串,此类型的类最⼤⻓度为65535 |
| tinyblob | 0~255 字节 | 存储⼆进制字符串 |
| blob | 0~255 字节 | 存储⼆进制字符串 |
| mediumblob | 0~1677215 | 存储⼆进制字符串 |
| longblob | 0~4294967295 | 存储⼆进制字符串 |
| tinytext | 0~255 | ⽂本数据(字符串) |
| text | 0~65535 | ⽂本数据(字符串) |
| mediumtext | 0~1677215 | ⽂本数据(字符串) |
| longtext | 0~1677215 | ⽂本数据(字符串) |
2. 日期类型
| 类型 | 格式 | 日期 |
|---|---|---|
| date | 2022-08-12 | ⽇期,只存储年⽉⽇ |
| time | 11:12:13 | ⽇期,只存储年⽉⽇ |
| year | 2022 | 年份 |
| datetime | 2022-08-12 11:12:13 | ⽇期+时间,存储年⽉⽇时分秒 |
| timestamp | 20220812 111213 | ⽇期+时间 (时间戳) |