当某天
雨点轻敲你窗

当风声吹乱你构想
可否抽空想这张旧模样

原创作者:是飘飘呀!
博客地址:https://blog.csdn.net/weixin_44216392

FOREIGN KEY 约束(外键约束)

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。也叫外键约束
先来看两个表,再继续学习外键约束
表tb2

表tb2_fk_test

  • 首先可以看到表tb2_fk_test中的p_id指向的是tb2的p_id列的;
  • “tb2” 表中的 “p_id” 列是 “tb2” 表中的 PRIMARY KEY。
  • “tb2_fk_test” 表中的 “p_id” 列是 “tb2_fk_test” 表中的 FOREIGN KEY。
  • FOREIGN KEY 约束用于预防破坏表之间连接的行为。
  • FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。当我们执行insert into 语句时,在外键列插入非指向tb2的主键列的时候会报错;如下图,在tb2的p_id列是没有值为6的行,执行之后直接哦豁(表示很遗憾);

那么我们现在来看看外键约束是怎么实现的呢?

  • 我们可以在创建表的时候添加外键约束也就是使用create table的时候,举个栗子:
-- MySQL
create table tb2_fk_test(
f_id int not null,
f_Text varchar (255),
p_id int,
primary key (f_id),
foreign key (p_id) references tb2(p_id)
);--SQL Server
create table tb2_fk_test(
f_id int not null, --f_id int not null primary key,这样也可以,不过命名是随机的
f_Text varchar (255),
constraint pk_tb2_fk_testID primary key (f_id),
p_id int foreign key references tb2(p_id)
);

如果需要定义由多个列组成的外键约束,那么可以这么写。

--MySQL / SQL Server / Oracle
create table tb3_fk_test(
f_id int not null,
f_Text varchar (255),
p_id int,
constraint pk_tb3_fk_testID primary key (f_id),
constraint fk_tb3_fk_testID foreign key (p_id) references tb2(p_id)
);

当我们的表已经被创建后,可以直接通过alter…add关键字进行外键约束的设置;

--MySQL / SQL Server / Oracle
alter table tb4_fk_test add constraint fk_tb4 foreign key (f_id) references tb2(p_id)

删除已创建的外键约束则使用alter…drop关键字

--MySQL
alter table tb4_fk_test drop foreign key fk_tb4
--SQL Server / Oracle
alter table tb4_fk_test drop constraint fk_tb4
-- 这两句还是有所区别的呢

SQL(11)_FOREIGN KEY 约束相关推荐

  1. SQL语法之FOREIGN KEY 约束

    SQL学习 学习SQL语法 SQL语法 SQL学习 FOREIGN KEY 约束 SQL FOREIGN KEY Constraint on CREATE TABLE SQL Server / Ora ...

  2. SQL学习之primary key约束

    目录 参考源 SQL primary key 约束 primary key create table 时的 SQL primary key 约束 MySQL / SQL Server / Oracle ...

  3. SQL学习之foreign key约束

    目录 参考源 SQL foreign key 约束 FOREIGN KEY 作用 create table 时的 SQL foreign key 约束 MySQL SQL Server / Oracl ...

  4. SQL FOREIGN KEY 约束

    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY. 让我们通过一个例子来解释外键.请看下面两个表: "Persons" 表: "Orders& ...

  5. SQL Server中的约束:SQL NOT NULL,UNIQUE和SQL PRIMARY KEY

    This article explains the SQL NOT NULL, Unique and SQL Primary Key constraints in SQL Server with ex ...

  6. SQL语法之PRIMARY KEY 约束

    SQL学习 学习SQL语法 SQL语法 SQL学习 SQL PRIMARY KEY 约束 SQL PRIMARY KEY Constraint on CREATE TABLE SQL PRIMARY ...

  7. sql学习-Constraints(约束)(primary key、 foreign key、check、default)

    CONSTRAINTS 约束 介绍 SQL 约束用于规定表中的数据规则. 如果存在违反约束的数据行为,行为会被约束终止. 约束可以在创建表时规定(通过 CREATE TABLE 语句): 或者在表创建 ...

  8. SQL PRIMARY KEY 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

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

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

  10. CHIL-SQL-PRIMARY KEY 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

最新文章

  1. 从纸钱包,带你走进贴心的BCH!
  2. python统计并输出文件的行数_python实用统计文件行数 类似wc命令
  3. 《Excel与VBA开发》一书上市时间
  4. exchange server 2003 安装过程中的一个问题
  5. BZOJ.2707.[SDOI2012]走迷宫(期望 Tarjan 高斯消元)
  6. MATLAB代写要求应该怎么写,matlab/simulink程序代写
  7. mockJs文档(一)
  8. [react] 举例说明useState
  9. 详细描述三个适于瀑布模型的项目_信息系统项目管理师-第二三章:信息系统项目管理基础与立项管理2...
  10. Go 并发编程 — 深入浅出 sync.Pool ,最全的使用姿势,最深刻的原理
  11. Oracle的dbms_jobs 自动计划
  12. 井电双控智能缴费管理系统、水井管理、报警管理、费用管理、实时查询、信息配置、模块配置、智能报表、水表、抄表、井电、电表、用水分析、水电、灌溉用水、绿化用水、农业用水、智慧水电、水利
  13. Web API 处理机制剖析 --- 拨开迷雾看本质
  14. Median of Two Sorted Array leetcode java
  15. android编程入门
  16. DMA控制器8237A
  17. 如何用matlab求解多变量非线性回归,matlab多元非线性回归教程
  18. RN vivo访问相册失败 warning : User cancelled image selection
  19. 什么是 MAC 地址?
  20. android图片做平移动画,Android中用Matrix实现ImageView里的图片平移和缩放动画

热门文章

  1. 一步一步学Silverlight 2系列(30):使用Transform实现更炫的效果(下)
  2. 网络0323和网络2303分类过程的比较
  3. wireshark抓取手机app包
  4. onblur 与onclick 冲突;onblur导致onclick事件丢失
  5. Pipeline快速入门
  6. 请仔细核对自己的信息
  7. python打印星号组成的三角形_Python利用for循环打印星号三角形的案例
  8. ubuntu安装原生迅雷,让下载成为简单
  9. 替换修改windows xp字体,为windows 7微软雅黑
  10. HTML设计网站首页