为何需要外键约束
当表与表之间的数据有相关联性时:
- 如果没有相关的数据约束,则无法保证数据的准确性
外键约束的作用:
- 让表与表之间产生关联关系,从而保证数据的准确性
外键约束使用
建表时添加外键约束:
create table 表名(
列名 数据类型 约束
.....
constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名)
)
删除外键约束:
alter table 表名 drop foreign 外键名
建表后单独添加外键约束:
alter table 表名 add
constraint 外键名 foreign key (本表外键列名) references 主表名(主键列名)
实例演示
首先创建2表,并使用外键约束
CREATE TABLE user(
id INT PRIMARY KEY auto_increment,
name VARCHAR(40) NOT NULL
);
INSERT INTO user VALUES (NULL,'张三'),(NULL,'李四');
CREATE TABLE ouser(
id INT PRIMARY KEY auto_increment,
number VARCHAR(20) NOT NULL,
uid INT, -- 外键列
CONSTRAINT ou FOREIGN KEY (uid) REFERENCES user (id)
);
INSERT INTO ouser VALUES (NULL,'hm1',1),(NULL,'hm2',1),(NULL,'hm3',2),(NULL,'hm4',2);
进行错误测试
-- 添加一个ouser 但是没有对应的user,会添加失败
INSERT INTO ouser VALUES (NULL,'hm5',3);
-- 删除李四用户会删除失败
DELETE FROM user WHERE name='李四';
删除外键约束
-- 删除外键约束 ALTER TABLE ouser DROP FOREIGN KEY ou;
添加外键约束
-- 添加外键约束 ALTER TABLE ouser ADD CONSTRAINT ou FOREIGN KEY (uid) REFERENCES user(id);