实验3吴树森SQL

更新时间:2024-06-16 16:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

集美大学数据库系统原理课程实验报告

课程名称:数据库系统原理 指导教师:吴晓晖

实验项目名称:实验三 : 视图、存储过程、

触发器及完整性

班级:软件1214 姓名:吴树森 学号:201221122104

实验成绩:

上机实践日期:14.9.

实验三 视图、存储过程、触发器及完整性

实验目的:掌握视图的创建方法,掌握T-SQL流程控制语句的使用;掌握存储过程及触发器 实验内容:掌握视图的创建方法,掌握T-SQL流程控制语编写,掌握T-SQL 存储过程格式

与业务表达上的应用,掌握T-SQL 触发器的语法及业务表达上的应用; 实验要求:单独完成并编写实验报告

实验准备:XSCJ数据库(注:在COU表中添加一字段Tname CHAR(8)),并为每个记录添加相应的值。因本章要对数据库进行更新,请先备份XSCJ数据库的2个相关文件。 实验步骤

1. 视图的创建与应用

为表 sc创建一个视图,包括有各个学生学号、选修课程的门数及平均分,如: create view s_grade(sno,c_num,avg_grade) as

select sno,count(cno),avg(grade) from sc group by sno

实践下列查询和更新操作的功能,是否出错,若可运行,写出转换至基本表SC上的相应操作。

(1)select * from s_grade;

(2)select sno,c_num from s_grade where avg_grade>80

(3)select sno,avg_grade from s_grade where c_num>(select c_num from s_grade where sno=’S004’)

(4)update s_grade set c_num=c_num+2

(5)delete from s_grade where c_num>3

2.对SC表创建视图COMPUTER_SC,该视图包括‘01’专业的学生的学号、姓名与性别

设计实验完成该视图数据的查询、添加、修改与删除。进一步理解行列子集视图与非行列子集视图应用上的区别

这题对SC表?

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')

本文来源:https://www.bwwdw.com/article/0t03.html

Top