外键(foreign key)

一个表中的foreign key指向另一个表中的unique key(唯一约束的键)

对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表(子表)。

外键约束

foreign key约束用于预防破坏表之间连接的行为,也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。【主要目的是确保表的数据的完整性,唯一性】

主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或者多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

定义外键时,需要遵守下列规则:

  • 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
  • 必须为主表定义主键。
  • 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。
  • 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。
  • 外键中列的数目必须和主表的主键中列的数目相同。
  • 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

上段截取自http://c.biancheng.net/view/2441.html。

实例:

题目描述

在audit表上创建外键约束,其emp_no对应employees_test表的主键id。(以下2个表已经创建了)

1

2

3

4

5

6

7

8

9

10

11

12

CREATE TABLE employees_test(

ID INT PRIMARY KEY NOT NULL,

NAME TEXT NOT NULL,

AGE INT NOT NULL,

ADDRESS CHAR(50),

SALARY REAL

);

CREATE TABLE audit(

EMP_no INT NOT NULL,

create_date datetime NOT NULL

);

方法一:创建表时添加外键约束。

drop table audit;
create table audit
(emp_no int not null,create_date datetime not null,foreign key(emp_no)references employees_test(id)
);

方法二:在修改表时添加外键约束,采用alter语句。

语句结构:

alter table table_nm add constraint constraint_name
foreign key table_a(col) references table_b(col);
alter table audit
add constraint
fk_emp_no
foreign key
audit(emp_no)
references
employees_test(id);

删除外键约束语法格式:

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;

SQL编程:外键约束相关推荐

  1. sql的外键约束和主键约束_SQL主键约束用示例解释

    sql的外键约束和主键约束 A primary key is a column or a set of columns that uniquely identifies each row in a t ...

  2. sql的外键约束和主键约束_SQL约束

    sql的外键约束和主键约束 SQL | 约束条件 (SQL | Constraints) Constraints are the guidelines implemented on the infor ...

  3. SQL Server外键约束

    A. SQL Server外键约束 SQL Server外键约束简介 外键是一个表中的一列或一组列,它唯一地标识另一个表的行. vendor_groups 和v endor 表,它们的结构如下: 每个 ...

  4. Sql 多重外键约束

     多重外键约束这个名称可能并不准确,它是多个外键约束情况的一个特例,它指的是外键表有存在两个及以上外键关联到同一个主键表,例如一个部门,有正副两个管理者 首先看看不含多重外键的多个外键约束的一般情 ...

  5. mysql和sql定义外键约束_SQL外键约束的含义及创建

    建立外键约束可以对sql语句的增删改有约束作用. 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键 ...

  6. SqlServer:sql添加外键约束

    --新闻分类表 if exists(select * from sysobjects where name='NewsCategory') drop table NewsCategory go cre ...

  7. 数据sql设置外键约束

    概念 一张表的一个字段受限于另外一张表的一个字段对应的值.这里涉及到两张表:被引用的表叫主表(父表),另外一张叫从表(子表). 它们的关系:主从表关系(父子表关系) 子表:定义了外键的表 外键的取值要 ...

  8. SQL server 外键约束操作

    创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的. 建外键的前提是此外键必须是另外一个表的主键.建外键的步骤: 第一步.打开要建外键的表设计器,右 ...

  9. SQL Server的主键与外键约束

    SQL Server的主键与外键约束SQL Server有许多的重要知识,开始也说过许多的SQL知识了.SQL Server中的约束也是一个重要性的知识,下面我来说说关于SQL Server约束的知识 ...

  10. Oracle外键约束如何同时更新,SQL与ORACLE的外键约束-级联更新和删除

    /* SQL与ORACLE的外键约束--级联删除 最近软件系统中要删除一条记录,就要关联到同时删除好多张表,他们之间还存在着约束关系.所以考虑到在创建表时加上约束关系,具体如下: SQL的外键约束可以 ...

最新文章

  1. 深度学习项目代码阅读建议
  2. 智能合约如何可信的与外部世界交互
  3. nginx 日志获取不到远程访问ip问题解决
  4. 平衡二叉树——Balance Binary Sort Tree 设计与实现
  5. vscode 设置整体界面字体的大小
  6. 即时网络通讯系统的设计与实现(QQ)
  7. Android仿微信朋友圈10s视频编辑
  8. 帝国cms !--list.var1--,!--list.var2--的终极用法
  9. Telemetry 基础
  10. 实验二 matlab矩阵分析与处理
  11. cognos 是什么?
  12. ASCII:字符集与字符编码的起源
  13. C++作业 设计一个程序实现油桶面积与体积的计算(构造函数与析构函数)
  14. python第二周基本图形绘制
  15. 大数据主要就业方向有哪些?
  16. 一物一码(6): 一物一码之【开展一物一码营销活动基本流程2,设计开发部署,生产包装,活动上线】
  17. 永远的忧郁王子,永远的巴乔
  18. 爱心点击特效php代码,网页点击特效 - 鼠标点击浮现爱心特效
  19. Restorator 2005 v3.51 b1457
  20. Hadoop分布式系统集成架构

热门文章

  1. 广告投放市场推广渠道大全与效果分析比较
  2. python pandas excel处理_python使用pandas处理excel的方法
  3. 开源 cocos2dx 五彩连珠.
  4. Android Studio的反编译工具使用。
  5. Ubuntu20.04安装C++版Opencv4
  6. matlab阵列方向性系数,阵列天线方向图的MATLAB实现.pdf
  7. 可以搜python题答案的app-可以搜Python题答案的APP有哪些?
  8. js:获取年龄的函数
  9. 如何正确选择飞秒激光手术医…
  10. 信息学奥赛一本通(C++版)在线评测系统 基础(一) 第一章 参考答案(AC代码)