CREATE TABLE `teacher`(
`Tno` CHAR(3) NOT NULL COMMENT '教师号、主码',
`Tname` VARCHAR(8) COMMENT '教师名',
`Tsex` CHAR(2) COMMENT '性别、取值:男或女',
`Tbirthday` DATE COMMENT '出生日期',
`Tdept` CHAR(16) COMMENT '所在系',
PRIMARY KEY (`Tno`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;

CREATE TABLE `teaching`(
`Cno` CHAR(5) NOT NULL COMMENT '课程号、外码',
`Tno` CHAR(3) NOT NULL COMMENT '教师号、外码',
`Cterm` TINYINT(1) COMMENT '1-8之间'
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;
ALTER TABLE teaching ADD FOREIGN KEY(cno) REFERENCES course(cno);
ALTER TABLE teaching ADD FOREIGN KEY(tno) REFERENCES teacher(tno);

INSERT INTO `teacher` (`Tno`, `Tname`, `Tsex`, `Tbirthday`, `Tdept`)
VALUES ('101', '李新', '男', '1977-01-12', 'CS');
INSERT INTO `teacher` (`Tno`, `Tname`, `Tsex`, `Tbirthday`, `Tdept`)
VALUES ('102', '钱军', '女', '1968-06-04', 'CS');
INSERT INTO `teacher` (`Tno`, `Tname`, `Tsex`, `Tbirthday`, `Tdept`)
VALUES ('201', '王小花', '女', '1979-12-23', 'IS');
INSERT INTO `teacher` (`Tno`, `Tname`, `Tsex`, `Tbirthday`, `Tdept`)
VALUES ('202', '张小青', '男', '1968-08-25', 'IS');
INSERT INTO `teaching` (`Cno`, `Tno`, `Cterm`) VALUES ('C01', '101', '2');
INSERT INTO `teaching` (`Cno`, `Tno`, `Cterm`) VALUES ('C02', '102', '1');
INSERT INTO `teaching` (`Cno`, `Tno`, `Cterm`) VALUES ('C03', '201', '3');
INSERT INTO `teaching` (`Cno`, `Tno`, `Cterm`) VALUES ('C04', '202', '4');

二、完成下面查询
1.查询所有男生信息。

SELECT *
FROM student
WHERE Ssex='男';

2.查询年龄大于 20 岁的女生学号和姓名。

SELECT s.Sno,s.Sname
FROM student s
WHERE Ssex='女'
AND YEAR(CURDATE())-YEAR((Sbirthday))>20;

3.查询所有教师的 Tname、Tdept

SELECT t.tname,t.tdept
FROM teacher t;

4.查询“电子商务”专业的学生姓名、性别和出生日期

SELECT s.sname,s.ssex,s.sbirthday
FROM student s
WHERE speciality ='电子商务';

5.查询成绩低于 90 分的学生学号及课号,并按成绩降序排列。

SELECT r.sno,r.cno
FROM sc r
WHERE degree < 90
ORDER BY degree DESC;

6.查询 Student 表中所有的系名。

SELECT s.sdept
FROM student s;

7.查询“C01”课程的开课学期。

SELECT i.cterm
FROM teaching i
WHERE cno='C01';

8.查询成绩在 80 分至 90 之间的学生学号及课号

SELECT sc.sno,sc.cno
FROM sc
WHERE degree >= 80
AND degree <90;

9.统计有学生选修的课程门数。

SELECT COUNT(1)
FROM sc r
RIGHT JOIN course c
ON r.cno=c.cno
WHERE r.cno IS NULL;

10.查询成绩为 77,88 或 99 的记录

SELECT *
FROM sc
WHERE degree=77
OR degree=88
OR degree=99

11.计算“C01”课程的平均成绩。

SELECT AVG(r.degree)
FROM sc r
WHERE cno='C01'

12.输出有成绩的学生学号。

SELECT sc.sno
FROM sc
WHERE degree!=NULL

13.查询所有姓“刘”的学生信息

SELECT *
FROM student
WHERE sname
LIKE '刘%'

14.统计输出各系学生的人数

SELECT speciality,COUNT(1)
FROM student
GROUP BY speciality

15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列

SELECT sno,degree
FROM sc
WHERE cno='C03'
ORDER BY degree DESC

16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”

SELECT DISTINCT cno,COUNT(1) AS 人数
FROM sc
GROUP BY cno

17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”

SELECT DISTINCT cno,COUNT(1) AS 人数,MAX(degree) AS 最高分
FROM sc
GROUP BY cno

18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名
为“门数”、“总成绩”,并按选课门数降序排列。

SELECT DISTINCT Sno,COUNT(1) AS 门数,SUM(degree) AS 总成绩
FROM sc
GROUP BY Sno
ORDER BY 门数 DESC

思考题
1.聚集函数能否直接使用在:SELECT 子句、HAVING 子句、WHERE 子句、GROUP
BY 子句中?

可以,聚集函数只能用于SELECT子句,GROUP BY中的HAVING子句,WHERE子句是一个条件语句,在WHERE后面跟的是条件。

2.关键字 ALL 和 DISTINCT 有什么不同的含义

ALL:返回所有的记录
DISTINCT:去重
ALL在SELECT子句里省略,对结果无影响;在INION子句里省略则表示剔除有重复的行,反之则保留所有记录行

3.SELECT 语句中的通配符有几种?含义分别是什么

四种:百分号%、下划线_、[]、[^]或[!]
[]:匹配指定范围内或者属于方括号所指定的集合中的任意单个字符
_:匹配一个字符
[^]:匹配不在方括号之间指定的范围或集合内的任何单个字符
%:匹配包含零个或多个字符的任意字符串

4.利用 BETWEEN…AND 运算符表示数据的范围能否与其他方法表示?怎样表示?

score BETWEEN 80 AND 90

《数据库原理MySQL》第三次上机实验相关推荐

  1. 数据库原理—数据模型(三)

    数据库原理-数据模型(三)

  2. 南京邮电大学微型计算机原理与接口技术实验,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全).pdf...

    南京邮电⼤学 <微型计算机原理与接⼝技术> 上机实验 汇编语⾔参考程序(四次全) 1 第⼀次 • 实验 1.3.1 "排除语法错误" • 实验 3.1.1 " ...

  3. 微型计算机排除语法错误,南京邮电大学《微机原理与接口技术》上机实验参考答案(四次全)...

    南京邮电大学<微型计算机原理与接口技术>上机实验答案.包含全部四次试验内容,涵盖汇编语言源程序和硬件连接指导等. 第 一次 实验1.3.1 "排除语法错误" 实验3.1 ...

  4. 配置数据库jdbc:mysql:///(三条斜线),用户访问被拒绝

    jdbc:mysql:///(三条斜线)等同于jdbc:mysql://localhost:3306/,默认端口号为3306. 因mysql已设置端口号3307,因此出现以下报错信息: Access ...

  5. 南京廖华里mysql测试题1答案_数据库原理(一)研讨、实验、作业题安排

    第4周(第四章:数据更新.视图.嵌入式SQL部分自学) 一.实验课: 1. 建立计算机学院总评不及格成绩学生的视图,包括学生学号.姓名.性别.手机.所选 课程和成绩. 2. 在E表中插入记录,把每个学 ...

  6. mysql储存过程是什么意思_数据库原理mysql储存过程

    如大家所知道的,Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE. 那么,这几种索引有什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyI ...

  7. 数据库原理及应用-李唯唯主编-实验3-2

    实验3-2 一.实验目的与要求 掌握单表查询 掌握多表连接查询 掌握子查询.集合查询. 掌握派生表查询. 掌握聚合函数使用方法 二.实验内容 实验平台: 操作系统:windows11 数据库:MySQ ...

  8. 数据库原理及应用-李唯唯主编-实验3-4

    实验3-4 数据更新 一.实验目的与要求 掌握插入数据.删除数据.修改数据 掌握实验子查询插入数据.更新数据 二.实验内容 实验平台: 操作系统:windows11 数据库:MySQL8 数据库管理平 ...

  9. 第三次上机实验报告(个人所得税计算器)

    * 文件名称: 个人所得税计算器 * 作    者:  赖诗文 * 完成日期:2016 年4 月 7 日  * 版 本 号:v1.0  * 对任务及求解方法的描述部分:个人所得税计算器 * 输入描述: ...

  10. c++第三次上机实验项目四

    /* * 文件名称:计算分段函数的值 * 作 者: 谢文锐* 完成日期: 2016 年 4 月 7 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:求分段函数的值,用选择结构* 输入描述 ...

最新文章

  1. JVM最多支持多少个线程?
  2. .net中窗体之间的数据交换总结
  3. linux kernel的中断子系统之(三):IRQ number和中断描述符【转】
  4. java.lang.NoSuchMethodError: org.junit.runner.Description.getClassName()Ljava/lang/String;
  5. EIGRP Metric计算
  6. British Journal of Management
  7. 微信小程序实现文件下载 以及微信小程序保存Excel
  8. 通俗易懂,买一次西瓜就懂 Python
  9. sublime用cmd窗口调试python_Sublime Text设置程序输出窗口为dos窗口
  10. (99)利用任务task实现单字节乘法功能,面试必问(二十三)(第20天)
  11. matlab结构体构建,matlab 怎么建立结构体数组?
  12. java并发编程(1)--线程 可见性 volatile怎么用
  13. 【网络安全】考试试卷十一
  14. Unity3D图像后处理特效——Crease
  15. skype 无法连接
  16. nodejs 读取写入 plist 文件,使用 plist npm 包
  17. 让孩子喜欢科学的31部少儿科普书籍
  18. 浅谈尾调用和尾递归(C语言)
  19. python+selenium自动化脚本例子
  20. 笔试中怎么答产品设计类题目

热门文章

  1. 51单片机采用ADC0808检测ADC_LCD1602显示
  2. 9008刷机模式写入超时刷机帮_【转】高通9008模式刷机,让小米刷机不再畏惧
  3. 基于国土“三调”成果的自然资源开发利用和保护的综合研究
  4. 【解决】解决每次打开Office 2013都提示配置进度的解决方法
  5. BPSK调制与解调-MATLAB基带仿真
  6. linux系统下Gaussian16和Gaussian view6的详细安装步骤
  7. 教科书级别的软件推荐
  8. 工具 IDA Pro
  9. 使用U盘制作纯dos系统
  10. Xshell连接服务器编写代码(windows+Xshell+阿里云主机)