Oracle外键(Foreign Key)使用详细的说明(一)

1.目标

演示如何Oracle使用外键数据库

2.什么是外键?

1)在Oracle数据库中,外键是用来实现參照完整性的方法之中的一个。打个形象的比喻。外键是指定义外键的表的列的值必须在还有一个表中出现。

2)被參照的表称之为父表(parent table),创建外键的表称之为子表(child table)。子表中的外键关联了父表中的主键。

3)外键能够在创建表时定义或者通过ALTER TABLE语句创建。

3.创建表时定义外键

语法:

CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
... CONSTRAINT fk_column FOREIGN KEY (column1,column2,... column_n) REFERENCES parent_table (column1,column2,...column_n)
);

演示样例1:基于单列的外键

create table tb_supplier
(
supplier_id number not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT pk_supplier PRIMARY KEY (supplier_id)
); create table tb_products
(
product_id number not null,
product_name varchar2(100),
supplier_id number not null,
constraint fk_products_supplier foreign key (supplier_id) references tb_supplier(supplier_id)
);

演示样例2:基于多列的外键

drop table TB_PRODUCTS;
drop table TB_SUPPLIER; create table tb_supplier
(
supplier_id number not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT pk_supplier PRIMARY KEY (supplier_id,supplier_name)
); create table tb_products
(
product_id number not null,
product_name varchar2(100),
supplier_name varchar2(50),
supplier_id number not null,
constraint fk_products_supplier foreign key (supplier_id,supplier_name) references tb_supplier(supplier_id,supplier_name)
);

4.使用ALTER TABLE命令创建外键

语法:

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY (column1, column2,...column_n)
REFERENCES parent_table (column1,column2,...column_n);

演示样例:

drop table TB_PRODUCTS;
drop table TB_SUPPLIER; create table tb_supplier
(
supplier_id number not null,
supplier_name varchar2(50) not null,
contact_name varchar2(50),
CONSTRAINT pk_supplier PRIMARY KEY (supplier_id,supplier_name)
); create table tb_products
(
product_id number not null,
product_name varchar2(100),
supplier_name varchar2(50),
supplier_id number not null
); --使用alter table创建外键
alter table tb_products
add constraint fk_products_supplier
foreign key (supplier_id,supplier_name)
references tb_supplier(supplier_id,supplier_name);
-------------------------------------------------------------------------------------------------------------------

假设您们在尝试的过程中遇到什么问题或者我的代码有错误的地方。请给予指正,很感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!

--------------------------------------------------------------------------------------------------------------------

版权声明:本文博主原创文章,博客,未经同意不得转载。

Oracle外键(Foreign Key)使用详细的说明(一)的更多相关文章

  1. 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)

    1. 数据库有六大约束 主键(primary key) 外键(foreign key):被参照的键必须有唯一约束或是主键 非空(not null) 默认(default) 检查(check):orac ...

  2. Oracle之外键(Foreign Key)使用方法具体解释(二)- 级联删除(DELETE CASCADE)

    Oracle外键(Foreign Key)之级联删除(DELETE CASCADE) 目标 演示样例解说怎样在Oracle外键中使用级联删除 什么是级联删除(DELETE CASCADE)? 级联删除 ...

  3. MYSQL外键(Foreign Key)的使用

    在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束.外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持): ...

  4. MySQL建立外键(Foreign Key)

    如果在最初建立表的时候就建立外键这样一般不会有什么问题,顺便说一下建立外键的时候,需要注意的地方. cascade方式在父表上update/delete记录时,同步update/delete掉子表的匹 ...

  5. 组合外键(FOREIGN KEY)

    一张表,它的外键即是参考另一张表的主键,但这些关联键是组合键,由2列或多列组成. 你可以先看看这篇<多列组合为主键(PRIMARY KEY)>https://www.cnblogs.com ...

  6. Oracle主键(Primary Key)使用详细的说明

    Oracle/PLSQL: 主键(Primary Key)说明 1 目标 通过演示样例解说怎样创建.删除.禁用和开启主键. 2 前言之-什么是主键 在Oracle中,主键指能唯一标识一条记录的单个数据 ...

  7. 外键(foreign key)的使用及其优缺点

    如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键.由此可见,外键表示了两个关系之间的相关联系.以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表. ...

  8. Oracle外键不加索引会引起死锁问题

    转载链接:http://www.jb51.net/article/50161.htm 这篇文章主要介绍了Oracle外键不加索引引起死锁的情况及解决,需要的朋友可以参考下 --创建一个表,此表作为子表 ...

  9. mysql 约束条件 外键 forigen key 介绍

    外键 forigen key作用 :建立表之间的关系 什么是外键 员工信息表有这些字段:id号  姓名 性别 员工所在部门名 部门描述信息 公司有3个部门,但是有1个亿的员工,那意味着 员工所对应的部 ...

随机推荐

  1. JAVA中IO和NIO的详解分析,内容来自网络和自己总结

    用一个例子来阐释: 一辆客车上有10个乘客,他们的目的地各不相同,当没有售票员的时候,司机就需要不断的询问每一站是否有乘客需要下车,需要则停下,不需要则继续开车,这种就是阻塞的方式. 当有售票员的时候 ...

  2. tmd123.com

    赞!完胜百度的搜索!比baidu.com好多了! 搜索用!非常像!比baidu.com好多了! mark一下 发现有人录制了101集swift视频教程好像持续更新中......

  3. 大话项目管理工具之Confluence篇

    前言 前面的两篇文章,讲的都是代码层次上的项目管理工具.这篇文章打算介绍一下关于知识管理的工具,当然,它也属于项目管理中的一部分.说到知识管理,你想到了什么呢?织网?找节点?不错,这是个人的知识管理. ...

  4. hibernate.cfg.xml文件的配置模板和不同数据库的配置參数

    (1)hibernate.cfg.xml文件的配置模板 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

  5. IE缓存的BUG 和其他浏览器的缓存问题

    原文:IE缓存的BUG 和其他浏览器的缓存问题 1 .IE浏览器在异步请求的时候 为了偷懒  第二次请求的时候不会给后台请求相应,这样我们就无法从后台拿值,  这样的话 ,我们可以画个妆,蒙骗IE我们 ...

  6. java 显示目录下全部文件

    package gao.org; import java.awt.HeadlessException; import java.io.File; import javax.swing.JFileCho ...

  7. Android---OpenGL ES之添加动作

    本文译自:http://developer.android.com/training/graphics/opengl/motion.html 在屏幕上绘制对象是OpenGL的最基本功能,你可以使用其他 ...

  8. 【夯实基础】Spring在ssh中的作用

    尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx 写的真不错. 在SSH框假中spring充当了管理容器的角色.我们 ...

  9. 阿录帮帮忙—spring mvc 的hello world

    一:web.xml配置 <!-- Spring MVC配置 --> <servlet> <servlet-name>Spring MVC Dispatcher Se ...

  10. Urxvt - awesome

    Urxvt - awesome Urxvt From awesome Jump to: navigation, search rxvt-unicode (urxvt for short) is a c ...