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)); --課程表外鍵