標籤:create 資料完整性 references primary
資料完整性分類
1. 值域完整性
值域完整性又稱為列完整性,指定一個資料集對某一個列是否有效和確定是否允許空值。
2. 實體完整性
實體完整性也可稱為行完整性,要求表中每一行有一個唯一的標識符,即primary key。
3. 參照完整性
又稱之為參考完整性。
主鍵和唯一鍵的主要區別:
(1) 一個資料表只能建立一個主鍵約束,但可以建立若干個唯一鍵。
(2)主鍵欄位值不允許為空白,而唯一鍵可以。
相同點:
兩者均不允許表中的對應欄位存在重複值,在建立主鍵和唯一鍵約束時會自動產生索引。
列級定義:
列級定義指在定義列的同時定義約束。
表級定義:
指在定義完所有列之後定義約束。
建立表時添加主鍵:
sql> create table table_name (field_name char(8) primary key);
建立表時添加外鍵:
sql> create table table_name(field_name char(8) references table_name2(field_name2));
其中 table_name2是要引用的表名,field_name2是table_name2中對應的主鍵,且 field_name 與field_name2資料類型必須完全一樣。
如果在建表時忘記添加約束,則可以用alter table命令為表添加約束。但是要注意,增加NOT NULL時用modify選項,增加primary key、unique、foregin key、check時用add選項。
增加NOT NULL:
sql> alter table table_name modify field_name not null;
增加unique:
sql> alter table table_name add constraint constraint_name unique(field_name);
或者:
sql> alter table table_name add unique(field_name);
增加primary key:
sql> alter table table_name add constraint constraint_name primary key(field_name);
或者:
sql> alter table table_name add primary key(key);
增加foreign key:
sql> alter table table_name add constraint constraint_name foreign key (field_name1) references table_name2(field_name2);
或者:
sql> alter table table_name add foreign key(field_name1) references table_name2(field_name2);
刪除約束:
sql> alter table table_name drop constraint constraint_name;
或者:
sql> alter table table_name drop unique(field_name);sql>alter table table_name drop primary key;
在刪除主鍵約束時,可能產生錯誤,這是因為兩張表存在主從關係,那麼在刪除主鍵約束時,必須加上cascade。
sql> alter table table_name drop primary key cascade;
本文出自 “飛魚技術” 部落格,請務必保留此出處http://flyingfish.blog.51cto.com/9580339/1582961
Oracle 資料完整性(學習筆記)