一、概述
- 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据
- 目的:保证数据库中数据的正确、有效性和完整性
- 分类:
注意:约束是作用于表中字段上的,可以在创建/修改表的时候添加约束
二、演示
案例:完成下列表结构的创建
AUTO_INCREMENT表示自增长
建表语句如下
多个约束之间无符号,用空格隔开即可
三、外键约束
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性
具有外键的是子表,外键相连的是父表
注意:目前上述的两张表,在数据库层面并未建立外键关联,所以无法保证数据的一致性和完整性
1. 语法
- 添加外键
CREATE TABLE表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY [外键字段名] REFERENCES 主表(主表列名)
或是建完表后添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);
以实训项目的一个MySQL语句为例
CREATE TABLE `USER` (
id INT PRIMARY KEY AUTO_INCREMENT,
user_name VARCHAR(50),
`password` varchar(50),
create_time datetime comment'创建时间'
)comment'用户表';
CREATE TABLE `order` (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
order_number VARCHAR(20)comment'订单数量',
total_price varchar(20)comment'订单中商品总价',
order_state varchar(10)comment'订单状态',
FOREIGN KEY (user_id) REFERENCES User(id)
)comment'订单表';
- 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
四、外键删除与更新行为
其中,前两个是默认行为
用级联举例,添加行为语法如下:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名) ON UPDATE CASCADE ON DELETE CASCADE;
不过,在实际开发中,外键是被严令禁止的,原因参考这篇文章: