[MySQL光速入门]007 作业解答
创建数据库library
创建数据表
图书类别表(
booktype
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
typeid
|
类别编号 |
int
|
not null
|
主键 |
2 |
typename
|
类别名称 |
varchar(20)
|
null
|
图书信息表(
book
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
bookid
|
图书编号 |
char(10)
|
not null
|
主键 |
2 |
bookname
|
图书名称 |
varchar(20)
|
not null
|
|
3 |
typeid
|
类别编号 |
int
|
null
|
外键 |
4 |
bookauthor
|
图书作者 |
varchar(20)
|
null
|
|
5 |
bookpublisher
|
出版社 |
varchar(50)
|
null
|
|
6 |
bookprice
|
图书价格 |
doublue
|
null
|
|
7 |
borrowsum
|
借阅次数 |
int
|
null
|
图书存储信息表(
bookstorage
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
bookbarcode
|
图书条码 |
char(20)
|
not null
|
主键 |
2 |
bookid
|
图书编号 |
char(10)
|
not null
|
外键 |
3 |
bookintime
|
图书入馆时间 |
datetime
|
null
|
|
4 |
bookstatus
|
图书状态 |
varchar(4)
|
null
|
读者类别表(
readertype
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
retypeid
|
类别编号 |
int
|
not null
|
|
2 |
typename
|
类别名称 |
varchar(20)
|
not null
|
|
3 |
borrowquantity
|
可借数量 |
int
|
not null
|
|
4 |
borrowday
|
可借天数 |
int
|
null
|
读者信息表(
reader
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
readerid
|
读者编号 |
char(10)
|
not null
|
主键 |
2 |
readername
|
读者姓名 |
varchar(20)
|
not null
|
|
3 |
readerpass
|
读者密码 |
varchar(20)
|
not null
|
|
4 |
retypeid
|
类别编号 |
int
|
null
|
外键 |
5 |
readerdate
|
发证日期 |
datetime
|
null
|
|
6 |
readerstatus
|
借书证状态 |
varchar(4)
|
null
|
图书借阅表(
bookborrow
)
序号 | 属性名称 | 含义 | 数据类型 | 是否为空 | 备注 |
---|---|---|---|---|---|
1 |
borrowid
|
借阅号 |
char(10)
|
not null
|
主键 |
2 |
bookbarcode
|
图书条码 |
char(20)
|
not null
|
外键 |
3 |
readerid
|
读者编号 |
char(10)
|
not null
|
外键 |
4 |
borrowtime
|
借书日期 |
datetime
|
null
|
|
5 |
returntime
|
还书日期 |
datetime
|
null
|
|
6 |
borrowstatus
|
借阅状态 |
varchar(4)
|
null
|
为创建的表插入如下数据
图书类别表(
booktype
)
typeid
|
typename
|
---|---|
1 | 自然科学 |
2 | 数学 |
3 | 计算机 |
4 | 建筑水利 |
5 | 旅游地理 |
6 | 励志/自我实现 |
7 | 工业技术 |
8 | 基础医学 |
9 | 室内设计 |
10 | 人文景观 |
图书信息表(
book
)
bookid
|
bookname
|
typeid
|
bookauthor
|
bookpublisher
|
bookprice
|
borrowsum
|
---|---|---|---|---|---|---|
TP39/1712 | Java程序设计 | 3 | 陈永红 | 机械工业出版社 | 35.5 | 30 |
013452 | 离散数学 | 2 | 张小新 | 机械工业出版社 | 45.5 | 10 |
TP/3452 | JSP程序设计案例 | 3 | 刘城清 | 电子工业出版社 | 42.8 | 8 |
TH/2345 | 机械设计手册 | 7 | 黄明凡 | 人民邮电出版社 | 40 | 10 |
R/345677 | 中医的故事 | 8 | 李奇德 | 国防工业出版社 | 20.0 | 5 |
图书存储信息表(
bookstorage
)
bookbarcode
|
bookid
|
bookintime
|
bookstatus
|
---|---|---|---|
132782 | TP39/1712 | 2009-08-10 00:00:00 | 在馆 |
132789 | TP39/1712 | 2009-08-10 00:00:00 | 借出 |
145234 | 013452 | 2008-12-06 00:00:00 | 借出 |
145321 | TP/3452 | 2007-11-04 00:00:00 | 借出 |
156833 | TH/2345 | 2009-12-04 00:00:00 | 借出 |
345214 | R/345677 | 2008-11-03 00:00:00 | 在馆 |
读者类别表(
readertype
)
retypeid
|
typename
|
borrowquantity
|
borrowday
|
---|---|---|---|
1 | 学生 | 10 | 30 |
2 | 教师 | 20 | 60 |
3 | 管理员 | 15 | 30 |
4 | 职工 | 15 | 20 |
读者信息表(
reader
)
readerid
|
readername
|
readerpass
|
retypeid
|
readerdate
|
readerstatus
|
---|---|---|---|---|---|
0016 | 苏小东 | 123456 | 1 | 1999-09-09 00:00:00 | 有效 |
0017 | 张明 | 123456 | 1 | 2010-09-10 00:00:00 | 有效 |
0018 | 梁君红 | 123456 | 1 | 2010-09-10 00:00:00 | 有效 |
0021 | 赵清远 | 123456 | 2 | 2010-07-01 00:00:00 | 有效 |
0034 | 李瑞清 | 123456 | 3 | 2009-08-03 00:00:00 | 有效 |
0042 | 张明月 | 123456 | 4 | 1997-04-23 00:00:00 | 有效 |
图书借阅表(
bookborrow
)
borrowid
|
bookbarcode
|
readerid
|
borrowtime
|
returntime
|
borrowstatus
|
---|---|---|---|---|---|
001328 | 132789 | 0017 | 2011-01-24 00:00:00 | 2011-02-28 00:00:00 | 已还 |
001356 | 145234 | 0018 | 2011-02-12 00:00:00 | 2011-02-27 00:00:00 | 已还 |
001432 | 132782 | 0016 | 2011-03-04 00:00:00 | 2011-04-05 00:00:00 | 已还 |
001435 | 145321 | 0021 | 2011-08-09 00:00:00 | 2011-09-02 00:00:00 | 已还 |
001578 | 156833 | 0034 | 2011-10-01 00:00:00 | 2011-11-01 00:00:00 | 未还 |
001679 | 345214 | 0042 | 2011-02-21 00:00:00 | 2011-03-05 00:00:00 | 未还 |
查询数据
1 查询book
表的书号
, 书名
和借出数量
select `bookid`,`bookname`,`borrowsum` from book;
复制代码
2 用别名查询book
表的书号
, 书名
和借出数量
select `bookid` as 书号,`bookname` as 书名,`borrowsum` as 借出数量 from book;
复制代码
3 查询类型是学生
的所有读者的信息
select * from reader where retypeid = 1;
复制代码
4 查询借出时间在2011年3月1日
和2011年10月1日
之间的图书
select * from bookborrow where borrowtime >= '2011-3-1' and borrowtime <= '2011-10-1';
复制代码
5 查询借出时间在2011年3月1日
之后并且还书时间在2011年10月1日
之前的图书
select * from bookborrow where borrowtime >= '2011-3-1' and returntime <= '2011-10-1';
复制代码
6 in
关键字查询类型是老师
或者学生
的读者信息
select * from reader where retypeid in (1,2);
复制代码
7 查询书名包含程序
的图书信息
select * from book where bookname like '%程序%';
复制代码
8 查询借出数量排名前3
的图书
select * from book order by borrowsum desc limit 3;
复制代码
9 按图书借出数量从高到低查询, 如果借出数量相同, 再按价格高低排序
select * from book order by borrowsum desc,bookprice desc;
复制代码
10 查找图书表中从第2条记录开始的5条记录的名称和价格
select bookname,bookprice from book limit 1,5;
复制代码
11 按照读者类型分组查询借出图书的数量
SELECTreader.retypeid,count( * )
FROMbookborrowJOIN reader ON reader.readerid = bookborrow.readerid
GROUP BYreader.retypeid;
复制代码
12 查询各个出版社
的图书的平均价格
select bookpublisher,avg(bookprice) from book group by bookpublisher;
复制代码
13 查询读者编号是0021
的读者借书的信息,包括读者名, 图书号, 借出时间和归还时间
SELECTreader.readername,bookstorage.bookid,bookborrow.borrowtime,bookborrow.returntime
FROMreaderJOIN bookborrow ON bookborrow.readerid = reader.readeridJOIN bookstorage ON bookstorage.bookbarcode = bookborrow.bookbarcode
WHEREreader.readerid = '0021';
复制代码
14 查询所有读者的借书信息, 包括读者名, 图书名, 借出时间和归还时间
SELECTreader.readername,book.bookname,bookstorage.bookid,bookborrow.borrowtime,bookborrow.returntime
FROMreaderJOIN bookborrow ON bookborrow.readerid = reader.readeridJOIN bookstorage ON bookstorage.bookbarcode = bookborrow.bookbarcodeJOIN book ON book.bookid = bookstorage.bookid;
复制代码
15 查询借出数量大于书籍编号为TP/3452
的借出数量的图书信息
select * from book where borrowsum > (select borrowsum from book where bookid = 'TP/3452');
复制代码
16 查询已借了图书的读者信息
select * from reader where readerid in (select readerid from bookborrow WHERE borrowstatus = '未还');
复制代码
创建数据库stucourse
没有表结构, 根据数据, 自己决定使用哪种数据类型
学生表(
student
)
sid
|
sname
|
sex
|
age
|
dept
|
---|---|---|---|---|
1001 | 宋江 | 男 | 25 | 计算机系 |
3002 | 张明 | 男 | 23 | 生物系 |
1003 | 李小鹏 | 男 | 26 | 计算机系 |
1004 | 郑冬 | 女 | 25 | 计算机系 |
4005 | 李晓红 | 女 | 27 | 工商管理 |
5006 | 赵紫月 | 女 | 24 | 外语系 |
教师表(
teacher
)
tid
|
tname
|
title
|
salary
|
dept
|
cid
|
---|---|---|---|---|---|
3102 | 李明 | 初级 | 2500 | 计算机系 | C1 |
3108 | 黄晓明 | 初级 | 4000 | 生物系 | C3 |
4105 | 张晓红 | 中级 | 3500 | 工商管理 | C2 |
5102 | 宋力跃 | 高级 | 3500 | 物理系 | C4 |
3106 | 赵明阳 | 初级 | 1500 | 地理系 | C2 |
7108 | 张丽 | 高级 | 3500 | 生物系 | C3 |
9103 | 王彬 | 高级 | 3500 | 计算机系 | C1 |
7101 | 王力号 | 初级 | 1800 | 生物系 | C1 |
课程表(
courseinfo
)
cid
|
cname
|
cbook
|
ctest
|
dept
|
---|---|---|---|---|
C1
|
计算机基础 |
b1231
|
2009-4-6 | 计算机系 |
C2
|
工商管理基础 |
b1232
|
2009-7-16 | 工商管理 |
C3
|
生物科学 |
b1233
|
2010-3-6 | 生物系 |
C4
|
大学物理 |
b1234
|
2009-4-26 | 物理系 |
C5
|
数据库原理 |
b1235
|
2010-2-6 | 计算机系 |
选课表(
scourse
)
sid
|
score
|
cid
|
tid
|
---|---|---|---|
1001 | 87 |
C1
|
3102 |
1001 | 77 |
C2
|
4105 |
1001 | 63 |
C3
|
3108 |
1001 | 56 |
C4
|
5102 |
3002 | 78 |
C3
|
3108 |
3002 | 78 |
C4
|
5102 |
1003 | 89 |
C1
|
9103 |
1004 | 56 |
C2
|
3106 |
4005 | 87 |
C4
|
5102 |
5006 |
null
|
C1
|
7101 |
教材表(
bookinfo
)
bid
|
bname
|
bpublish
|
bprice
|
quantity
|
---|---|---|---|---|
b1231
|
Image Processing
|
人民大学出版社 | 34.56 | 8 |
b1212
|
Signal Processing
|
清华大学出版社 | 51.75 | 10 |
b1233
|
Digital Signal Processing
|
邮电出版社 | 48.5 | 11 |
b1234
|
The Logic Circuit
|
北大出版社 | 49.2 | 40 |
b1235
|
SQL Techniques
|
邮电出版社 | 65.4 | 20 |
查询数据
查询全体学生的
学号
,姓名
和年龄
select sid,sname,age from student; 复制代码
查询选修了课程的
学生号
select sid from student where sid in (select sid from scourse); 复制代码
查询选修课程号
c3
的学号
和成绩
select sid, score from scourse where cid = 'C3'; 复制代码
查询成绩高于
85分
的学生的学号
,课程号
和成绩
SELECTsid,score,cid FROMscourse WHEREscore > 85; 复制代码
查询没有选修
C1
也没有选修C2
的学生学号
,课程号
和成绩
SELECTsid,score,cid FROMscourse WHEREcid NOT IN ( 'c1', 'c2' ); 复制代码
查询工资在1500~2000之间的教师的
教师号
,姓名
和职称
SELECTtid,tname,title FROMteacher WHEREsalary BETWEEN 1500 AND 2000; 复制代码
查询选修
C1
或C2
的学生的学号
,课程号
和成绩
SELECTsid,score,cid FROMscourse WHEREcid IN ( 'c1', 'c2' ); 复制代码
查询所有
姓张
的教师的教师号
和姓名
SELECTteacher.tid,teacher.tname FROMteacher WHEREteacher.tname LIKE '张%'; 复制代码
查询姓名中第2个汉字是
力
的教师号
和姓名
SELECTteacher.tid,teacher.tname FROMteacher WHEREteacher.tname LIKE '_力%'; 复制代码
查询所有没有成绩的学生的
学号
和相应的课程号
SELECTsid,cid FROMscourse WHEREscore IS NULL; 复制代码
查询选修
C1
的学生学号
和成绩
,并按照成绩降序排列SELECTsid,score FROMscourse WHEREcid = 'C1' ORDER BYscore DESC; 复制代码
查询选修
C2
,或者C3
,或者C4
,或者C5
课程的学号
,课程号
和成绩
, 查询结果按学号升序
排列,学号相同,再按成绩降序排列
SELECTsid,cid,score FROMscourse WHEREcid IN ( 'C2', 'C3', 'C4', 'C5' ) ORDER BYsid,score DESC; 复制代码
查询选修
C1
的学生学号
和成绩
,并显示成绩前三的学生SELECTsid,score FROMscourse WHEREcid = 'C1' ORDER BYscore DESC LIMIT 3; 复制代码
查询计算机系学生的总数
SELECTcount( * ) FROMstudent WHEREdept = '计算机系'; 复制代码
查询每位学生的
学号
及其选修课的门数SELECTsid,count( * ) FROMscourse GROUP BYsid; 复制代码
在分组查询中使用
having
条件查询,平均成绩大于85的学生学号
及平均成绩
SELECTsid,avg( score ) FROMscourse GROUP BYsid HAVINGavg( score ) > 85; 复制代码
查询选课在两门以上且各门课均及格的学生的学号及其总成绩, 查询结果按总成绩
降序列出
SELECTsid,count( * ),sum( score ) FROMscourse WHEREscore > 60 and sid not in (select sid from scourse where score < 60) GROUP BYsid HAVINGcount( * ) > 2 ORDER BYsum( score ) DESC; 复制代码
查询所有选课学生的
学号
,姓名
,选课名称
及成绩
SELECTstudent.sid,student.sname,scourse.cid,scourse.score FROMscourse,student WHEREstudent.sid = scourse.sid; 复制代码
查询选修
C1
课程且成绩在60以上的所有学生的学号
,姓名
和分数
SELECTstudent.sid,student.sname,scourse.score,scourse.cid FROMstudentJOIN scourse ON scourse.sid = student.sid WHEREscourse.cid = 'C1' AND scourse.score > 60; 复制代码
查询与
李明
教师职称相同的教师号
,姓名
SELECTteacher.tid,teacher.tname,teacher.title FROMteacher WHEREteacher.title = ( SELECT title FROM teacher WHERE tname = '李明' ) AND teacher.tname != '李明'; 复制代码
快速跳转
- [MySQL光速入门]006 留点作业...
- [MySQL光速入门]008 SQL强化练习
转载于:https://juejin.im/post/5c9b301f518825529a0c78ff
[MySQL光速入门]007 作业解答相关推荐
- [MySQL光速入门]012 作业解答
实训内容二 使用算数运算符-, 查询最低借阅量与最高借阅量的差值 select max(borrowsum)-min(borrowsum) as 差值 from book; 复制代码 使用比较运算符( ...
- [MySQL光速入门]004 作业解答
创建数据库library create database library character set utf8; use library; 复制代码 创建数据表 图书类别表(booktype) 序号 ...
- [MySQL光速入门]003 留点作业...
创建数据库library 创建数据表 图书类别表(booktype) 序号 属性名称 含义 数据类型 是否为空 备注 1 typeid 类别编号 int not null 主键 2 typename ...
- [MySQL光速入门]020 事务
TCL 事务控制语言 SQL的四种语言 DDL(Data Definition Language)数据库定义语言 建表, 建库, 修改表结构 DML(Data Manipulation Languag ...
- mysql的第一次作业_数据库入门第一次作业 - osc_2frf70qv的个人空间 - OSCHINA - 中文开源技术交流社区...
数据库入门第一次作业 1.在某大学的<>中,用如下表来存储学生信息.其中,用户信息.星座信息和血型信息分别采用Users.Star和Blood三个表来保存,其中Users表引用了Star和 ...
- 光速入门MyBatis-Plus
光速入门MyBatis-Plus 0.特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRU ...
- 3000门徒内部训练绝密视频(泄密版)第1课:大数据最火爆语言Scala光速入门
大数据最火爆语言Scala光速入门 scala 可以使用java的库 scala 的工厂方法:apply 条件表达式有返回值 数组可以用to ,箭头 <- 最后一行内容的值是整个代码块的返回值 ...
- 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐,业界广告推荐技术最新进展
搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排).系统架构.常见问题.算法项目实战总结.技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排 ...
- mysql从入门到精通之数据库安装图解
Mysql是基于C/S架构的.客户端/服务器Clinent /Server 安装版本建议:对于开源软件,不要追求最新的版本,最好是经过线上测试比较稳定的,也就是生产环境中的稳定版的,请务必选用稳定版本 ...
最新文章
- android studio安装中出现Failed to install Intel HAXM错误的解决方法
- 第二阶段团队项目冲刺第六天
- spring31-1: 事务-传播行为
- 《算法基础》——2.3 求幂运算
- 李宏毅深度学习——第一天
- SQL Server 2008带字段注释导入Power Designer 9.5
- JZOJ 5699. 【gdoi2018 day1】涛涛接苹果(appletree)
- 关闭 Adobe Flash 沙箱(保护模式)解决Flash崩溃及卡顿问题
- 一种全数字实时仿真的安全关键领域解决方案
- LLVM 核心类简明示例
- php curl设置headers,php curl如何设置头部信息
- 使用WinMTR软件简单分析跟踪检测网络路由情况
- 关卡 - Aragami关卡设计
- kibana日志收集
- stm32usb做虚拟串口和键盘_在MINI STM32 板子上实现USB虚拟串口
- 海贼王剧场版:Z 剧情详解(附TS无字幕版地址)
- GitHub开源:支持100多种语言的OCR文字识别
- java中的double 类型数据相加问题
- Unity实现幸运大转盘
- PageHelper 插件踩过的坑