当前位置:文档之家› 数据库系统原理实验报告_SQL查询语句

数据库系统原理实验报告_SQL查询语句

数据库系统原理
实验报告
:xxx
学号:xxxxxxxx
专业:xxxxx
日期:xxxxx
Lab2 一、实验目的
进一步熟悉关系数据库标准语言SQL。

二、实验环境
1)Windows 10
2)SQL Server 2017
三、实验容
给定如学生表、课程表和学生作业表所示的信息。

表1 学生表
表2 课程表
表3 学生作业表
K001 0433 60 75 75 K001 0529 70 70 60 K001 0531 70 80 80 K001 0591 80 90 90 K002 0496 80 80 90 K002 0529 70 70 85 K002 0531 80 80 80 K002 0538 65 75 85 K002 0592 75 85 85 K006 0531 80 80 90 K006 0591 80 80 80 M001 0496 70 70 80 M001 0591 65 75 75 S001 0531 80 80 80 S001 0538 60 80
写出如下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语句:
SELECT*
FROM课程表
WHERE学时数>(SELECT学时数
FROM课程表
WHERE课程名='计算机应用基础');
查询结果截图:
11. 查询选修课程号为K002的学生的学号、(使用连接查询、普通子查询、相关子查询、使用exists关键字的相关子查询四种方式)。

(20分)
1)连接查询:
Sql语句:
SELECT学生表.学号,学生表.
FROM学生作业表,学生表
WHERE学生作业表.课程号='K002'AND学生作业表.学号=学生表.学号;
查询结果截图:
2)普通子查询:
Sql语句:
SELECT DISTINCT学生表.学号,学生表.
FROM学生作业表,学生表
WHERE学生表.学号IN(
SELECT学生表.学号
FROM学生作业表
WHERE学生作业表.课程号='K002'AND学生作业表.学号=
学生表.学号)
查询结果截图:
3)相关子查询:
Sql语句:
SELECT DISTINCT学生表.学号,学生表.
FROM学生表,学生作业表
WHERE学生表.学号IN(
SELECT学生作业表.学号
FROM学生作业表
WHERE学生作业表.课程号='K002')
查询结果截图:
4)使用exists关键字的相关子查询:
Sql语句:
SELECT DISTINCT学生表.学号,学生表.
FROM学生作业表,学生表
WHERE EXISTS(
SELECT*
FROM学生作业表
WHERE学生作业表.课程号='K002'AND学生作业表.学号=学生表.
学号)
查询结果截图:
12. 查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。

(20分)
Sql语句:
SELECT DISTINCT学号,课程号,作业1成绩,作业2成绩,作业3成绩
FROM学生作业表
WHERE学号NOT IN(
SELECT学号
FROM学生作业表
WHERE课程号='K001'OR课程号='M001')
查询结果截图:
四、实验总结
通过本次实验,我更加熟悉了SQL语言查询相关的语句用法。

在实验中遇到了很多问题,例如建表时提示主键列不能输入重复值,后来才知道原来要设置两个主键。

希望在以后的实验中可以收获更多的实践知识。

相关主题