首页 > 其他分享 >约束-外键约束

约束-外键约束

时间:2022-10-24 16:24:43浏览次数:45  
标签:20 dep 外键 约束 -- null id

外键约束: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'))

标签:20,dep,外键,约束,--,null,id
From: https://www.cnblogs.com/shenziyi/p/16821790.html

相关文章

  • 约束-主键约束-自动增长
    自动增长1、概念:如果某一列是数值类型的,使用auto_increment可以来完成值得自动增长2、在创建表时,添加主键约束,并且完成主键自增长createtablestu(--给id......
  • 约束-概述、非空约束
    约束-概述概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性分类:1、主键约束:primarykey2、非空约束:notnull3、唯一约束:unique4、外键约束:foreignkey......
  • 骨骼跟随路径:IK样条线约束
    骨骼跟随路径: 创建没有IK链的骨骼结构。选择解算器开始位置的骨骼或对象。选择“动画”菜单>“IK解算器”>“样条线IK解算器”。在视口中,将光标移动......
  • 刚体模拟1-无约束刚体动力学 Rigid Body Simulation I—Unconstrained Rigid Body Dyn
    介绍这部分课程笔记涉及刚体动力学问题。为了帮助您开始模拟刚体运动,我们提供了实现这些笔记中讨论的大多数概念的代码片段。这部分课程笔记分为两部分。第一部分涵盖了......
  • 数据库(六)约束
    sql约束概念对表中的数据进行进一步的限制保证数据的正确性、有效性、完整性违反约束的不正确数据无法插入到表中常见约束主键:PRIMARYKEY非空:NOTNULL......
  • POJ 1201 Intervals 差分约束
    ​​http://poj.org/problem?id=1201​​TLE了很久,因为用了cin.....思路和其他差分约束差不多,​​http://www.cppblog.com/menjitianya/archive/2015/11/19/212292.html​​......
  • MySQL约束课堂笔记
    今日内容1.DQL:查询语句 1.排序查询 2.聚合函数 3.分组查询 4.分页查询2.约束3.多表之间的关系4.范式5.数据库的备份和还原DQL:查询语句1.排序查询......
  • Revit生成墙,顶部约束问题
    在结构样板项目中,生成的墙会自带顶部约束在​​Revit生成墙的坑​​这篇文章里,是墙的一个坑:底部约束。而本文要说的是另一个坑:顶部约束。这样,同样在建筑样板中生成墙的代码,......
  • 约束_主键约束_自动增长与约束_外键约束
     约束_主键约束_自动增长注解约束_自动增长1.概念:如果某一列是数值类型的,使用AUTO_INCREMENT 可以来w完成值得z自动增长2.#在......
  • 【教程】解决报错“无法解析依赖项。"EntityFramework 6.4.4" 与 ' EntityFramework.z
    添加包含视图的控制器执行以上添加“包含视图的MVC5控制器(使用EntityFramework)时报错解决方案在解决方案资源管理器中找到packages.config注释掉EntityFramewo......