資料庫物件的約束

2021-09-11 23:39:55 字數 2377 閱讀 9643

常用的約束:

1、非空約束      not  null

2、唯一性約束(可以為空,除空之外的其他資料必須唯一)   unique

3、主鍵約束(唯一+非空)  primary key

4、外來鍵約束     foreign   key

5、檢查約束    check

約束可以在建立表時新增,也可以表建立完成後新增。

一、主鍵約束

主關鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關鍵字,且image 和text 型別的列不能被指定為主關鍵字,也不允許指定主關鍵字列有null 屬性。主關鍵字最多由16個列組成。

建立表時新增主鍵:

sql> create table cla

2 (class number(2) constraint pk_claclass primary key,

3 num number(2));

新增乙個主鍵約束:

sql> alter table stu

2  add constraint pk_stuname primary key(name);

二、外來鍵約束

外關鍵字約束定義了表之間的關係。當乙個表中的乙個列或多個列的組合和其它表中的主關鍵字定義相同時,就可以將這些列或列的組合定義為外關鍵字,並設定它適合哪個表中哪些列相關聯。

①、外關鍵字約束的作用還體現在,當刪除/更新主關鍵字列的某值時,如果與之相關聯的表中的列有刪除/更新的主關鍵字列值相同的值時,系統會拒絕刪除/更新。

sql> delete from cla where class=1;

delete from cla where class=1

*error at line 1:

ora-02292: integrity constraint (scott.fk_stu_cla_class) violated - child

record found

②、外關鍵字約束的作用還體現在,當向含有外關鍵字的表插入資料時,如果與之相關聯的表的列中無與插入的外關鍵字列值相同的值時,系統會拒絕插入資料。

sql> insert into stu values('a',1);

insert into stu values('a',1)

*error at line 1:

ora-02291: integrity constraint (scott.fk_stu_cla_class) violated - parent key

not found

③、與主關鍵字相同,不能使用乙個定義為 text 或image 資料型別的列建立外關鍵字。外關鍵字最多由16 個列組成。

建立乙個外來鍵:

sql> alter table stu 

2 add constraint fk_stu_cla_class foreign key (class) references cla (class);

注:刪除時級聯(on delete cascade)和置空(on delete null)

刪除時級聯,這樣再刪除主關鍵表的某行時,外關鍵表的對應行也會被刪除

sql> alter table stu

2 add constraint fk_stu_cla_classes foreign key (class) references cla(class) on delete cascade;

table altered.

sql> delete from cla where class=1;

1 row deleted.

sql> select * from stu;

name class

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

b 2

c 3

刪除時置空,這樣再刪除主關鍵表的某行時,外關鍵表的對應行置空

sql> alter table stu

2 add constraint fk_stu_cla_class2 foreign key (class) references cla(class) on delete set null;

sql> delete from cla where class=2;

1 row deleted.

sql> select * from stu;

name class

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

bc 3

資料庫的約束

資料庫的約束條件 新增約束 alter table 表名 add constraint 約束名 約束型別 具體說明 學生編號,主鍵約束 add constraint pk stuno primary key stuno 學生身份證號,唯一約束 add constraint uq stuid uniq...

資料庫的約束

什麼是資料庫的約束?我認為資料庫的約束就是限制資料庫表中的約束條件。約束一共分為5種型別,分別為 sql server中有五種約束型別,分別是check約束 default約束 primary key約束 foreign key約束和unique約束。用於限制輸入一列或者多列的值的範圍,通過邏輯表示...

資料庫的約束

新增相關約束 建立主鍵約束 if exists select from sysobjects where name pk studentid alter table students drop constraint pk studentid alter table students add cons...