实验目的:
熟练掌握SQL Server查询分析器的使用方法,加深对标准SQL视图语句的理解。
实验内容:
基于实验一创建的教学管理JXGL数据库,实现数据视图操作。
实验步骤:
在教学管理JXGL数据库中进行如下操作,写出对应的SQL语句:
1、 建立信息系学生视图IS1(sno,sname,ssex,sage)。
CREATE VIEW IS1
AS
select sno,sname,ssex,sage
from student
where sdept='IS';
2、 建立信息系学生视图IS2(sno,sname,ssex,sage),并要求在进行修改和插 入操作时仍需保证该视图只有信息系学生(验证SQL Server中是否实现了with check option)。
CREATE VIEW IS2
AS
select sno,sname,ssex,sage
from student
where sdept='IS'
with check option;
insert into IS2
values('201215138','李明','男','19')
3、 建立信息系选修了“数据库”的学生视图IS3(sno,sname, grade)。
create view IS3
AS
select student.sno,sname,grade
from student,sc
where student.sno=sc.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 student
6、 建立课程的课程号和该课程最高成绩的视图S_Max(cno,max_grade)。
create view S_Max(cno,max_grade)
AS
select cno,max(grade)
from sc
group by cno
7、 删除视图IS3,观察IS4是否级联删除。
drop view IS3
8、 查询信息系年龄小于19岁的同学的学号、姓名和年龄。
select sno,sname,sage
from IS2
where sage<19
9、 重新建立视图IS3,然后查询信息系中“数据库”成绩最低的同学的学号。
create view IS3
AS
select student.sno,sname,grade
from student,sc
where student.sno=sc.sno and sdept='IS' and cno in(select cno from course where cname='数据库')
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录入数据(201215138,李明,M,19),对IS2录入数据(201215139,张兰,F,19),并显示IS1,IS2和student内容(验证SQL Server中是否实现了with check option)。
insert into IS2
values('201215139','张兰','女','19')
insert into IS1
values('201215138','李明','男','19')
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='张兰'