上机实验4:创建与管理其他数据库对象、数据库保护与数据传输

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
课程名称:数据库系统A 指导教师:定会学号20171107082 姓名陈坤上机地点
专业软件工程班级1702 时间
上机内容创建与管理其他数据库对象、数据库保护与数据传输一、实验目的及要求
掌握创建管理索引、视图、存储过程和触发器对象的使用方法
二、实验设备(环境)及要求
实验环境
已安装SQL Server 2008的计算机;
具有局域网环境,有固定IP;
实验要求
1.掌握索引的创建和管理方法;
2.掌握视图的创建和管理方法;
3.掌握存储过程的创建和管理方法;
4.掌握触发器的创建和管理方法;
5.完成实验报告
三、实验内容与步骤
请使用T-SQL完成以下内容:
请使用T-SQL 语句实现进行以下操作:
1.在student表的sno列上创建唯一性聚集索引index_sno
use stu
go
create unique clustered index index_sno
on student(sno)
2.在student表的sname列上创建唯一性非聚集索引index_sname
use stu
go
create unique nonclustered index index_sname
on student(sname)
3.在student表的sage列上创建非聚集索引index_sage
use stu
go
create nonclustered index index_sage
on student(sage)
4.在sc表的sno列和cno列上创建复合非聚集索引index_sno_cno use stu
go
create index index_sno_cno
on sc(sno,cno)
5.将索引index_sno_cno更名为index_snocno
exec sp_rename'sc.[index_sno_cno]','index_snocno','index'
6.删除上面的索引index_snocno
use stu
go
drop index index_snocno
on sc
7.查看student表的索引基本信息
EXEC sp_helpindex student
8.创建一个只选修8号课程的学生情况的视图信息
use stu
go
create view xuanxiu_8
as
select student.sno,
sname,sage,sdept,ssex
from student,sc
where student.sno=sc.sno and cno='8'
group by student.sno,sname,sage,sdept,ssex
having count(cno)=1
9.创建一个视图view_stu,只包含学生的学号,姓名,年龄信息create view view_stu
as
select sno as学生学号,
sname as姓名,
sage as年龄
from student
10.在上一题视图的基础上创建年龄在20岁以上的的学生的视图create view view_stu1
as
select sno as学生学号,
sname as姓名,
sage as年龄
from student
where sage>20
11.创建一个包含不及格同学及90分以上同学的学号、姓名、课程名称及成绩的视图create view view_stu2
as
select student.sno as学生学号,
sname as姓名,
cname as课程名,
grade as成绩
from student,sc,course
where student.sno=sc.sno
and o=o
and grade<60 and grade>90
12.选择一个上面创建的视图,查看视图的信息
select*from view_stu1
go
13.选择一个上面创建的视图,修改删除其中的一列
delete view_stu1
where学生学号='200515001'
select*from view_stu1
14.选择一个上面创建的视图进行删除操作
drop view view_stu1
15.从视图view_stu中查询19岁的男生记录
select*from view_stu
where年龄=19
16.通过视图view_stu中插入一行数据。

学号:2006010010,姓名:赵青,年龄:insert into view_stu
values('200610010','赵青','20')
select*from view_stu
17.将视图view_stu中姓名为“李蕾”的年龄改为“22”update view_stu set年龄='22'
where姓名='李蕾'
18.通过视图 view_stu将姓名为“李贵”的记录删除delete view_stu
where姓名='李贵'
19.自行选择上面创建的一个视图插入一个记录。

insert into view_stu
values('200515029','刘海涛','21')
select*from view_stu
20.自行选择一个视图根据一定的条件进行查询。

select*from view_stu
where年龄>20
21.自行选择联合一张表和某个视图进行复合查询。

select distinct学生学号,姓名,年龄
from view_stu,sc
where view_stu.学生学号=sc.sno
and grade>80
22.创建存储过程返回全部男生选课及成绩等相关信息
create procedure stu_info
as
select distinct a.sno,sname,ssex
from student a,sc
where a.sno=sc.sno
and ssex='男'
use stu exec stu_info
23.创建一个带输入参数的存储过程,能够根据参数向学生表中插入一条记录
CREATE PROCEDURE student_insert(@sno char(9),@sname
char(8),@ssex char(2),@sage int,@sdept char(4))
as
insert into student(sno,sname,ssex,sage,sdept)
values(@sno,@sname,@ssex,@sage,@sdept)
/*调用存储过程*/
EXEC student_insert'200515002','王旺','女',20,'it'
24.创建一个带输入参数的存储过程,根据不同的学生名参数,返回该学生的所有课程
成绩。

use stu
GO
CREATE PROCEDURE stu_sc2(@yx char(6))
AS SELECT DISTINCT a.sno,sname,cno,grade
FROM student a,sc
WHERE a.sno=sc.sno and sname=@yx
GO
Exec stu_sc2'张力'
25.创建一个带输入输出参数的存储过程,根据输入的系部名,统计该系学生的平均成
绩并输出。

USE stu
GO
CREATE PROCEDURE PINGJUN
@stu_sdept varchar(8),@average int OUTPUT
AS
SELECT@average=avg(grade)
FROM student,sc
WHERE student.sno=sc.sno AND sdept=@stu_sdept
GO
DECLARE@G int
EXEC PINGJUN'CS',@G OUTPUT
SELECT@G
26.查看第22和23题的存储过程的有关信息,并查看它们的定义。

修改第22题的存储
过程,改为查询全部女生的资料。

删除第23题的存储过程。

alter procedure stu_info
as
select distinct a.sno,sname,ssex
from student a,sc
where a.sno=sc.sno
and ssex='女'
use stu exec stu_info
drop PROCEDURE student_insert
27.创建student表的DELETE触发器,当一个学生退学后,信息从student表中删除,
触发在sc表中删除该生选课情况。

create trigger DELETETEstu1
on student after delete
as
select sname,ssex,sage,sdept from deleted
delete from student where sname='张三'
select*from student where sname='张三'
28.创建一个触发器,检查在sc表中输入一门课程成绩,必须符合在0到100分范围内。

create trigger insertsc_grade
on sc after insert
as
if exists(select*from inserted where (grade>100 or grade<0))
begin
print'成绩应在~100。

'
rollback
end
go
insert sc values(1,2,101)
四、实验结果分析以及出现问题
出现了各种各样的错误,尤其是最后的两个实验。

让我很是难受了一阵子,查了各种资料以及上网百度查了各种相关知识点。

最后总算解决了问题。

也让我对这些知识点了解更多了,老师当时上最后几章时,由于赶进度没太多时间仔细讲解,大多数是一笔带过。

这一次实验让我发现了更多的知识。

相关文档
最新文档