【数据库系统概论】实训(三)

该博客围绕数据库school,介绍了使用SQL语句完成多种查询操作,包括两表和多表的连接运算,以及针对学生选课、成绩、基本信息等方面的查询,部分查询还给出了多种实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用数据库school,用SQL语句完成以下查询

1.实现两表的笛卡尔积运算


use school1
go

select  Student.Sno,Cno,Grade  from  student,sc  


S01  	C01  	92.0
S01  	C03  	84.0
S01  	C01  	90.0
S01  	C02  	94.0
S01  	C03  	82.0
S01  	C01  	72.0
S01  	C02  	90.0
S01  	C03  	75.0
S02  	C01  	92.0
S02  	C03  	84.0
S02  	C01  	90.0
S02  	C02  	94.0
S02  	C03  	82.0
S02  	C01  	72.0
S02  	C02  	90.0
S02  	C03  	75.0
S03  	C01  	92.0
S03  	C03  	84.0
S03  	C01  	90.0
S03  	C02  	94.0
S03  	C03  	82.0
S03  	C01  	72.0
S03  	C02  	90.0
S03  	C03  	75.0
S04  	C01  	92.0
S04  	C03  	84.0
S04  	C01  	90.0
S04  	C02  	94.0
S04  	C03  	82.0
S04  	C01  	72.0
S04  	C02  	90.0
S04  	C03  	75.0
S05  	C01  	92.0
S05  	C03  	84.0
S05  	C01  	90.0
S05  	C02  	94.0
S05  	C03  	82.0
S05  	C01  	72.0
S05  	C02  	90.0
S05  	C03  	75.0
S06  	C01  	92.0
S06  	C03  	84.0
S06  	C01  	90.0
S06  	C02  	94.0
S06  	C03  	82.0
S06  	C01  	72.0
S06  	C02  	90.0
S06  	C03  	75.0

在这里插入图片描述

2.实现两表的等值连接


use school1
go

select   Student.*, SC.*   from  student,sc  where   Sdept  =   '自动化'


在这里插入图片描述

3.实现两表的自然连接


use school1
go

select   Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade  from  student,sc  
      where   student.sno=Sc.Sno

在这里插入图片描述

4.实现多表的自然连接


use school1
go

select  Sname,Cname,Grade  from  student,sc ,course
       where   student.sno=Sc.Sno  and  Sc.Cno=Course.Cno  

在这里插入图片描述

5.查询王建平同学生选修的课程号和相应的考试成绩

use school1
go
SELECT SC.Cno,SC.Grade
FROM Student,SC
WHERE	  Student.Sname='王建平' and Student.Sno = SC.Sno

在这里插入图片描述

6.查询每一门课的间接先修课


use school1
go

select  A.Cno,A.Cname,B.Pre_Cno 
                 from  Course  A,Course  B
                 where  A.Pre_Cno =  B.Cno  and  B.Pre_Cno is not null 




在这里插入图片描述

7.查询同时选修了C01和C02课程的学生学号

use school1
go
select  Sno,Grade  from  SC  where  Cno=(select Cno from Course  where  Cname  like  '数据结构')

select  Sno,Grade  from  SC ,Course where  SC.Cno=Course.Cno and Cname  like  '数据结构'

8.查询成绩表中有记录同学的详细情况(用两种方式实现)

use school1
go
SELECT Student.Sno,Sname,Grade
FROM Student,SC
WHERE	Student.Sno=SC.Sno AND Grade IS NOT NULL

在这里插入图片描述

9.查询女学生的学号、姓名和各科考试成绩

use school1
go
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE	Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Ssex='女'

在这里插入图片描述
如果改成男学生呢?

use school1
go
SELECT Student.Sno,Sname,Cname,Grade
FROM Student,SC,Course
WHERE	Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Ssex='男'

在这里插入图片描述

10.查询考试成绩大于总平均分的学生学号

use school1
go
Select  distinct Sno from  SC  where  Grade>(select avg(grade) from SC)

在这里插入图片描述

11.查询有一门成绩比所有选修了C02号课程的学生成绩高的学生学号

use school1
go
Select  Sno  from  SC where grade > all (select  Grade from SC where Cno='C02')  and  Cno<>'C02'

在这里插入图片描述

12.查询成绩至少比选修了C02号课程的一个学生成绩高的学生学号

use school1
go
Select  Sno  from  SC where grade > (select  Min(Grade) from SC where Cno='C02')  and  Cno<>'C02'

在这里插入图片描述

13.查询王建平同学选修课程的课程详细信息(用两种方式实现)

use school1
go
SELECT Course.Cno,Cname,Pre_Cno,Credit 
FROM Course,SC
WHERE	  SC.Sno='S01' and Course.Cno = SC.Cno

在这里插入图片描述

14.查询与“刘华”在同一个系学习的学生(用多种方式实现)

use school1
go
 --Select  Sno,Sname,Sdept  from  Student  where  Sdept IN  (select  Sdept from  student where  Sname='刘华')

--Select  S1.Sno,S1.Sname,S1.Sdept from  Student  S1,Student  S2 where  S1.Sdept=S2.Sdept  and S2.Sname='刘华'

Select  Sno,Sname,Sdept  from  Student S1 where Exists  (select  *  from  student S2 where  S2.Sdept=S1.Sdept and S2.Sname='刘华')

在这里插入图片描述

15.查询所有学生都选修了的课程号和课程名

use school1
go
 Select  Sname from Student where not Exists (select * from course where not Exists (select * from SC where  Sno=Student.Sno and Cno=Course.Cno))

在这里插入图片描述

16.查询至少选修了学生S03选修的全部课程的学生学号

use school1
go
 Select  distinct Sno from  SC X  where  Not Exists (select  *  from  SC  Y   where  Y.sno='S03'and  not  Exists   (select  *  from  SC  Z   where  Z.Sno=X.Sno  and  Z.Cno=Y.Cno))

在这里插入图片描述

17.查询同时选修了C01,C02和C03课程的学生学号

18.查询18岁学生和计算机学生的基本信息(用两种方式实现)

use school1
go
Select  *  from  student where  Sage=18   and Sdept  like  '计算机'

在这里插入图片描述

use school1
go
--Select  *  from  student where  Sage=18   and Sdept  like  '计算机'

Select  *  from  student where  Sdept  like  '计算机'   and Sage  like '18'

在这里插入图片描述

Select  *  from  student where  Sdept  like  '计算机'   or Sage  like '18'

在这里插入图片描述

19.查询计算机系中年龄大于18岁学生的基本信息(用两种方式实现)

use school1
go
Select  *  from  student where  Sage>18  intersect  select *  from  student     

在这里插入图片描述

use school1
go
Select  *  from  student where  Sage>18  

在这里插入图片描述

20.查询年龄大于18岁学生基本信息与计算机系学生基本信息的差集(用两种方式实现)

use school1
go
Select  *  from  student where  Sage>18 except  select *  from  student  where  Sdept like  '计算机' 

在这里插入图片描述

use school1
go
Select  *  from  student where  Sage>18   and Sdept not like  '计算机'

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值