分享

Oracle 外键创建及使用

 melodyjian 2018-06-08

一 什么是外键

(1)在oracle数据库中,外键是指在表(父表)中定义外键的字段的列的值必须在另一张表(子表)中出现。外键是用来实现参照完整性的方法之一。

(2)被参照的表称为父表,创建外键的表称为子表。子表中的外键关联的是父表中的主键

(3)外键可以在建表的时候定义,也可以通过alter table语句来创建。

二 创建表定义外键

a. 建表的时候定义

  1. CREATE TABLE table_name  
  2. (  
  3.    column1 datatype null/not null,  
  4.    column2 datatype null/not null,  
  5.    ...  
  6.    CONSTRAINT fk_column FOREIGN KEY  (column1,column2,... column_n) REFERENCES parent_table (column1,column2,...column_n)  
  7. );  
(1)创建单列的外键
  1. create table tb_supplier  
  2. (  
  3.   supplier_id number not null,  
  4.   supplier_name varchar2(50) not null,  
  5.   contact_name varchar2(50),  
  6.   CONSTRAINT pk_supplier PRIMARY KEY (supplier_id)  
  7. );  
  8.    
  9. create table tb_products  
  10. (  
  11.   product_id number not null,  
  12.   product_name varchar2(100),  
  13.   supplier_id number not null,  
  14.   constraint fk_products_supplier foreign key (supplier_id) references tb_supplier(supplier_id)  
  15. );  
(2)创建多列的外键
  1. create table tb_supplier  
  2. (  
  3.   supplier_id number not null,  
  4.   supplier_name varchar2(50) not null,  
  5.   contact_name varchar2(50),  
  6.   CONSTRAINT pk_supplier PRIMARY KEY (supplier_id,supplier_name)  
  7. );  
  8.    
  9. create table tb_products  
  10. (  
  11.   product_id number not null,  
  12.   product_name varchar2(100),  
  13.   supplier_name varchar2(50),  
  14.   supplier_id number not null,  
  15.   constraint fk_products_supplier foreign key (supplier_id,supplier_name) references tb_supplier(supplier_id,supplier_name)  
  16. );  
b. 使用alter table命令定义

  1. ALTER TABLE table_name   
  2. ADD CONSTRAINT constraint_name   
  3. FOREIGN KEY (column1, column2,...column_n)   
  4. REFERENCES parent_table (column1,column2,...column_n);  
(1)创建多列的外键
  1. create table tb_supplier  
  2. (  
  3.   supplier_id number not null,  
  4.   supplier_name varchar2(50) not null,  
  5.   contact_name varchar2(50),  
  6.   CONSTRAINT pk_supplier PRIMARY KEY (supplier_id,supplier_name)  
  7. );  
  8.    
  9. create table tb_products  
  10. (  
  11.   product_id number not null,  
  12.   product_name varchar2(100),  
  13.   supplier_name varchar2(50),  
  14.   supplier_id number not null  
  15. );  
  16.    
  17. --使用alter table创建外键  
  18.  alter table tb_products  
  19.  add constraint fk_products_supplier   
  20.  foreign key (supplier_id,supplier_name)   
  21.  references tb_supplier(supplier_id,supplier_name);  
单列不赘述了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多