约束-外键约束
外键约束:foreign key 让表于表产生关系 从而保证数据的正确性
数据表的创建和数据添加 sql语句
-- 创建emp表
CREATE TABLE 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'))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本