实验目的:
熟练掌握SQL Server查询分析器的使用方法,加深对标准SQL视图语句的理解。
实验内容:
基于实验一创建的教学管理JXGL数据库,实现数据视图操作。
实验步骤:
在教学管理JXGL数据库中进行如下操作,写出对应的SQL语句:
1、 建立信息系学生视图IS1(sno,sname,ssex,sage)。
CREATE VIEW IS1
AS
select sno,sname,ssex,sage
from student2
where sdept='IS';
2、 建立信息系学生视图IS2(sno,sname,ssex,sage),并要求在进行修改和插 入操作时仍需保证该视图只有信息系学生(验证SQL Server中是否实现了with check option)。
CREATE VIEW IS2
AS
select sno,sname,ssex,sage
from student2
where sdept='IS'
with check option;
执行失败,验证成功
insert into IS2
values('90112','你好','男','13')
3、 建立信息系选修了“数据库”的学生视图IS3(sno,sname, grade)。
create view IS3
AS
select student2.sno,sname,grade
from student2,ssc
where student2.sno=ssc.sno and sdept='IS' and cno in(select cno from course where cname='数据库')
4、 基于视图IS3建立信息系选修了“数据库”且成绩在90分以上的学生的视图IS4(sno,sname, grade)。
create view IS4
AS
select sno,sname,grade
from IS3
where grade>90
5、 建立一个反映学生出生年份的视图S_Birth(sno,sname, birthday)。
create view BIRTH(sno,sname,sbirth)
AS
select sno,sname,2014-Sage
from student2
6、 建立课程的课程号和该课程最高成绩的视图S_Max(cno,max_grade)。
create view S_Max(cno,max_grade)
AS
select cno,max(grade)
from ssc
group by cno
7、 删除视图IS3,观察IS4是否级联删除。
drop view IS3
8、 查询信息系年龄小于19岁的同学的学号、姓名和年龄。
select sno,sname,sage
from IS2
where sage<19
9、 重新建立视图IS3,然后查询信息系中“数据库”成绩最低的同学的学号。
select sno
from IS3
where grade=(select min(grade) from IS3 group by sno)
10、 查询选课最高成绩大于90的那些课程的课程号和成绩。
select cno,max_grade
from S_Max
where max_grade>=90
11、 对IS1录入数据(95006,李明,M,19),对IS2录入数据(95007,张兰,F,19),并显示IS1,IS2和student内容(验证SQL Server中是否实现了with check option)。
insert into IS2
values('90112','张兰','男','13')
insert into IS1
values('90006','你好','男','13')
第二条成功,第一题条失败
12、 把信息系男同学的年龄置0。
update IS1
set sage=0
where ssex='男'
13、 把1号课的最高成绩置100(验证这条语句能否执行,如果不能,原因是什么?)。
update S_Max
set max_grade=100
where cno=1
不能执行,因为包含派生域或者常量域
14、 删除信息系的名字叫张兰的同学。
delete
from is2
where sname='张兰'