數據庫 完整性約束定義

1.check約束 範圍

-- 建表時定義性別取值爲“男或女” 默認爲“男”
-- 年齡在14到65之間(14,65)

-- in (值1,值2,值3...值n)  屬於值1到值n其中之一(詳見聚集函數)

create table Student(
    Sno Char(7) primary key,--學號
    Sname Char(10) not null,--學生姓名
    Ssex Char(2) check(Ssex in('男','女')) default '男'not null,--性別
    Sage Smallint check(Sage>14 and Sage<65)--年齡
); 

 

2.外碼違約處理方式爲刪除級聯或更新級聯

-- 成績表Sno(學號)關聯學生表Sno    
-- 成績表Cno(課程號)關聯課程表Cno
-- 設置兩個外鍵違約處理方式爲刪除級聯和更新級聯

create table Cj(
    Sno Char(7),--學號
    Cno Char(1),--課程號
    Grade Decimal(4,1) check(Grade>0 and Grade<100),--成績
    primary key(Sno,Cno),
    foreign key(Sno) references Student(Sno) on delete cascade on update cascade,
    foreign key(Cno) references Course(Cno) on delete cascade on update cascade

);

爲外鍵設置了刪除級聯和更新級聯,當處理主表時外表受到牽連。即:更新(刪除)主表值-》外表相應值也更新(被刪除)  

 

3.添加,刪除,修改約束

3.1添加約束

alter table 表名 add constraint 約束名 約束表達式
alter table Course add constraint CK_Course_Credit  check(Credit in (1,2,3,4));

 

3.2刪除約束

alter table 表名 drop 約束名
alter table Course drop CK__Course__Credit__164452B1;

 

3.3修改約束

先刪除 再添加

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章