多表操作-外键约束

Posted by 汤键|兔子队列 on October 26, 2021 禁止转载
本文总共 872 字 · 阅读全文大约需要 3 分钟

为何需要外键约束

当表与表之间的数据有相关联性时:

  • 如果没有相关的数据约束,则无法保证数据的准确性

外键约束的作用:

  • 让表与表之间产生关联关系,从而保证数据的准确性

外键约束使用

建表时添加外键约束:

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);