表中的外键就是对于该属性所对应的域的限制,对于插入到表中的该属性的数据进行约束。并且该外键映射于所对应的另一张表的能唯一标识每一条数据的主键,根据参照完整性规则,外键可以取空值或者取对应主键的数值。外键的作用可以认为使两张表产生一定的关系。下面介绍如何设置外键约束

1.创建表时就设置外键约束。

为了插入数据不规范报错能够更快的找到错误的地方,外键一般都会设置一个别名来表示外键约束。外键所引用的另一个表的属性要是主键。

我们可以直接在创建表时,声明属性的右边像写主键,unique, not null 约束一样设置外键约束。 这个时候就不用写入foreign key来表示该约束是外键约束。

格式为

create table xxx(

        属性名 属性类型 constraint 外键名 references 主键表 (主键名)

);

下面我们来演示一下,有一个student表,里面有pid是主键表示学生的学号,pname是学生名字。另一个表是s_course表用来表示学生所选的课程,其中pid表示学生的学号对应于student表中的pid 就是该表的外键,另一个cname就是表示课程名。


--学生表
create table student(pid varchar2(10) primary key,pname varchar2(10));
--学生选择课程
create table s_course(pid varchar(10) constraint FK_pid references student(pid),cname varchar(20)
);

我们对其两个表插入数据

insert into student values('A001','我');
insert into s_course value ('A001','数据库概述');

发现上述的sql语句是可以执行成功的。

但当我们插入课程表时,插入的学号不是空且学生表中学号没有的值时,就会报错。

insert into s_course values('A002','软件工程');

  另一个在表中设置约束的方法就是等表中所有属性全部声明完后,将外键约束写在表中的最后面,这个时候就需要指明foreign key 了。

格式为:

create table xxx(

.....    ,

constraint 外键名 foreign key (外键属性) references 主键表(主键名)

);

也来演示一下效果,像上述的student表和s_course表我们对其进行修改。

drop table student;
drop table s_course;
--学生表
create table student(pid varchar2(10) primary key,pname varchar2(10));--学生选择课程
create table s_course(pid varchar(10) ,cname varchar(20),constraint FK_pid foreign key (pid) references student(pid)
);

插入数据也没有问题。

insert into student values('A001','我');
insert into s_course values ('A001','数据库概述');

2.在表外设置外键约束。

当我们创建了表之后,发现需要有一个外键约束,在不重新建表的前提下我们就可以通过alter语句来增加该属性的约束条件。外键也是约束。

格式为:

alter table 外键表名 add constraint 外键名 foreign key (外键表外键属性名) references 主键表名(主键名)

下面进行演示一下效果,该例子也是用到了上述的student表和s_course表。

drop table student;
drop table s_course;
--学生表
create table student(pid varchar2(10) primary key,pname varchar2(10));
--学生选择课程
create table s_course(pid varchar(10),cname varchar(20)
);alter table s_course add constraint FK_pid foreign key (pid ) references student(pid);

插入数据测试也是可以通过的。

insert into student values('A001','我');
insert into s_course values ('A001','数据库概述');

Oracle 如何设置外键约束相关推荐

  1. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

    问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...

  2. mysql创建表时设置外键_mysql创建表时设置外键约束的方法

    mysql创建表时设置外键约束的方法 发布时间:2020-06-17 15:54:11 来源:亿速云 阅读:312 作者:元一 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中, ...

  3. oracle查看外键约束哪个字段,oracle 查看主外键约束(转)

    oracle 查看主外键约束(转) 上一篇 / 下一篇  2011-07-05 17:37:49 / 个人分类:数据库 select a.constraint_name, a.table_name, ...

  4. 数据库建表时一定要设置外键约束关系吗?

    数据库建表时一定要设置外键约束关系吗? 我们都知道每张数据表都有一个能够确定每行数据唯一性的字段,也就是主键.而在关系数据库中,常常有两表存在一定关系的情况.即一张表的主键跟另一张的外键存在对应关系, ...

  5. mysql外键约束脚本_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  6. php设置外键约束,关于php:禁用教义外键约束

    我在其中一个模型上有关系: /** * @ORM\ManyToOne(targetEntity="Page", cascade="persist") * @OR ...

  7. 如何在MySQL中设置外键约束

    MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:     一个是让数据库自己通过外键来保证数据的完整性和一致性     一个就是能够增加ER图的可读性     有些人认为外键的建 ...

  8. 在mysql中如何添加外键约束_如何在MySQL中设置外键约束

    (1) 外键的使用: 外键的作用,主要有两个: 一个是让数据库自己通过外键来保证数据的完整性和一致性 一个就是能够增加ER图的可读性 有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库 ...

  9. mysql建表时建外键约束_数据库建表时一定要设置外键约束关系吗?

    如果被引用的表需要做分库分表,那么无法建立外键约束. 使用外键会降低数据库性能,这个说法并不细致.需要详细分析. 建立外键,那么一般引用字段上需要建立索引.如果不建立索引,被引用的表上删除数据,会全表 ...

最新文章

  1. check_traffic.sh监控格式为Hex-STRING的解决办法
  2. 抢鲜体验:十一大行业 demo 全新上线!
  3. Oracle 12c   归档模式更改
  4. ajax局部刷新_web前端入门到实战:实现html页面自动刷新
  5. java 和javafx_Java,JavaFX的流利设计风格文本字段和密码字段
  6. android商店账号密码错误,安卓:我失去了我的安卓密钥商店,我该怎么办?
  7. c语言linux内核开发,Linux 内核源代码的几个C语言技巧
  8. Struts2的属性驱动与模型驱动的区别
  9. 2017蓝桥杯C++B:等差素数列(枚举优化)
  10. grpc python stream_grpc| python 实战 grpc【h】
  11. bzoj 1800 [Ahoi2009]fly 飞行棋——模拟
  12. [.Net] 一句话Linq(递归查询)
  13. 12000字解读元气森林:套利与降维的游戏
  14. 线性回归以及非线性回归
  15. linux在双系统中消失了,win和linux双系统下,重装win系统导致linux系统消失的解决办法...
  16. WPF之路——绘制几何图形
  17. 计算机优秀教案设计,《数据计算》优秀教案设计
  18. web前端开发这门技术的由来,入门必读
  19. 怎么把英语视频转为音频 怎么把MP4转换成mp3
  20. dmidecode命令详解

热门文章

  1. 什么是shuffle?shuffle的原理及过程
  2. quart定时任务从数据库获取定时时间
  3. 光照与渲染(九)- 光源类型
  4. Spring 面试题(二)
  5. 对轻量级分组密码算法Midori的详解
  6. 《淘宝网开店 进货 运营 管理 客服 实战200招》——2.5 网上开店货源大揭密...
  7. elasticsearch unassigned
  8. 霍夫曼树(Huffman Tree)
  9. 机器视觉(三):摄像机标定技术
  10. 群智能优化算法之鲸鱼算法 Whale Optimization Algorithm (WOA) matlab版代码