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
);
建表後添加check限制:
alter table Cj add constraint ck_1 check(Grade>0 and Grade<100);
為外鍵設定了删除級聯和更新級聯,當處理主表時外表受到牽連。即:更新(删除)主表值-》外表相應值也更新(被删除)
注意:
-- 建表時這樣建立外鍵是錯誤的
create table Borrow(
bid varchar(6) primary key,
bkid varchar(6) foreign key(bkid) references Book(bid) --error 錯誤寫法
);
-- 乖乖這樣吧
create table Borrow(
bid varchar(6) primary key,
bkid varchar(6),
constraint Bor_kid_Book_bid foreign key(bkid) references Book(bid)
);
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修改限制