SQL-外键约束

外键约束

外键约束:foreign key 让表于表产生关系 从而保证数据的正确性

数据表的创建和数据添加 sql语句

复制代码
CREATE TABLE emp(-- 创建emp表
        id int PRIMARY KEY auto_increment,
        name VARCHAR(30),
        age int,
        dep_name VARCHAR(30), -- 部门名称
        dep_location VARCHAR(30)-- 部门名称
);

INSERT INTO emp VALUES(null,"张三",20,"研发部","广州"),(null,"李四",20,"研发部","广州"),(null,"王五",20,"研发部","广州");
INSERT INTO emp VALUES(null,"老王",20,"销售部","深圳"),(null,"大王",22,"销售部","深圳"),(null,"小王",18,"销售部","深圳");
复制代码

数据表

 

 数据有冗余 可以对表进行拆分

SQL语句

复制代码
-- 解决方案:分为2张表
-- 创建部门表(id,dep_name,dep_location)
-- 主表
CREATE TABLE department(
        id int PRIMARY KEY auto_increment,
        dep_name VARCHAR(20),
        dep_locationion VARCHAR(20)
);

-- 创建员工表(id,name,age,dep_id,)
CREATE TABLE employe(
        id int PRIMARY KEY auto_increment,
        name VARCHAR(20),
    age int(5),
        dep_id int(2)
);

-- 添加2个部门
INSERT INTO department VALUES(null,"研发部","广州"),(null,"销售部","深圳");

-- 添加员工 dep_id表示员工所在的部门
INSERT INTO employe VALUES(null,"张三",20,1),(null,"李四",20,1),(null,"王五",20,1);
INSERT INTO employe VALUES(null,"老王",20,2),(null,"大王",22,2),(null,"小王",18,2);
复制代码

数据表

 

创建表时 声明外键

SQL语法

CREATE TABLE 表名(
    ....
        外键列 外键列类型
        CONSTRAINT 外键名称 FOREIGN KEY 外键列名称 REFERENCES 主表名称(主表列名称)
);

运行结果

 

 测试

 

 一旦我们删除这个数据 就会出现错误

 

 错误:不能删除或更新父行:外键约束失败(' videoppractice ')。' employee ', CONSTRAINT 'depid_fk' FOREIGN KEY ('dep_id') REFERENCES, 'department' ('id'))

删除外键

SQL语句

ALTER TABLE 主键键表 DROP FOREIGN KEY 外键名;

运行结果

测试

 

 

 

 成功删除

添加外键

SQL语句

ALTER TABLE 主键表名 ADD CONSTRAINT 外键名称 FOREIGN KEY 外键列名称 REFERENCES 主表名称(主表列名称)

运行结果

测试

 

 错误:不能删除或更新父行:外键约束失败(videopractice”。' employee ', CONSTRAINT 'depid_fk' FOREIGN KEY ('dep_id') REFERENCES ' department (id'))

posted @   baimingze  阅读(2629)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示