3.据SQL SERVER提供的完整性功能自行设计实验完成完整性实践
SQL SERVER提供的数据库完整性包括域完整性(CHECK,DEFAULT,UNQUE,RULE,用户自定义类型、基本数据类型)、表间完整性(复习实体完整性、参照完整性的定义与验证)、复杂完整性表达(触发器) 1)主键定义例子一个
直接用界面对列右键为主键操作
2)外键定义例子一个
alter table sc add constraint fk_sno foreign key (cno) references cou(cno) 添加foreign key 3)CHECK约束
a)定义学生的年龄在16-30之间。
DATEDIFF() 函数返回两个日期之间的天数b)定义成绩在0-150之间
例:SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate
b)定义成绩在0-150之间
alter table Sc
add constraint ck_grade check( grade between 0 and 150 )
c)定义学号由S开头,其余字符为数字字符,长度为4的
4)分别创建一个用户自定义类型,用于定义STU及COU表的学号与课号(CREATE TYPE。。FROM、CREATE RULE。。AS,SP_BINDRULE,SP_UNBINDRULE等) 学号由S开头,其余字符为数字字符,长度为4的.课号以C开始,其余字符为数字字符,长度为4的
sqlP183
5)使用Unique修改MAJOR表,定义专业名具有唯一性。
5)Default:性别默认为TRUE(代表男性)
6)not null:分别修改major、STU表、COU表,专业名、姓名、课名不可为空
5、存储过程创建与使用
1).创建存储过程P1,查询学生表所有信息;运行之。
create procedure P1 as select *from STU
2)创建存储过程P2,查询某学号学生的所有信息,运行之
create procedure P2 @sno char(4) as select *from STU where SNO=@sno
3)创建存储过程P3,查询某学号学生的姓名及所就读专业,运行之
create procedure P3 @sno char(4) as
select sname,mname from STU,major where STU.MNO=major.MNO and SNO=@sno
4).创建存储过程P4,查询‘C002’课程平均分最高的学生学号与姓名,运行之
CREATE PROCEDURE P4 AS
SELECT STU.SNO,SNAME FROM STU,SC WHERE STU.SNO=SC.SNO AND GRADE=(SELECT MAX(GRADE)FROM SC WHERE CNO='C002')