
一、环境
运行SQL Server,并创建名为student数据库、“学生信息”表、“课程”表、“学生成绩”表。
二、作业内容
在“学生成绩”表中,使用SELECT语句完成下面的查询。
(1)在“课程”表中查询所有学生的“课程号”和“课程名称”。
use student
go
select distinct 课程号,课程名称
from 课程_蒲强林
go
运行结果截图:
(2)在“课程”表中查询所有没有“先修课程”的课程的“课程号”和“课程名称”
use student
go
select 课程号,课程名称
from 课程_蒲强林
where 先修课程 is NULL
go
运行结果截图:
(3)在“课程号”表中查询“学分”在4-6之间的课程的“课程号”和“课程名称”。
use student
go
select 课程号,课程名称
from 课程_蒲强林
where 学分>=4 and 学分<=6
go
运行结果截图:
(4)在“课程”表中查询所有“课程名称”中包含“数据库”字样的课程的全部信息,将查询结果按“课程名称”降序排列。
use student
go
select *
from 课程_蒲强林
where 课程名称 like '%数据库%'
order by 课程名称 DESC
go
运行结果截图:
(5)查询“课程”表课程的总数。
use student
go
select count(*) 课程总数
from 课程_蒲强林
go
运行结果截图:
(6)查询至少选修了2门课程以上的学生的学号。
use student
go
select distinct 学号
from 学生成绩_蒲强林
group by 学号
having count(*)>=2
go
运行结果截图:
(7)查询每个学生所选修的课程的分数,在查询结果中显示学生的“学号”、“课程名称”和该课程的“分数”。
use student
go
select 学号,课程名称,分数
from 学生成绩_蒲强林,课程_蒲强林
where 学生成绩_蒲强林.课程号 = 课程_蒲强林.课程号
go
运行结果截图:
(8)查询“先修课程”为NULL的课程的“课程名”以及该课程的“学分”。
use student
go
select 课程名称,学分
from 课程_蒲强林
where 先修课程 is null
go
运行结果截图:
(9)查询其它系中比“管理系”的所有学生年龄都小的学生的“姓名”、“年龄”和“性别”。
use student
go
select 姓名,性别,年龄
from 学生信息_蒲强林
where 所在系 != '管理系' and 年龄 from 学生信息_蒲强林 where 所在系 = '管理系') go 运行结果截图: (10)查询至少选修了2门课程的学生的“姓名”。 use student go select distinct 姓名 from 学生成绩_蒲强林,学生信息_蒲强林 where 学生成绩_蒲强林.学号 = 学生信息_蒲强林.学号 group by 姓名 having count(*)>=2 go 运行结果截图: (11)将“学生信息”表中“计算机系”的学生的全部信息插入到“计算机系学生信息”表中。 use student go select * into 计算机系学生信息_蒲强林 from 学生信息_蒲强林 where 所在系 = '计算机系' go 运行结果截图; (12)创建和“学生信息”表的表结构相同的“管理系学生信息”表,但该表中不包含任何记录。之后用带子查询的INSERT将“管理系”学生的全部信息插入到“管理系学生信息”表中。 use student go select * into 管理系学生信息_蒲强林 from 学生信息_蒲强林 where 学号 is null go 运行结果截图: use student --调用数据库 go insert into 管理系学生信息_蒲强林 select * from 学生信息_蒲强林 where 所在系 = '管理系' go 运行结果截图: (13)查询“赵燕”同学选修的所有课程“课程名称”、“学分”、“分数”,对结果按照“分数”升序排列。 use student go select 课程名称,学分,分数 from 学生成绩_蒲强林,课程_蒲强林 where 学生成绩_蒲强林.课程号 = 课程_蒲强林.课程号 and 学号 in( select 学号 from 学生信息_蒲强林 where 姓名 = '赵燕') order by 分数 go 运行结果截图: 二、小结 体会对表查询和子查询的用法。
