首页 > 数据库 >SQL中的外键

SQL中的外键

时间:2022-10-31 14:32:23浏览次数:38  
标签:INSERT INTO 外键 VALUES emp SQL NULL


外键

概念:

     外键与主键相对,作用就是通过主外键的之间关系使对张表中的数据更好的关联。

外键特点:

     从表外键的值是对主表主键的引用。

     从表外键类型,必须与主表主键类型一致。

作用:外键可以保证数据的完整性和一致性

格式:(2种)

[constraint 外键约束关系的名称] foreign key 从表(外键字段名称) references 主表(主键字段名称)
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);

egg:

数据:

#部门表:
CREATE TABLE dept(
id INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(20) UNIQUE NOT NULL,
dcode INT UNIQUE NOT NULL);
#员工表:
CREATE TABLE emp(
id INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20) NOT NULL,
ecode INT UNIQUE NOT NULL,
did INT,
CONSTRAINT dept_emp FOREIGN KEY emp(did) REFERENCES dept(id));

插入数据:

#插入数据:
INSERT INTO dept VALUES(NULL,'技术部',100);
INSERT INTO dept VALUES(NULL,'财务部',200);
INSERT INTO dept VALUES(NULL,'人事部',300);
INSERT INTO emp VALUES(NULL,'张三',123,1);
INSERT INTO emp VALUES(NULL,'李四',124,2);
INSERT INTO emp VALUES(NULL,'王五',125,1);
INSERT INTO emp VALUES(NULL,'田七',126,1);

抛出异常:

问题:DELETE FROM dept WHERE id=1; 

出错原因:从表有员工关联部门中id为1的部门INSERT INTO emp VALUES(NULL,'haha',127,5);出错原因:主表中没有主键id为5的部门

标签:INSERT,INTO,外键,VALUES,emp,SQL,NULL
From: https://blog.51cto.com/u_12277263/5809653

相关文章

  • 安装mysql数据库报 the error code is2503
    解决方法:第一种:运行cmd窗口(管理员身份)输入命令:msiexec/package "安装路径"第二种:在导航条这个位置,右键。选择启动任务管理器     2.操作如下流程就ok了.  ......
  • SQL查询(单表查询)
     目录​​目标​​​​前期准备:​​​​基础数据:​​​​简单查询:(这是直接条件直接复制在自己的编辑器里,自己试着练习)​​​​条件查询:​​​​排序查询:​​​​聚合查询:(......
  • SQL Server--with (nolock)的使用
    With(nolock)可以提高sql的查询性能,因为他不需要考虑所查询表的transaction lock,也正因为如此,可能会造成dirty read,因为trans中已经修改而未提交的数据会被查询出来,所以......
  • mysql5.7分组后没有取第一条的问题
    解决方案  来源:https://blog.csdn.net/weixin_43185775/article/details/125973529......
  • MySQL(狂神)
    1、初识MySQLJavaEE:企业级Java开发Web前端(页面:展示,数据!)后台(连接点:连接数据库JDBC,连接前端(控制,控制视图跳转,和给前端传递数据))数据库(存数据,txt,excel,world)......
  • Windows修改mysql5.7数据库存储位置
    文章目录​​一、默认位置​​​​二、修改位置​​​​第一步:找到查找的位置​​​​第二步:复制Data到你想要的位置顺便复制下路径​​​​第三步:修改my.ini​​​​三、重......
  • Spark SQL读取parquet文件
        Parquet是一种流行的列式存储格式,可以高效地存储具有嵌套字段的记录,还可以针对相同类型的列进行压缩。介绍:使用:......
  • SQL查询(提高版--1)
    表名和字段准备工作:表设计:   –1.学生表    Student(s_id,s_name,s_birth,s_sex)–学生编号,学生姓名,出生年月,学生性别    –2.课程表    Cour......
  • idea技巧之sql反向定位数据库表,以及智能提示
    文章目录​​一、首先没有提示之前,背景是这个颜色,且写sql没有提示​​​​二、首先需要设置数据库,我这里是mysql​​​​第二步:连接数据库​​​​正常使用背景变为绿色......
  • 赏金猎人笔记-手动sqli
      声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。本文选......