实验目的:
1.熟练掌握SQL Server查询分析器的使用方法,加深对标准SQL查询语句的理解。
2.熟练掌握简单表的数据嵌套查询和数据更新的操作方法。
实验内容:
创建教学管理数据库“JXGL”,在“JXGL”数据库中创建3-2中的三张表并添加数据,实现数据的单表查询操作。
实验步骤:
在教学管理“JXGL”数据库中写出下列操作的SQL语句
1、查询其它系中比计算机系所有同学年龄都小的学生的学号、姓名和所在系;
select sno,sname,sdept
from student
where Sdept!='CS' AND sage<(select min(sage)
from student
where Sdept='CS')
2、查询1号课的选课成绩高于1号课平均成绩的同学的学号和成绩;
select sno,grade
from sc
where SC.Cno='1' and SC.grade>(select avg(grade)
from sc
where Cno='1')
3、查询年龄大于所在系平均年龄的同学的学号、姓名和所在系;
select x.sno,x.sname,x.sdept
from student x
where x.sage>(select avg(sage)
from student y
where x.sdept=y.sdept)
4、查询选修了全部课程的学生的学号和姓名;
select student.sno,sname
from student
where sno in (select sno
from sc
group by sno
having count(*)= (select count(*)
from course)
)
、
5、查询选修了201215122选修的全部课程的学生的学号;
select distinct sno
from sc scx
where not exists
(select *
from sc scy
where scy.sno='201215122' and not exists
(select*
from sc scz
where scz.sno=scx.sno and scz.cno=scy.cno))
6、验证union、intersect、except;
求选了1号课程或2号学生学号和姓名;
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='1'
union
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='2'
7.求选了1号课程和2号学生学号和姓名;
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='1'
intersect
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='2'
8.求选了1号课程但没选2号学生学号和姓名;
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='1'
except
select student.Sno ,sname
from student
inner join sc
on student.Sno =SC.Sno
where sc.cno='2'
9、新建表sno_avg,表中包含学号和平均成绩两列;把有选课记录的同学的学号和所选课程的平均成绩插入到sno_avg表中;
CREATE TABLE sno_avg
(Sno CHAR(9),
grade CHAR(10));
insert INTO sno_avg(Sno,grade) values
('201215121','78'),
('201215122','85'),
('201215123','59'),
('201215125','63');
select sno,avg(grade)
from sc
group by sno
10、把所有“数据库”课程的选课置零;
update sc
set grade=0 where cno in(
select cno
from course
where cname='数据库'
)
11、删除“数据库”课程的选课记录;
DELETE
FROM sc WHERE Cno IN
(SELECT Cno FROM course WHERE Cname='数据库')
12.验证违反约束的更新操作(自己选择违反约束的操作实验,将系统拒绝的结果贴出):
A、insert 语句违反约束;
B、Update 语句违反约束;
C、Delete 语句违反约束;
update student
set Sno='201215121'
where Sno='201215126'