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_课后练习 - 参考答案相关推荐

  1. 计算机科学基础第二版答案,浙江大学计算机科学基础课后习题参考答案new-PXY.doc...

    浙江大学计算机科学基础课后习题参考答案new-PXY 第一章课后习题参考答案 一.填空题 处理.处理 黑盒.程序 输入设备.运算器.存储器.控制器.输出设备 运算器.控制器.中央处理器 存储器.数据 ...

  2. 排除网络故障课后习题参考答案

    排除网络故障课后习题参考答案 (自己整理仅供参考) 1. 常见的操作系统主要有(Windows操作系统.UNIX操作系统.Linux操作系统.苹果操作系统) 2. 局域网故障诊断的方法主要有(连通性故 ...

  3. MITxPro平台 Base SPOC-MachineLearning, Modeling, and Simulation Principles 课后习题参考答案

    提供该课程的课后习题参考答案,保证最终得分在95%以上,

  4. 计算机网络基础课后习题,《计算机网络技术基础》课后习题参考答案

    广东海洋大学 高等院校计算机基础教育规划教材<计算机网络技术基础>课后习题参考答案 习题1参考答案 一.选择题 1.B 2.B 3.B 4.A 5.C 二.填空题 1.资源,通信 2.局域 ...

  5. 新农慕课python答案、第七周_优学院《作业治疗》完整答案中国大学慕课《农作学》课后作业参考答案...

    优学院<作业治疗>完整答案中国大学慕课<农作学>课后作业参考答案 更多相关问题 [判断题]由点及面法是一种将典故.故事.传说等与景物介绍有机结合起来的讲解方法( ). A. 对 ...

  6. 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf

    计算机英语实用教程课后题参考答案 课后 参考答案 unit 1 [Ex. 1]根据课文内容,回答以下问题: 1) It is primarily responsible for executing i ...

  7. 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.doc

    计算机英语实用教程课后题参考答案 课后 参考答案 unit 1 [Ex. 1]根据课文内容,回答以下问题: 1) It is primarily responsible for executing i ...

  8. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  9. 量纲对回归结果的影响_应用回归分析-第3章课后习题参考 答案.doc

    应用回归分析-第3章课后习题参考 答案 第3章 多元线性回归 思考与练习参考答案 3.1 见教材P64-65 3.2 讨论样本容量n与自变量个数p的关系,它们对模型的参数估计有何影响? 答:在多元线性 ...

最新文章

  1. python模块导入
  2. 从零开始学习Sencha Touch MVC应用之七
  3. jsp springmvc 视图解析器_Springmvc中多视图解析器解析问题
  4. ORA-20000:ORU-10027:buffer overflow,limit of 2000 bytes.
  5. C语言存储为2进制,浮点数的二进制存储形式及c语言验证
  6. 使C#代码现代化——第三部分:值
  7. C++socket编程(一):绪论
  8. Netflix 混沌工程手册 Part 3:实践方法
  9. Vijos P1097 合并果子【哈夫曼树+优先队列】
  10. 职业经理人-授权后才是管理的开始
  11. JAVA关于MD5加盐加密算法
  12. AC97声卡的驱动安装
  13. IMDB电影评论文本分类
  14. PIC单片机提示 No valid installed HI-TECH compiler drivers
  15. matlab升压斩波电路,升压斩波电路课程设计汇总
  16. Jvm面试题总结及答案 300道(2022年最新版 )
  17. python去除图片复杂背景_3行Python代码实现10秒抠图换背景图的AI神器,根本无需PS...
  18. uni-app 在mac电脑连接安卓手机进行真机调试
  19. 机器学习--最大熵模型
  20. java web中的中文乱码问题和解决方法

热门文章

  1. JMeter从HTTP接口返回的参数中获取数据 - 使用Json提取器
  2. 最近公共祖先-三(RMQ-ST)
  3. Git 代码的审阅与提交
  4. 让DEV-C++更加帅气
  5. vivo春招java工程师Android方向实习生面试复盘
  6. 针对软件研发流程,我总结出的流水线生产方法论
  7. 数据包如何正确的发到目的地_如何免费装修网店和上传宝贝-上海装修报价
  8. c语言渊子赛马,经典算法---渊子赛马
  9. adb device无法识别的问题
  10. python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息