数据库实验六——数据表高级查询

实验六:数据表高级查询

一、实验目的

1.掌握SELECT语句的基本语法和查询条件表示方法;
2.掌握数据表的连接查询方法;
3.掌握嵌套查询的表示及使用;
4.掌握集合查询的表示及使用

二、实验学时

2学时

三、实验要求

1.了解SELECT语句的基本语法格式和执行方法;
2.了解连接查询的表示及使用;
3.掌握嵌套查询和集合查询的使用的方法;
4.完成实验报告;

四、实验内容

以实验5数据库为基础,请使用T-SQL 语句实现进行以下操作:
1.查询名字中第2个字为‘向’的学生姓名和学号及选修的课程号、课程名;

select Sname,Sno,Cno,Cname
from student,course
where Sname like'_向%'

2.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;

select a.Sname,a.Sno,a.Sdept,b.Cno,Grade
from student a,SC,course b
where b.cno=SC.cno and a.Sno=SC.sno and (b.Cname='数学'or b.Cname='大学英语')

3.查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

select *
from student 
where Sage !=(
select Sage
from student
where Sname='张力')

4.按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;

select student.Sno,student.Sname,
student.Sdept,sum(course.Ccredit)
from student,SC,course
where student.Sno=SC.Sno and SC.Cno=course.Cno
group by student.Sname,student.Sno,student.Sdept

5.查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;

select student.Sno,student.Sname,SC.Cno
from student,SC
where student.Sno=SC.Sno and SC.Sno in(
select SC.Sno
from SC,student
where Cno in(
select Cno
from SC,Student
where Sc.sno=student.sno and
student.Sname='张力')

6.查询只被一名学生选修的课程的课程号、课程名;

select Cno,Cname
from course
where cno in
(select cno
from SC
group by Cno
having count(Sno)=1)

7.使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;

select Sno,Sname
from student
where sno in(
select sno
from SC,course
where course.Cname='数据结构')

8.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;

select Sno,Sname,Sdept
from student
where Sdept !='CS' and 
Sage<Any
(select Sage 
from student
where Sdept='CS')

9.使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;

select Sname
from student
where Sdept !='WM' and 
Sage<All
(select Sage 
from student
where Sdept='WM')

10.分别使用连接查询和嵌套查询,列出与‘张力’在一个院系的学生的信息;

select *
from student
where Sdept in (
select sdept 
from student
where Sname='张力')

select s1.*
from student s1,student s2
where s1.Sno=s2.Sno and s1.Sdept in (
select student.Sdept
from student
where Sname='张力')
and s1.Sname<>'张力'

11.使用集合查询列出CS系的学生以及性别为女的学生学号及姓名;

select Sno,Sname 
from student
where Sdept='CS' 
intersect
select Sno,Sname 
from student
where Ssex='女'

12.使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;

select *
from student
where Sdept='CS' 
intersect
select *
from student
where Sage<=19

五、实验步骤

命令方式:在【SQL Server Management Studio】窗口左上方选择【新建查询】按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击【执行】按钮。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值