数据库系统原理实验报告-SQL查询语句
数据库系统原理
实验报告
姓名:xxx
学号:xxxxxxxx
专业:xxxxx
⽇期:xxxxx
Lab2⼀、实验⽬的
进⼀步熟悉关系数据库标准语⾔SQL。
⼆、实验环境
1)Windows 10
2)SQL Server 2017
三、实验内容
给定如学⽣表、课程表和学⽣作业表所⽰的信息。
表2 课程表
表3 学⽣作业表
K0020529707085 K0020531808080 K0020538657585 K0020592758585 K0060531808090 K0060591808080 M0010496707080 M0010591657575 S0010531808080 S00105386080
写出如下SQL语句:
1.查询数据库中有哪些专业班级。(5分)
Sql语句:
SELECT专业班级
FROM学⽣表;
查询结果截图:
2.查询在1986年出⽣的学⽣的学号、姓名和出⽣⽇期。(5分)Sql语句:SELECT学号,姓名,出⽣⽇期
FROM学⽣表
WHERE出⽣⽇期LIKE'1986%';
查询结果截图:
3.查询05级的男⽣信息。(5分)
Sql语句:
SELECT*
FROM学⽣表
WHERE学号LIKE'05%'AND性别='男';
查询结果截图:
4.查询没有作业成绩的学号和课程号。(5分)
Sql语句:
SELECT学号,课程号
FROM学⽣作业表
WHERE作业1成绩IS NULL OR作业2成绩IS NULL OR作业3成绩IS NULL;查询结果截图:
5.查询选修了K001课程的学⽣⼈数。(5分)
Sql语句:
SELECT COUNT(DISTINCT学号)
FROM学⽣作业表
WHERE课程号='K001';
查询结果截图:
6.查询数据库中共有多少个班级。(5分)
Sql语句:
SELECT COUNT(DISTINCT专业班级)
FROM学⽣表;
查询结果截图:
7.查询选修三门以上(含三门)课程的学⽣的学号和作业1平均分、作业2平均分和作业3平均分。(5分)Sql语句:
SELECT学⽣作业表.学号,AVG(作业1成绩),AVG(作业2成绩),AVG(作业3成绩)
FROM学⽣表,学⽣作业表
WHERE学⽣表.学号=学⽣作业表.学号
GROUP BY学⽣作业表.学号
HAVING COUNT(*)>2;
查询结果截图:
8.查询于兰兰的选课信息,列出学号、姓名、课程名。(5分)
Sql语句:
SELECT学⽣作业表.学号,姓名,课程名
FROM学⽣表,学⽣作业表,课程表
WHERE姓名= '于兰兰'AND学⽣表.学号=学⽣作业表.学号AND课程表.课程号=学⽣
作业表.课程号;
查询结果截图:
9. 查询与“张志国”同⼀班级的学⽣信息(使⽤连接查询和⼦查询⽅式两种⽅式)。(10 )
1)连接查询:
Sql语句:
SELECT学⽣表1.*
FROM学⽣表AS学⽣表1,学⽣表AS学⽣表2
WHERE学⽣表2.姓名='张志国'AND学⽣表1.专业班级=学⽣表2.专业班级;
查询结果截图:
2)⼦查询:
Sql语句:
SELECT*
FROM学⽣表
WHERE专业班级=(SELECT专业班级
FROM学⽣表
WHERE姓名='张志国');
查询结果截图:
10. 查询⽐“计算机应⽤基础”学时多的课程信息(使⽤连接查询和⼦查询⽅式两种⽅式)。(10分)1)连接查询:
Sql语句:
SELECT课程表1.*
FROM课程表AS课程表1,课程表AS课程表2
WHERE课程表2.课程名='计算机应⽤基础'AND课程表1.学时数>课程表2.学时数;
查询结果截图:
2)⼦查询:
Sql语句:sql统计每个系的学生人数
SELECT*
FROM课程表
WHERE学时数>(SELECT学时数
FROM课程表
WHERE课程名='计算机应⽤基础');
查询结果截图:
11. 查询选修课程号为K002的学⽣的学号、姓名(使⽤连接查询、普通⼦查询、相关⼦查询、使⽤exists关键字的相关⼦查询四种⽅式)。(20分)
1)连接查询:
Sql语句:
SELECT学⽣表.学号,学⽣表.姓名
FROM学⽣作业表,学⽣表
WHERE学⽣作业表.课程号='K002'AND学⽣作业表.学号=学⽣表.学号;
查询结果截图:
2)普通⼦查询:
Sql语句:
SELECT DISTINCT学⽣表.学号,学⽣表.姓名