day03_mysql_课后练习 - 参考答案
day03_mysql_课后练习
mysql练习题
第1题
案例:
1、创建一个数据库:day03_test01_school
2、创建如下表格
表1 Department表的定义
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 |
---|---|---|---|---|---|---|
DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 |
DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 |
DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 |
表2 Teacher表的定义
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 |
---|---|---|---|---|---|---|
Number | 教工号 | int | 是 | 否 | 是 | 是 |
Name | 姓名 | varchar(30) | 否 | 否 | 是 | 否 |
Sex | 性别 | varchar(4) | 否 | 否 | 否 | 否 |
Birth | 出生日期 | date | 否 | 否 | 否 | 否 |
DepNo | 部门号 | int | 否 | 是 | 否 | 否 |
Salary | 工资 | float | 否 | 否 | 否 | 否 |
Address | 家庭住址 | varchar(100) | 否 | 否 | 否 | 否 |
3、添加记录
DepNo | DepName | DepNote |
---|---|---|
601 | 软件技术系 | 软件技术等专业 |
602 | 网络技术系 | 多媒体技术等专业 |
603 | 艺术设计系 | 广告艺术设计等专业 |
604 | 管理工程系 | 连锁经营管理等专业 |
Number | Name | Sex | Birth | DepNo | Salary | Address |
---|---|---|---|---|---|---|
2001 | Tom | 女 | 1970-01-10 | 602 | 4500 | 四川省绵阳市 |
2002 | Lucy | 男 | 1983-12-18 | 601 | 2500 | 北京市昌平区 |
2003 | Mike | 男 | 1990-06-01 | 604 | 1500 | 重庆市渝中区 |
2004 | James | 女 | 1980-10-20 | 602 | 3500 | 四川省成都市 |
2005 | Jack | 男 | 1975-05-30 | 603 | 1200 | 重庆市南岸区 |
4、用SELECT语句查询Teacher表的所有记录。
5、找出所有其家庭地址中含有“北京”的教师的教工号及部门名称,要求显示结果中各列标题用中文别名表示。
6、获得Teacher表中工资最高的教工号和姓名。
7、找出所有收入在2500~4000之间的教工号。
8、查找在网络技术系工作的教师的姓名、性别和工资。
#创建一个数据库:day03_test01_school
CREATE DATABASE day03_test01_school;#使用数据库
USE day03_test01_school;#创建表格
-- 部门信息表Department
CREATE TABLE Department(DepNo INT(10) PRIMARY KEY,DepName VARCHAR(20) NOT NULL,DepNote VARCHAR(50)
);
-- 创建数据表Teacher
CREATE TABLE Teacher(Number INT PRIMARY KEY,`Name` VARCHAR(30) UNIQUE,Sex VARCHAR(4),Birth DATE,DepNo INT,Salary FLOAT,Address VARCHAR(100),FOREIGN KEY (DepNo) REFERENCES Department(DepNo)
);
-- 将表4的内容插入Department表中
INSERT INTO Department VALUES (601,'软件技术系','软件技术等专业');
INSERT INTO Department VALUES (602,'网络技术系','多媒体技术等专业');
INSERT INTO Department VALUES (603,'艺术设计系','广告艺术设计等专业');
INSERT INTO Department VALUES (604,'管理工程系','连锁经营管理等专业');
-- 将表3的内容插入Teacher表中。
INSERT INTO Teacher VALUES(2001,'Tom','女','1970-01-10',602,4500,'四川省绵阳市');
INSERT INTO Teacher VALUES(2002,'Lucy','男','1983-12-18',601,2500,'北京市昌平区');
INSERT INTO Teacher VALUES(2003,'Mike','男','1990-06-01',604,1500,'重庆市渝中区');
INSERT INTO Teacher VALUES(2004,'James','女','1980-10-20',602,3500,'四川省成都市');
INSERT INTO Teacher VALUES(2005,'Jack','男','1975-05-30',603,1200,'重庆市南岸区');#用SELECT语句查询Teacher表的所有记录。
SELECT * FROM teacher;#找出所有其家庭地址中含有“北京”的教师的教工号及部门名称,要求显示结果中各列标题用中文表示。
SELECT number AS 教工号,Teacher.depno AS 部门名称
FROM Teacher INNER JOIN Department
ON Teacher.DepNo = Department.DepNo
WHERE address LIKE '%北京%';#获得Teacher表中工资最高的教工号和姓名。
SELECT number,`name` FROM teacher WHERE salary = (SELECT MAX(salary) FROM teacher);
SELECT number,`name` FROM teacher ORDER BY salary DESC LIMIT 0,1;#找出所有收入在2500~4000之间的教工号。
SELECT number FROM teacher WHERE salary BETWEEN 2500 AND 4000;#查找在网络技术系工作的教师的姓名、性别和工资。
SELECT `name`,sex,salary FROM teacher
WHERE depno=(SELECT depno FROM department WHERE depname='网络技术系');SELECT `name`,sex,salary
FROM teacher INNER JOIN department
ON teacher.depno = department.depno
WHERE depname ='网络技术系';
第2题
案例:
1、建立数据库day03_test02_student
2、建立以下三张表,并插入记录
Table:Classes
专业 | 班级 | 姓名 | 姓别 | 座位 |
---|---|---|---|---|
计算机网络 | 1班 | 张三 | 男 | 8 |
软件工程 | 2班 | 李四 | 男 | 12 |
计算机维护 | 1班 | 王五 | 男 | 9 |
计算机网络 | 2班 | LILY | 女 | 15 |
软件工程 | 1班 | 小强 | 男 | 20 |
计算机维护 | 1班 | CoCo | 女 | 18 |
Table:Score
姓名 | 英语 | 数学 | 语文 |
---|---|---|---|
张三 | 65 | 75 | 98 |
李四 | 87 | 45 | 86 |
王五 | 98 | 85 | 65 |
LILY | 75 | 86 | 87 |
小强 | 85 | 60 | 58 |
CoCo | 96 | 87 | 70 |
Table: Records
姓名 | 记录 |
---|---|
小强 | 迟到 |
小强 | 事假 |
李四 | 旷课 |
李四 | 旷课 |
李四 | 迟到 |
CoCo | 病假 |
LILY | 事假 |
要求3:写出将张三的语文成绩修改为88的SQL语句。
要求4:搜索出计算机维护1班各门课程的平均成绩。
要求5:搜索科目有不及格的人的名单。
要求6:查询记录2次以上的学生的姓名和各科成绩。
#建立数据库day03_test02_student
CREATE DATABASE day03_test02_student;#使用数据库
USE day03_test02_student;#创建表格并添加记录
CREATE TABLE Classes(Pro_name VARCHAR(20) NOT NULL,Grade VARCHAR(10) NOT NULL,`name` VARCHAR(10) NOT NULL,sex VARCHAR(4) NOT NULL,seat INT(10) NOT NULL UNIQUE
);
CREATE TABLE Score(`name` VARCHAR(10) NOT NULL,En_score INT(10) NOT NULL,Ma_score INT(10) NOT NULL,Ch_score INT(10) NOT NULL
);
CREATE TABLE Records(`name` VARCHAR(10) NOT NULL,record VARCHAR(10)
);-- 向classes中添加数据
INSERT INTO classes VALUES('计算机网络','1班','张三','男',8);
INSERT INTO classes VALUES('软件工程','2班','李四','男',12);
INSERT INTO classes VALUES('计算机维护','1班','王五','男',9);
INSERT INTO classes VALUES('计算机网络','2班','LILY','女',15);
INSERT INTO classes VALUES('软件工程','1班','小强','男',20);
INSERT INTO classes VALUES('计算机维护','1班','CoCo','女',18);-- 向score中添加数据
INSERT INTO Score VALUES('张三',65,75,98);
INSERT INTO Score VALUES('李四',87,45,86);
INSERT INTO Score VALUES('王五',98,85,65);
INSERT INTO Score VALUES('LILY',75,86,87);
INSERT INTO Score VALUES('小强',85,60,58);
INSERT INTO Score VALUES('CoCo',96,87,70);-- 向records中添加数据
INSERT INTO records VALUES('小强','迟到');
INSERT INTO records VALUES('小强','事假');
INSERT INTO records VALUES('李四','旷课');
INSERT INTO records VALUES('李四','旷课');
INSERT INTO records VALUES('李四','迟到');
INSERT INTO records VALUES('CoCo','病假');
INSERT INTO records VALUES('LILY','事假');#要求3:写出将张三的语文成绩修改为88的SQL语句。
UPDATE score SET ch_score=88 WHERE `name`='张三';#要求4:搜索出计算机维护1班各门课程的平均成绩。
SELECT AVG(en_score),AVG(ma_score),AVG(ch_score) FROM score
WHERE `name` IN (SELECT `name` FROM classes WHERE Pro_name='计算机维护' AND grade='1班');#要求5:搜索科目有不及格的人的名单。
SELECT `name` FROM score WHERE en_score<60 OR ma_score<60 OR ch_score<60;#要求6:查询记录2次以上的学生的姓名和各科成绩。
SELECT *
FROM score INNER JOIN
(SELECT `name`,COUNT(*) FROM Records GROUP BY `name` HAVING COUNT(*)>2) temp
ON score.name = temp.name;
第3题
案例:
1、建立数据库:day03_test03_xuankedb
2、建立如下三张表:
学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个字段,Sno 为关键字。
课程表Course由课程号(Cno)、课程名(Cname)、选修课号(Cpno)、学分(Ccredit)四个字段,Cno为关键字。
成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个字段,(SNO, CNO)为关键字。
3、向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
4、查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
5、查询学习1号课程的学生最高分数、平均成绩。
6、查询与“李洋”在同一个系学习的学生。
7、将计算机系全体学生的成绩置零。
8、删除学生表中学号为05019的学生记录。
9、删除计算机系所有学生的成绩记录。
-- 创建一个数据库:day03_test03_xuankedb
CREATE DATABASE day03_test03_xuankedb;-- 使用数据库
USE day03_test03_xuankedb;-- 创建学生表
CREATE TABLE student(sno INT(10) PRIMARY KEY,sname VARCHAR(10),ssex VARCHAR(10),sage INT(10),sdept VARCHAR(40)
);-- 创建课程表
CREATE TABLE course(cno INT(10) PRIMARY KEY,cname VARCHAR(20),cpno VARCHAR(40),ccredit INT(20)
);-- 创建成绩表
CREATE TABLE sg(sno INT(10),cno INT(10),grade INT(3),PRIMARY KEY(sno,cno),CONSTRAINT stu_s_sno_fk FOREIGN KEY (sno) REFERENCES student(sno),CONSTRAINT cou_s_sno_fk FOREIGN KEY (cno) REFERENCES course(cno)
);#3.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
ALTER TABLE student ADD COLUMN scome DATE;#4.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
SELECT sno,grade FROM sg WHERE cno=3 ORDER BY grade DESC;#5.查询学习1号课程的学生最高分数、平均成绩。
SELECT MAX(grade),AVG(grade) FROM sg WHERE cno=1;#6.查询与“李洋”在同一个系学习的学生。
SELECT * FROM student WHERE sdept=(SELECT sdept FROM student WHERE sname='李洋');#7.将计算机系全体学生的成绩置零。
UPDATE sg SET grade=0 WHERE sno IN (SELECT sno FROM student WHERE sdept='计算机系')#8.删除学生表中学号为05019的学生记录。
DELETE FROM student WHERE sno=05019;#9.删除计算机系所有学生的成绩记录。
DELETE FROM sg WHERE sno IN (SELECT sno FROM student WHERE sdept='计算机系');
第4题
案例:
1、建立数据库:day03_test04_library
2、建立如下三个表:
表一:press 出版社
属性:编号pressid(int)、名称pressname(varchar)、地址address(varchar)
表二:sort 种类
属性:编号sortno(int)、数量scount(int)
表二:book图书
属性:编号bid(int)、名称 bname(varchar)、种类bsortno(int)、出版社编号pressid(int)
3、给sort表中添加一列属性:描述describes(varchar)
4、向三个表中各插入几条数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EBdarFlu-1637498058828)(imgs/1561121750984.png)]
5、查询出版社id为100的书的全部信息
6、查询出版社为外研社的书的全部信息
7、查询图书数量(scount)大于100的种类
8、查询图书种类最多的出版社信息
-- 建立数据库:day03_test04_library
CREATE DATABASE day03_test04_library;-- 使用数据库
USE day03_test04_library;-- 创建出版社表
CREATE TABLE press(pressid INT(10) PRIMARY KEY,pressname VARCHAR(30),address VARCHAR(50)
);-- 创建一个种类表
CREATE TABLE sort(sortno INT(10) PRIMARY KEY,scount INT(10)
);-- 创建图书表
CREATE TABLE book(bid INT(10) PRIMARY KEY,bname VARCHAR(40),bsortno INT(10),pressid INT(10),CONSTRAINT p_b_pid_fk FOREIGN KEY (pressid) REFERENCES press(pressid),CONSTRAINT s_b_sno_fk FOREIGN KEY (bsortno) REFERENCES sort(sortno)
);-- 添加一列属性
ALTER TABLE sort ADD COLUMN describes VARCHAR(30);-- 添加数据
INSERT INTO press VALUES(100,'外研社','上海');
INSERT INTO press VALUES(101,'北大出版社','北京');
INSERT INTO press VALUES(102,'教育出版社','北京');-- 添加数据
INSERT INTO sort(sortno,scount,describes)VALUES(11,50,'小说');
INSERT INTO sort(sortno,scount,describes)VALUES(12,300,'科幻');
INSERT INTO sort(sortno,scount,describes)VALUES(13,100,'神话');-- 添加数据
INSERT INTO book VALUES(1,'红与黑',11,100);
INSERT INTO book VALUES(2,'幻城',12,102);
INSERT INTO book VALUES(3,'希腊神话',13,102);
INSERT INTO book VALUES(4,'一千零一夜',13,102);#5.查询出版社id为100的书的全部信息
SELECT * FROM book WHERE pressid=100;#6.查询出版社为外研社的书的全部信息
SELECT * FROM book WHERE pressid=(SELECT pressid FROM press WHERE pressname='外研社');#7.查询图书数量(scount)大于100的种类
SELECT * FROM sort WHERE scount>100;#8.查询图书种类最多的出版社信息
SELECT * FROM press WHERE pressid=(SELECT temp.pressid FROM (SELECT pressid,MAX(t.c) FROM (SELECT pressid,COUNT(*) AS c FROM book GROUP BY pressid ORDER BY c DESC ) AS t) AS temp);SELECT * FROM press WHERE pressid=(
SELECT pressid
FROM (SELECT pressid,bsortno FROM book GROUP BY pressid,bsortno) temp
GROUP BY pressid
ORDER BY COUNT(*) DESC
LIMIT 0,1)
第5题
案例:
1、建立数据库:day03_test05_tour
2、建立如下两个表:
agency旅行社表:
列名(英文名) | 列名(中文名) | 数据类型 | 允许空值 | 说明 |
---|---|---|---|---|
Id | 旅行社编号 | int | no | 主键 |
Name | 旅行社名 | varchar | no | |
Address | 旅行社地址 | varchar | no | |
Areaid | 所属区域Id | Int | yes |
travel旅行线路表:
列名(英文名) | 列名(中文名) | 数据类型 | 允许空值 | 说明 |
---|---|---|---|---|
Tid | 旅行线路编号 | int | no | 主键 |
Time | 所需时间 | varchar | no | |
Position | 目的地 | varchar | no | |
Money | 花费 | Float | yes | |
Aid | 所属旅行社id | Int | no | 外键 |
Count | 报名人数 | Int | yes |
3、添加记录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nS53YFg5-1637498058831)(imgs/1561122070043.png)]
4、查出旅行线路最多的旅社
5、查出最热门的旅行线路(也就是查询出报名人数最多的线路)
6、查询花费少于5000的旅行线路
7、找到一次旅行花费最昂贵的旅行社名
8、查出青年旅社所有的旅行线路都玩一遍需要多少时间。
#建立数据库:day03_test05_tour
CREATE DATABASE day03_test05_tour;#使用数据库
USE day03_test05_tour;CREATE TABLE agency(id INT PRIMARY KEY NOT NULL,NAME VARCHAR(20) NOT NULL,address VARCHAR(100) NOT NULL,areaid INT
);CREATE TABLE trval(tid INT PRIMARY KEY NOT NULL,TIME VARCHAR(50) NOT NULL,POSITION VARCHAR(100) NOT NULL,money FLOAT,aid INT NOT NULL,rcount INT,CONSTRAINT bk_aid FOREIGN KEY trval(aid) REFERENCES agency(id)
);INSERT INTO agency(id,NAME,address) VALUES (101,'青年旅行社','北京海淀');
INSERT INTO agency(id,NAME,address) VALUES (102,'天天旅行社','天津海院');INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (1,'5天','八达岭',3000,101,10);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (2,'7天','水长城',5000,101,14);
INSERT INTO trval(tid,TIME,POSITION,money,aid,rcount) VALUES (3,'8天','水长城',6000,102,11);SELECT * FROM agency;
SELECT * FROM trval;#4.查出旅行线路最多的旅社
SELECT *
FROM agency INNER JOIN
(SELECT t.aid,MAX(t.c) FROM (SELECT aid,COUNT(*) AS c FROM trval GROUP BY aid) AS t)temp
ON agency.id = temp.aid#5.查出最热门的旅行线路(也就是查询出报名人数最多的线路)
SELECT * FROM trval WHERE rcount=(SELECT MAX(rcount) FROM trval);#6.查询花费少于5000的旅行线路
SELECT * FROM trval WHERE money<5000;#7.找到一次旅行花费最昂贵的旅行社名
SELECT NAME FROM agency WHERE id =
(SELECT aid FROM trval WHERE money =(SELECT MAX(money) FROM trval ));#8.查出青年旅社所有的旅行线路都玩一遍需要多少时间。
SELECT SUM(TIME) FROM trval WHERE aid=(SELECT id FROM agency WHERE NAME='青年旅行社');
SELECT t.aid,MAX(t.c) FROM (SELECT aid,COUNT(*) AS c FROM trval GROUP BY aid) AS t)temp
ON agency.id = temp.aid
#5.查出最热门的旅行线路(也就是查询出报名人数最多的线路)
SELECT * FROM trval WHERE rcount=(SELECT MAX(rcount) FROM trval);
#6.查询花费少于5000的旅行线路
SELECT * FROM trval WHERE money<5000;
#7.找到一次旅行花费最昂贵的旅行社名
SELECT NAME FROM agency WHERE id =
(SELECT aid FROM trval WHERE money =(SELECT MAX(money) FROM trval ));
#8.查出青年旅社所有的旅行线路都玩一遍需要多少时间。
SELECT SUM(TIME) FROM trval WHERE aid=(SELECT id FROM agency WHERE NAME=‘青年旅行社’);
day03_mysql_课后练习 - 参考答案相关推荐
- 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...
浙江大学计算机科学基础课后习题参考答案new-PXY 第一章课后习题参考答案 一.填空题 处理.处理 黑盒.程序 输入设备.运算器.存储器.控制器.输出设备 运算器.控制器.中央处理器 存储器.数据 ...
- 排除网络故障课后习题参考答案
排除网络故障课后习题参考答案 (自己整理仅供参考) 1. 常见的操作系统主要有(Windows操作系统.UNIX操作系统.Linux操作系统.苹果操作系统) 2. 局域网故障诊断的方法主要有(连通性故 ...
- MITxPro平台 Base SPOC-MachineLearning, Modeling, and Simulation Principles 课后习题参考答案
提供该课程的课后习题参考答案,保证最终得分在95%以上,
- 计算机网络基础课后习题,《计算机网络技术基础》课后习题参考答案
广东海洋大学 高等院校计算机基础教育规划教材<计算机网络技术基础>课后习题参考答案 习题1参考答案 一.选择题 1.B 2.B 3.B 4.A 5.C 二.填空题 1.资源,通信 2.局域 ...
- 新农慕课python答案、第七周_优学院《作业治疗》完整答案中国大学慕课《农作学》课后作业参考答案...
优学院<作业治疗>完整答案中国大学慕课<农作学>课后作业参考答案 更多相关问题 [判断题]由点及面法是一种将典故.故事.传说等与景物介绍有机结合起来的讲解方法( ). A. 对 ...
- 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf
计算机英语实用教程课后题参考答案 课后 参考答案 unit 1 [Ex. 1]根据课文内容,回答以下问题: 1) It is primarily responsible for executing i ...
- 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.doc
计算机英语实用教程课后题参考答案 课后 参考答案 unit 1 [Ex. 1]根据课文内容,回答以下问题: 1) It is primarily responsible for executing i ...
- c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...
C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...
- 量纲对回归结果的影响_应用回归分析-第3章课后习题参考 答案.doc
应用回归分析-第3章课后习题参考 答案 第3章 多元线性回归 思考与练习参考答案 3.1 见教材P64-65 3.2 讨论样本容量n与自变量个数p的关系,它们对模型的参数估计有何影响? 答:在多元线性 ...
最新文章
- python模块导入
- 从零开始学习Sencha Touch MVC应用之七
- jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题
- ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
- C语言存储为2进制,浮点数的二进制存储形式及c语言验证
- 使C#代码现代化——第三部分:值
- C++socket编程(一):绪论
- Netflix 混沌工程手册 Part 3:实践方法
- Vijos P1097 合并果子【哈夫曼树+优先队列】
- 职业经理人-授权后才是管理的开始
- JAVA关于MD5加盐加密算法
- AC97声卡的驱动安装
- IMDB电影评论文本分类
- PIC单片机提示 No valid installed HI-TECH compiler drivers
- matlab升压斩波电路,升压斩波电路课程设计汇总
- Jvm面试题总结及答案 300道(2022年最新版 )
- python去除图片复杂背景_3行Python代码实现10秒抠图换背景图的AI神器,根本无需PS...
- uni-app 在mac电脑连接安卓手机进行真机调试
- 机器学习--最大熵模型
- java web中的中文乱码问题和解决方法