数据库实验2

数据库实验2

第1关:查询所有列

实验要求

查询课程表的全部信息。

course(课程表)

cno(课程号)cname(课程名)credit(学分)hours(学时)examination(考核方式)
G001线性代数348考试
R003数据结构348考试
R009离散数学348考试
S023嵌入式系统与编程实验132考察
G012大学物理464考察

代码

---------- BEGIN ---------- 
SELECT * FROM course;
---------- END ---------- 

第2关:查询选定列

实验要求

查询各位教师的工号、姓名和性别。

teacher(教师表)

tno(工号)tname(姓名)sex(性别)title(职称)birthday(出生日期)
0014李欣教授1969/7/25
0078张云副教授1975/11/25
0118王立高级工程师1985/4/28
0193赵玲讲师1992/9/26
0213杨梅副教授1986/6/7
0030覃刚副教授1980/2/15

代码

---------- BEGIN ---------- 
SELECT tno,tname,sex FROM teacher;
---------- END ---------- 

第3关:去重查询

通过班级表查询数据库中有哪些学院。

class(班级表)

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

代码

---------- BEGIN ---------- 
SELECT DISTINCT dept FROM class;
---------- END ---------- 

第4关:比较大小

实验要求

查询职称为副教授的教师的工号和姓名。

teacher(教师表)

tno(工号)tname(姓名)sex(性别)title(职称)birthday(出生日期)
0014李欣教授1969/7/25
0078张云副教授1975/11/25
0118王立高级工程师1985/4/28
0193赵玲讲师1992/9/26
0213杨梅副教授1986/6/7
0030覃刚副教授1980/2/15

代码

---------- BEGIN ---------- 
SELECT tno,tname FROM teacher WHERE title = '副教授';
---------- END ---------- 

第5关:多重条件

实验要求

查询1980年1月1日之后出生的女教师信息。

teacher(教师表)

tno(工号)tname(姓名)sex(性别)title(职称)birthday(出生日期)
0014李欣教授1969/7/25
0078张云副教授1975/11/25
0118王立高级工程师1985/4/28
0193赵玲讲师1992/9/26
0213杨梅副教授1986/6/7
0030覃刚副教授1980/2/15

代码

---------- BEGIN ---------- 
SELECT * FROM teacher WHERE birthday >= 1980-01-01 AND sex = '女';
---------- END ---------- 

第6关:确定范围

实验要求

查询 1970年 - 1980年 之间出生的教师信息。

teacher(教师表)

tno(工号)tname(姓名)sex(性别)title(职称)birthday(出生日期)
0014李欣教授1969/7/25
0078张云副教授1975/11/25
0118王立高级工程师1985/4/28
0193赵玲讲师1992/9/26
0213杨梅副教授1986/6/7
0030覃刚副教授1980/2/15

代码

---------- BEGIN ---------- 
SELECT * FROM teacher WHERE EXTRACT(YEAR FROM birthday) BETWEEN 1970 AND 1980;
---------- END ---------- 

第7关:确定集合

实验要求

查询17级和19级的班级信息。

class(班级表)

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

代码

---------- BEGIN ---------- 
SELECT * FROM class WHERE grade IN('17级','19级');
---------- END ---------- 

第8关:模糊查询

实验要求

查询姓杨的老师的工号、姓名和职称。

teacher(教师表)

tno(工号)tname(姓名)sex(性别)title(职称)birthday(出生日期)
0014李欣教授1969/7/25
0078张云副教授1975/11/25
0118王立高级工程师1985/4/28
0193赵玲讲师1992/9/26
0213杨梅副教授1986/6/7
0030覃刚副教授1980/2/15

代码

---------- BEGIN ---------- 
SELECT tno,tname,title FROM teacher WHERE tname LIKE '杨%'
---------- END ----------  

第9关:求和、最大最小值

实验要求

  1. 查询全校课程最高的学分数。
  2. 查询软件学院学生的总数。

course(课程表)

cno(课程号)cname(课程名)credit(学分)hours(学时)examination(考核方式)
G001线性代数348考试
R003数据结构348考试
R009离散数学348考试
S023嵌入式系统与编程实验132考察
G012大学物理464考察

class(班级表)

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

代码

---------- BEGIN ---------- 
SELECT MAX(credit) FROM course;

SELECT SUM(gnum) FROM class WHERE dept = '软件';
---------- END ---------- 

第10关:计数

实验要求

统计软件学院的班级数量。

class(班级表)

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

代码

---------- BEGIN ---------- 
SELECT COUNT(gname) FROM class WHERE dept = '软件';
---------- END ---------- 

第11关:Group by 子句使用

实验要求

查询每个教师的工号及其任课的班级数。

teaching(教师授课表)

cno(课程号)tno(工号)gno(班级号)term(开课学期)classroom(教室)
G001007802119031A101
G001007801319011A101
R003011802118012S001
R009021302119032S002
S023019302118011S001
G012003001319012B003

代码

---------- BEGIN ---------- 
SELECT tno,COUNT(*) FROM teaching GROUP BY tno;
---------- END ---------- 

第12关:Having子句使用

实验要求

  1. 查询人数超过70人(大于70)的学院的名称和人数。
  2. 查询第1学期授课数量多于1门(大于1)的教师工号和数量。

class(班级表)

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

teaching(教师授课表)

cno(课程号)tno(工号)gno(班级号)term(开课学期)classroom(教室)
G001007802119031A101
G001007801319011A101
R003011802118012S001
R009021302119032S002
S023019302118011S001
G012003001319012B003

代码

---------- BEGIN ---------- 
SELECT dept,SUM(gnum) FROM class GROUP BY dept HAVING (SUM(gnum)>70);

SELECT tno,COUNT(tno) FROM teaching GROUP BY tno HAVING (COUNT(tno)>1);
---------- END ---------- 

第13关:单因素排序

实验要求

查询软件学院班级的班号、班级名和人数,并按人数升序排列。

class(班级表):

gno(班级号)gname(班级名)grade(年级)dept(学院)gnum(班级人数)
0211801软件18级1班18级软件37
0211903软件19级3班19级软件38
0131901机械19级1班19级机械37

代码

---------- BEGIN ---------- 
SELECT gno,gname,gnum FROM class WHERE dept = '软件' ORDER BY gnum ASC;
---------- END ---------- 

第14关:多因素排序

实验要求

查询教师授课情况,结果先按学期升序排列,再按工号降序排列。

teaching(教师授课表)

cno(课程号)tno(工号)gno(班级号)term(开课学期)classroom(教室)
G001007802119031A101
G001007801319011A101
R003011802118012S001
R009021302119032S002
S023019302118011S001
G012003001319012B003

代码

---------- BEGIN ---------- 
SELECT * FROM teaching ORDER BY term ASC,tno DESC;
---------- END ---------- 

实验收获:

  1. 掌握了关系数据库标准语言的进阶内容。
  2. 掌握了数据查询的基本方法。
  3. 掌握了子查询的部分内容。

心得体会:

  1. 通过学习第三章“关系数据库标准语言”的“数据查询”部分的内容,我完成了这次的实验报告,在这次报告中,我完成了数据查询的基本操作,实现了,模糊查询、去重查询等查询方法,在完成题目的过程中,也使用到了子查询的一些方法。
  2. 数据库的查询是一个非常强大的功能,通过这次报告我也有了写查询语句的一些经验,查询就是先写出SELECT我们要找什么,然后写我们找的东西涉及哪些表,然后加上查询的条件,有时候也要用到多重条件、子查询等方法,完成报告后我的数据库的查询能力获得了提升。
  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一只大狸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值