目录
[3.NOT NULL 非空约束](#3.NOT NULL 非空约束)
[4. UNIQUE 唯一约束](#4. UNIQUE 唯一约束)
[5.PRIMARY KEY 主键约束](#5.PRIMARY KEY 主键约束)
[2.1主键列设置为null 则使用自增](#2.1主键列设置为null 则使用自增)
[6.1 更新](#6.1 更新)
[6.FOREIGN KEY 外键约束](#6.FOREIGN KEY 外键约束)
[7.DEFALUT 默认值约束](#7.DEFALUT 默认值约束)
1.1重构学⽣表,有以下要求,年龄不能⼩于16岁,性别只能是男或⼥
一、数据库约束
1.定义
数据库约束是关系型数据库的一个重要功能
主要作用是保证数据的有效性 也可以理解为数据的正确性(数据本身是否正确,关联关系是否正正确)
人工检查数据的完整性工作量非常大,在数据库中定义一些约束,那么数据在写入数据库的时候,就会帮我们做一些检验
约束一般是在指定的列上创建的
2.约束类型
|------------------|-------------------------------------------------------|
| 类型 | 说明 |
| NOT NULL⾮空约束 | 指定⾮空约束的列不能存储 NULL 值 |
| DEFALUT 默认约束 | 当没有给列赋值时使⽤的默认值 |
| UNIQUE 唯⼀约束 | 指定唯⼀约束的列每⾏数据必须有唯⼀的值 |
| PRIMARY KEY 主键约束 | NOT NULL 和 UNIQUE的结合,可以指定⼀个列或多个列,有助于防⽌数据 重复和提⾼数据的查询性能 |
| FOREIGN KEY 外键约束 | 外键约束是⼀种关系约束,⽤于定义两个表之间的关联关系,可以确保数据 的完整性和⼀致性 |
| CHECK 约束 | ⽤于限制列或数据在数据库表中的值,确保数据的准确性和可靠性 |
3.NOT NULL 非空约束
学⽣名为NULL时,这条记录是不完整的
在不可以为空的列后面加 not null
4. UNIQUE 唯一约束
指定了唯⼀约束的列,该列的值在所有记录中不能重复,⽐如⼀个⼈的⾝份证号,学⽣的学号等
在需要加唯一约束的列后面加 unique 关键字
只加了唯一约束的列可以写入null 而且可以写入很多条null
5.PRIMARY KEY 主键约束
非空语约束 + 唯一约束 + 提高效率
主键约束唯⼀标识数据库表中的每条记录。
主键必须包含唯⼀的值,且不能包含 NULL 值。
每个表只能有⼀个主键,可以由单个列或多个列组成。
通常为每张表都指定⼀个主键,主键列建议使⽤BIGINT类型
1.主键的使用
在数据校验上 即非空 又 唯一
2.把表中的主键交给数据库自己维护
2.1主键列设置为null 则使用自增
2.2插入除了主键以外的所有非空列(推荐方法)
2.3自定义的主键值
只要符合非空和唯一即可
自增操作一旦完成 不论是否写入成功 都不会回退
4.为一个表定义两个主键(error)
5.一个主键包含多个列
两列全部重复才报错
6.主键或唯⼀键冲突时的更新操作
6.1 更新
删除原数据 新增新数据
6.2替换
如果没有冲突则直接插入新数据 和 insert 的功能一样
6.FOREIGN KEY 外键约束
外键⽤于定义主表和从表之间的关系
外键约束主定义在从表的列上,主表关联的列必须是主键或唯⼀约束
当定义外键后,要求从表中的外键列数据必须在主表的主键或唯⼀列存在或为null。
外键约束也是对数据的一个校验过程 从表中使用主表中的某个值 这个值必须在主表中存在
1.语法
sql
foreign key (id) references class(id) -- 加入外界关联
2.应用
删除主表时 如果从表有对主表的引用 则不允许删除主表的记录
删除主表时 应该先解除主外键关系 或者先删除从表
7.DEFALUT 默认值约束
指定值的列用具体的值填充 没有指定值的列 用默认值填充如果明确指定列的值为null 则用null填充改列
默认约束只是数据库层面的一个兜底行为
8.CHECK 约束
对单行数据进行检验 一般在应用程序级别进行校验