Oracle之外鍵(Foreign Key)用法詳解(一),oracleforeign

來源:互聯網
上載者:User

Oracle之外鍵(Foreign Key)用法詳解(一),oracleforeign

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


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

如果您們在嘗試的過程中遇到什麼問題或者My Code有錯誤的地方,請給予指正,非常感謝!

連絡方式:david.louis.tian@outlook.com

著作權@:轉載請標明出處!
--------------------------------------------------------------------------------------------------------------------


oracle中foreign key與w3school中的不一樣?

Oracle裡面不用寫foreign key。

或者先建立表,然後使用alter table來添加主鍵。
alter table Orders add constraint fk_1 foreign key(Id_P) REFERENCES Persons(Id_P);
 
oracle 中foreign key約束可以加在行層級上

外鍵約束有行級和表級兩種。
行級:單列外鍵放在行級上定義。
表級:複合列外鍵放在表級上定義。
例:
Create Table T_xsml ( --學生表
xsbh char(8) Primary Key,
xsxm varchar2(8) Not null,
xsxb char(1));
Create Table T_kcml ( --課程表
zybm char(3), --專業編碼
zymc varchar(20),
kcbm char (4),
primary key (zybm,kcbm));
Create Table T_xscjb ( --成績表
xsbh char(8) References T_sxml, --學生表外鍵
zybm char(3),
kcbm char(4),
pscj varchar2(6),
kscj varchar2(6),
Foreign Key (zybm,kcbm) References T_kcml(zybm,kcbm)); --課程表外鍵
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.