Oracle/PLSQL: Foreign Keys

转载 2006年06月06日 09:02:00

Oracle/PLSQL: Foreign Keys

What is a foreign key?

A foreign key means that values in one table must also appear in another table.

The referenced table is called the parent table while the table with the foreign key is called the child table. The foreign key in the child table will generally reference a primary key in the parent table.

A foreign key can be defined in either a CREATE TABLE statement or an ALTER TABLE statement.

Using a CREATE TABLE statement

The syntax for creating a foreign key using a CREATE TABLE statement is:

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)
);

For example:

CREATE TABLE supplier

(

supplier_id

numeric(10)

not null,

 

supplier_name

varchar2(50)

not null,

 

contact_name

varchar2(50),

 
 

CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)

);

 

CREATE TABLE products

(

product_id

numeric(10)

not null,

 

supplier_id

numeric(10)

not null,

 

CONSTRAINT fk_supplier

 

  FOREIGN KEY (supplier_id)

 

  REFERENCES supplier(supplier_id)

);

In this example, we've created a primary key on the supplier table called supplier_pk. It consists of only one field - the supplier_id field. Then we've created a foreign key called fk_supplier on the products table that references the supplier table based on the supplier_id field.

We could also create a foreign key with more than one field as in the example below:

CREATE TABLE supplier

(

supplier_id

numeric(10)

not null,

 

supplier_name

varchar2(50)

not null,

 

contact_name

varchar2(50),

 
 

CONSTRAINT supplier_pk PRIMARY KEY (supplier_id, supplier_name)

);

 

CREATE TABLE products

(

product_id

numeric(10)

not null,

 

supplier_id

numeric(10)

not null,

 

supplier_name

varchar2(50)

not null,

 

CONSTRAINT fk_supplier_comp

 

  FOREIGN KEY (supplier_id, supplier_name)

 

  REFERENCES supplier(supplier_id, supplier_name)

);

In this example, our foreign key called fk_foreign_comp references the supplier table based on two fields - the supplier_id and supplier_name fields.

Using an ALTER TABLE statement

The syntax for creating a foreign key in an ALTER TABLE statement is:

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

For example:

ALTER TABLE products
add CONSTRAINT fk_supplier
  FOREIGN KEY (supplier_id)
  REFERENCES supplier(supplier_id);

In this example, we've created a foreign key called fk_supplier that references the supplier table based on the supplier_id field.

We could also create a foreign key with more than one field as in the example below:

ALTER TABLE products
add CONSTRAINT fk_supplier
  FOREIGN KEY (supplier_id, supplier_name)
  REFERENCES supplier(supplier_id, supplier_name);

mysql分区表学习

一:怎样对已有数据的表进行表分区 可以直接alter table进行修改。 如: USE dba; ALTER TABLE t3 PARTITION BY RANGE(id)     ( ...
  • YABIGNSHI
  • YABIGNSHI
  • 2016年08月18日 15:02
  • 772

Oracle之外键(Foreign Key)用法详解(一)

如何在Oracle数据库中使用外键FOREIGN KEY
  • jssg_tzw
  • jssg_tzw
  • 2014年11月06日 20:49
  • 3924

ORACLE PLSQL代码块学习

背景: 本人小小实习生,oracle小白,,刚刚接触oracle的plsql块。记录下来这个学习过程,有错麻烦各位指出。 情景: 通过遍历查询一个表的结果集,得到结果集中每行结果中的其中一...
  • ERex_Wu
  • ERex_Wu
  • 2017年04月22日 14:53
  • 1142

不安装oracle客户端配置使用plsql

在不安装oracle client的前提下, 想要使用plsql。可通过安装oracle instant client 然后配置后即可使用plsql。 地址: http://www.oracle....
  • lxl631
  • lxl631
  • 2016年05月20日 10:24
  • 4978

plsql 连接oracle数据库详细配置

第一次用这种方式连接oracle数据库,自己百度搞了快两个小时才弄好,百度的资源也不靠谱,看了好多都不完整,搞完了报各种错误,各种连不上数据库,自己整理下资料,希望给其他的同行予以借鉴,不能保证每个人...
  • weinichendian
  • weinichendian
  • 2016年06月22日 18:25
  • 43828

PLSQL Developer连接Oracle及PLSQL Developer基本使用,表及语句索引情况

1.安装PLSQL DeveloperOracle数据库和PL/SQL Developer的安装步骤,这里就不做叙述了,百度安装方法的时候有说在安装PL/SQL Developer软件时,不要安装在P...
  • Harry_ZH_Wang
  • Harry_ZH_Wang
  • 2017年02月18日 23:23
  • 1858

Oracle简易客户端和plsql的配置

首先得清楚。连接数据库有2种方式:①种是在本机安装Oracle数据库。①种是安装一个oracle简易客户端。在需要一个可视化的界面。当然,简易客户端跟oracle数据库比较少了一些功能。     像经...
  • zh0lian
  • zh0lian
  • 2017年05月19日 11:49
  • 938

Oracle PLSQL Procedure 如何进行性能调优分析

在Java的性能调优分析中,可以使用 JProfiler 分析JVM运行时的CPU消耗、Memory占用、Thread情况等信息。对于Java代码中调用的Oracle的存储过程、函数它也能输出调用时间...
  • u012284514
  • u012284514
  • 2015年10月22日 11:24
  • 1004

ORACLE安装后配置PLSQL

本人在使用oracle的时候,常常发现plsql连不上oracle的时候。有的本机不能连,有的远程不能连,时常捉摸不透问题到底出在哪儿,一会儿实例名,一会儿服务名,一会儿说缺少监听,一会说解析不了服务...
  • dylwildwolf
  • dylwildwolf
  • 2016年09月27日 21:38
  • 5975

PLSQL developer 连接不上64位Oracle 的解决方法

Windows 64位下装Oracle 11g 64位,PLSQL Developer使用出现以下问题: 1、Database下拉框为空: 2、强制输入用户名、密码及Database,登录弹出: ...
  • kalision
  • kalision
  • 2015年04月20日 15:05
  • 1650
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle/PLSQL: Foreign Keys
举报原因:
原因补充:

(最多只允许输入30个字)