完整性约束实验
实验目的:熟悉通迷Q射数据库进行操作完整性控制,包括三类完涮制短语、constrain
子句°
1. 实体完整性
定义表的主码
关系模型的实体完整性reate table中用primary keyt义。
定义主码的方法为定义歹U级约束条件和定义为表级约束条件两种。
⑴定义Student并将其中的noli性定义为主码。
Create table student(
Sno char(7) primary key,
Sname char(8) not null,
Ssex char(2),
Sage smallint,
Sdept char(20));
或者:
Create table student(
Sno char(7),
Sname char(8) not null,
Ssex char(2),
Sage smallint,
Sdept char(20),
Primary key(sno));
⑵定义bourse并将其中的no届性定义为主码。
Create table course(
cno char(7) primary key,
cname char(8) not null);
2. 参照完整性
关系模型的参照完整性^rfeate table中用foreign key语句来定义的,并references
来指明外码参照的是哪些表的主码。
定义衣c,其床nc#照studen饮的主5%nq cn叠照course勺主S^nQ
Create table sc(
Sno char(7) not null,
Cno char(7) not null,
Grade smallint,
Primary key(sno,cno),
Foreign key(sno) references student(sno),
Foreign key(cno) references course(cno))
3. 用户自定义完整性
用户定义的届性上的约束条件。
⑴ 列值非空。
在定S表时,sno cn节日graded性都不允许取空值。
在不特别声明的情况下,非码的届性的值时允许取空值的。
Create table sc(
Sno char(7) not null,
Cno char(7) not null,
Grade smallint not null);
⑵歹0值唯一。
建立部Fept要求部门名称name值唯一,部门编deptnoH性为主码。
Create table dept(
Deptno numeric(7) primary key,
Dname varchar(9) unique,
Location varchar(10));
⑶Chec短语指定歹0值应该满足的表student届性sseX勺值只允许取男'或者“女”;
定义蜃C届'代rade勺值定义知-10叫问。
Create table student(
Sno char(7) primary key,
Sname char(8) not null,
Ssex char⑵ check(ssex in(男','女')),
Sage smallint,
Sdept char(20));
Create table sc(
Sno char(7) not null,
Cno char(7) not null,
Grade smallint check(drade>0 and grade<100),
Primary key(sno,cno),
Foreign key(sno) references student(sno),
Foreign key(cno) references course(cno))
(4)用户定义的元组上的约束条件。
Chec短语不光能够定义届性列上的约束条件,还允许用户定义元组级的约束条件。
定义衣tudent要求当学生性别为男时,其名字加就i头。
Create table student(
Sno char(7) primary key,
Sname char(8) not null,
Ssex char(2),
Sage smallint,
Sdept char(20),
Check(sseX=女'or sname not like 'Ms.%));
4. constraint完整性约束命名子句
在定义表时利用约束命名子句对完整性约束条件命名,能够灵活的增加或删除一个完整性约束条件。
⑴定义Student要求学号在0000-99999问,命名不能去空他龄小犬Q性别只能是男” 或者“女”。
要求全部用约束命名子句实现。
Create table student(
Sno numeric(5)
Constraint cl check(sno between 90000 and 99999),
Sname varchar(20)
Constraint c2 not null,
Sage numeric(3)
Constraint c3 check(sage<30),
Ssex varchar(2)
Constraint c4 check(ssex in('男’,’女')),
constraint studentkey primary key(sno));
在表student±共定义15个约束条件,包括主码约束曜2,c3,c4四个列级约束。