数据库系统原理实验报告SQL查询语句.docx
《数据库系统原理实验报告SQL查询语句.docx》由会员分享,可在线阅读,更多相关《数据库系统原理实验报告SQL查询语句.docx(10页珍藏版)》请在冰豆网上搜索。
数据库系统原理实验报告SQL查询语句
数据库系统原理
实验报告
姓名:
xxx
学号:
xxxxxxxx
专业:
xxxxx
日期:
xxxxx
Lab2
一、实验目的
进一步熟悉关系数据库标准语言SQL。
二、实验环境
1)Windows10
2)SQLServer2017
三、实验内容
给定如学生表、课程表和学生作业表所示的信息。
表1学生表
学号
姓名
性别
专业班级
出生日期
联系电话
0433
张艳
女
生物04
1986-9-13
0496
李越
男
电子04
1984-2-23
1381290××××
0529
赵欣
男
会计05
1984-1-27
1350222××××
0531
张志国
男
生物05
1986-9-10
1331256××××
0538
于兰兰
女
生物05
1984-2-20
1331200××××
0591
王丽丽
女
电子05
1984-3-20
1332080××××
0592
王海强
男
电子05
1986-11-1
表2课程表
课程号
课程名
学分数
学时数
任课教师
K001
计算机图形学
2.5
40
胡晶晶
K002
计算机应用基础
3
48
任泉
K006
数据结构
4
64
马跃先
M001
政治经济学
4
64
孔繁新
S001
高等数学
3
48
赵晓尘
表3学生作业表
课程号
学号
作业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成绩ISNULLOR作业2成绩ISNULLOR作业3成绩ISNULL;
查询结果截图:
5.查询选修了K001课程的学生人数。
(5分)
Sql语句:
SELECTCOUNT(DISTINCT学号)
FROM学生作业表
WHERE课程号='K001';
查询结果截图:
6.查询数据库中共有多少个班级。
(5分)
Sql语句:
SELECTCOUNT(DISTINCT专业班级)
FROM学生表;
查询结果截图:
7.查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。
(5分)
Sql语句:
SELECT学生作业表.学号,AVG(作业1成绩),AVG(作业2成绩),AVG(作业3成绩)
FROM学生表,学生作业表
WHERE学生表.学号=学生作业表.学号
GROUPBY学生作业表.学号
HAVINGCOUNT(*)>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语句:
SELECTDISTINCT学生表.学号,学生表.姓名
FROM学生作业表,学生表
WHERE学生表.学号IN(
SELECT学生表.学号
FROM学生作业表
WHERE学生作业表.课程号='K002'AND学生作业表.学号=学生表.学号)
查询结果截图:
3)相关子查询:
Sql语句:
SELECTDISTINCT学生表.学号,学生表.姓名
FROM学生表,学生作业表
WHERE学生表.学号IN(
SELECT学生作业表.学号
FROM学生作业表
WHERE学生作业表.课程号='K002')
查询结果截图:
4)使用exists关键字的相关子查询:
Sql语句:
SELECTDISTINCT学生表.学号,学生表.姓名
FROM学生作业表,学生表
WHEREEXISTS(
SELECT*
FROM学生作业表
WHERE学生作业表.课程号='K002'AND学生作业表.学号=学生表.学号)
查询结果截图:
12.查询没有选修K001和M001课程的学号、课程号和三次成绩(使用子查询)。
(20分)
Sql语句:
SELECTDISTINCT学号,课程号,作业1成绩,作业2成绩,作业3成绩
FROM学生作业表
WHERE学号NOTIN(
SELECT学号
FROM学生作业表
WHERE课程号='K001'OR课程号='M001')
查询结果截图:
四、实验总结
通过本次实验,我更加熟悉了SQL语言查询相关的语句用法。
在实验中遇到了很多问题,例如建表时提示主键列不能输入重复值,后来才知道原来要设置两个主键。
希望在以后的实验中可以收获更多的实践知识。