mysql怎么查询借阅相同图书_MySQL查询练习2
MySQL查询练习2
导读:
本次MySQL的查询语句是本人考试题目;
所有题目都已通过;
该查询练习并没有sql文件进行检查;
如果有书写以及其他错误欢迎指出。
题目正文:
1.找出借书超过5本的借阅信息
找出借书超过5本的借阅信息,输出借书卡号及所借图书数。
BORROW(借书记录)表 :CNO 借书卡号,BNO 书号,RDATE 还书日期
列含义 列名 类型 主键/外键
卡号 Cno Int 主键非空,参照card表的cno
书号 bno Int 主键非空,参照book表的bno
借书日期 rdate Datetime
表名请用小写。
select cno,count(*) from borrow group by cno having count(*)>5;
2.统计各专业的学生人数,要求输出系名,专业名,总人数,按系名排序。
[注意:SQL表名请用小写]表结构如下:
1、student(学生表):sno 学号 CHAR(9)
sname 姓名 CHAR(10)
ssex 性别 CHAR(2)
sage 年龄
SMALLINTjg 籍贯 VARCHAR(50)
zydh 专业代号 CHAR(4)
xdh 系代号 CHAR(2)
2、zy(专业表) zydh 专业代号 CHAR(4)
zymc 专业名称 VARCHAR(20)
xz 学制 SMALLINT
3、xb(系表) xdh 系代号 CHAR(2)
xmc 系名称 VARCHAR(20)
select xmc,zymc,count(*) from student s,xb,zy where s.zydh=zy.zydh
and s.xdh=xb.xdh group by xmc,zymc order by xb.xmc;
3.SQL查询:查询各个部门人数大于10人的,输出部门编号和人数,并按人数升序排序。
表结构如下:
select dept_id,COUNT(employee_id) as number from employee group by dept_id HAVING number>=10 order by number;
4.查询选修未通过2门(包括2门)以上的学生的信息,输出学号、姓名、选修未通过门数,按门数降序排序,若门数相同,按学号升序排序。
[注意:SQL表名请用小写]
SELECT student.sno,sname,count(*)
from student,sc
where student.sno=sc.sno
and grade<60
GROUP by sno
HAVING count(*)>=2
ORDER BY count(*) desc ,sno ;
5.查询每个学生高于他自己选修平均分的那门课程的成绩,输出学号,课程号,课程成绩,他所有课程的平均分(取整),并按学号升序排列。
[注意:SQL表名请用小写]
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
SELECT sc.sno,cno,grade,avggrade
FROM sc,(SELECT sno,ROUND(AVG(grade)) AS avggrade FROM sc GROUP BY sno) AS avg_sc
WHERE sc.sno=avg_sc.sno AND sc.grade>avg_sc.avggrade
ORDER BY sc.sno;
6.SQL查询:查询哪些客户从未有订单,输出客户编号和客户名称。
表结构如下:【注意order表,语句中写order】
SELECT customer_id,customer_name
FROM customer
WHERE customer_id NOT IN(SELECT customer_id FROM `order`);
7.找出至今没有人选修过的课程
有课程表,学生表,成绩表如下,找出至今没有人选修过的课程号、课程名称。
course
列名
数据类型
约束
说明
cno
char(4)
主键非空
课程号
cname
varchar(40)
非空
课程名
cpno
char(4)
参照course(cno)
先修课
ccredit
tinyint
学分
student
列名
数据类型
约束
说明
sno
char(7)
主键非空
学号
sname
char(10)
非空
学生姓名
ssex
enum('男','女')
默认‘男’
性别
sage
tinyint
年龄
sdept
char(20)
默认'计算机系'
系别
sc
列名
数据类型
约束
说明
sno
char(7)
主键非空,参照student(sno)
学号
cno
char(4)
主键非空,参照course(cno)
课程号
grade
decimal(5,1)
成绩
ccredit
tinyint
select cno AS 课程号,cname AS 课程名
FROM course
WHERE cno NOT IN(SELECT DISTINCT sc.cno FROM sc);
8.查询同时选修了c01,c02,c03课程学生,输出学号,姓名
[注意:SQL表名请用小写]
select distinct student.sno, sname
from student,sc
where student.sno = sc.sno
and student.sno in
(
select sno
from sc
where cno = 'c01'
and sno in
(
select sno
from sc
where cno = 'c02'
and sno in
(
select sno
from sc
where cno = 'c03'
)
)
) ;
9.查询选课门数最多的学生的学号和姓名
有课程表,学生表,成绩表如下,查询选课门数最多的学生的学号和姓名,结果可能不只一行。
course
列名
数据类型
约束
说明
cno
char(4)
主键非空
课程号
cname
varchar(40)
非空
课程名
cpno
char(4)
参照course(cno)
先修课
ccredit
tinyint
学分
student
列名
数据类型
约束
说明
sno
char(7)
主键非空
学号
sname
char(10)
非空
学生姓名
ssex
enum('男','女')
默认‘男’
性别
sage
tinyint
年龄
sdept
char(20)
默认'计算机系'
系别
sc
列名
数据类型
约束
说明
sno
char(7)
主键非空,参照student(sno)
学号
cno
char(4)
主键非空,参照course(cno)
课程号
grade
decimal(5,1)
成绩
ccredit
tinyint
select student.sno,sname from sc,student where sc.sno=student.sno group by sno having (count(cno)>=all(select count(cno) from sc group by sno));
10 .查询统计产品“17”的每单平均订购数,和订单总数
个人看来该语句有些歧义,表示不是很清楚;
表结构如下:
SELECT product_id, AVG(buy_number), COUNT(*)
FROM order_detail
WHERE product_id = 17;
11.输出“高等数学”课程成绩前2名的学生的学号,姓名,系名
[注意:SQL表名请用小写]
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
SELECT s.sno,sname,sdept from student s,sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno AND cname='高等数学'
ORDER BY grade DESC LIMIT 2;
12.查询2015年的借阅信息,输出读者卡号、书号及借书日期。
borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期
select cno,bno,rdate from borrow
where year(rdate)=2015;
13.SQL查询:查询人员信息:包括员工和客户
查询人员信息:包括员工和客户。(员工数据在前)
输出“id”、“name”、“type”,若为员工,type为“员工”,若为客户,type为“客户”。
员工表:employee
客户表:customer
查询输出形式如下:
SELECT employee_id AS id,employee_name AS 'name','员工'type
FROM employee
UNION
SELECT customer_id AS id,customer_name AS 'name','客户'type
FROM customer;
14.查询书名包括"网络"关键词的图书信息
查询书名包括"网络"关键词的图书信息,输出书号、书名、作者。
表结构如下:
book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数
select bno,bname,author from book
where bname like '%网络%';
15.成绩表包括如下列(学号,课程代号,成绩,教师工号),查询查询选课的学生总数。
SELECT count(DISTINCT xh) from cj;
16.查询选修通过门数超过3门,且平均分在70以上的学生成绩信息
查询选修通过门数超过3门,且平均分在70以上的学生的学号,选修门数,平均成绩,并按平均成绩从高到低排序。
成绩表包括如下列(学号,课程代号,成绩,教师工号),表结构定义如下:
select xh,count(*),avg(cj) from cj where cj>60 group by xh
having count(*)>3 and avg(cj)>70 order by 3 desc;
17.统计各门课程选修人数,要求输出课程代号,课程名,有成绩人数(grade不为NULL),最高分,最低分,平均分(取整round函数),按课程号排序。
[注意:SQL表名请用小写]
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
select sc.cno,cname,count(grade),max(grade),min(grade),round(avg(grade))
from sc,course
where sc.cno=course.cno
group by cno
order by cno;
18.查询输出平均成绩在2-5名的学生,输出学号、姓名和平均成绩(取整),平均成绩降序。【不用考虑空值】
[注意:SQL表名请用小写]
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
1、student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2、course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3、sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
select sc.sno,sname,round(avg(grade))
from student,course,sc
where student.sno=sc.sno and course.cno=sc.cno
group by sc.sno
order by round(avg(grade)) desc
limit 1,4;
19.SQL查询:查询统计2016年订单客户总数
表结构如下:[注意表名请写order]
SELECT COUNT(DISTINCT customer_id) from `order` WHERE order_date LIKE '%2016%';
20.查询借阅信息,要求输出卡号,姓名,借阅书数,书名列表(按书名升序排列,用下划线_分隔),按照卡号升序排序。
表结构如下:
card(借书卡) 表:cno 卡号,name 姓名,class 班级
book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数
borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期
select card.cno,name,count(*),
GROUP_CONCAT(bname order by bname separator '_')
from card,borrow,book
where card.cno=borrow.cno and borrow.bno=book.bno
group by card.cno
order by card.cno;
结束:
上述题目的解不是唯一,例题中的解是我所理解并运行成功的,如果有不对的地方,欢迎指出。
后面还会有数据更新部分的练习题;
感谢各位看到最后!
mysql怎么查询借阅相同图书_MySQL查询练习2相关推荐
- mysql 查看某个表缓存情况_MySQL 查询缓存 QUERY_CACHE
保存查询返回的完整结果.当查询命中该缓存,MySQL会立即返回结果,跳过解析.优化和执行阶段. 官方在特定环境测试结果(官方文档中有详细说明): 1.如果对某表进行简单查询,但每次查询条件都不一样时, ...
- MySQL查询自己的学号_Mysql 查询练习
Mysql 查询练习 ---创建班级表 create tableclass( cidint auto_increment primary key, captionvarchar(20) )engine ...
- mysql查询男生基本情况_MYSQL查询操作 详细
学习目标 1 掌握select查询所有字段.指定字段的数据 2 掌握消除重复行命令distinct 3 掌握as给字段.表起别名 4 掌握条件查询where后跟比较运算符.逻辑运算符的用法 5 掌握条 ...
- mysql查询比对提速_MySQL查询性能优化
关注我,更多精彩文章第一时间推送给你 1.为什么查询速度会慢? 首先对一个查询的生命周期简化分析,大致可以按照顺序分为:从客户端.到服务器.然后在服务器进行解析.生成执行计划.执行.并返回结果给客户 ...
- mysql语句 查询前5个_MySQL 查询语句--------------进阶5:分组查询
#进阶5:分组查询 /* select 分组函数,列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注意: 查询 ...
- mysql语句查询今天的数据_mysql查询当天所有数据sql语句
mysql查询当天的所有信息: select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) a ...
- mysql+怎样查询最后几条_mysql 查询开头或最后几行
mysql 查询开头或最后几行(Limit) from http://hi.baidu.com/sunboy_2050/item/ccda0eceddd9a42de80f2ef0 在我们使用查询语句的 ...
- mysql表中有重复的元组_MySQL查询找到重复的元组并显示计数?
要查找重复的元组,请使用GROUP BY HAVING子句.让我们首先创建一个表-mysql> create table DemoTable -> ( -> Id int, -> ...
- mysql查阅某个日期的语句_mysql查询指定日期时间内的sql语句及原理
查询指定日期时间内的sql语句的实现原理: 如果是月份就是当前的月减去你要统计的时间,比如要查询数据库中从今天起往前三个月的所有记录. 另外,在数据库设计阶段,要注意时间字段为int(11),保存在数 ...
最新文章
- MODE —— 两个人在计算机上玩圈叉游戏|井字游戏(知识点:二维数组)
- wxWidgets:wxArchiveClassFactory类用法
- 部署war文件到服务器,war包怎么部署到云服务器
- BugkuCTF-MISC题妹子的陌陌
- 热门wordpress主题Essentials汉化绿色版[更至v2.0.0]
- LINUX下载编译libyuv
- 程序设计语言编译原理-陈火旺(第三版)简答题复习
- adobe reader打开pdf闪退或自动关闭
- 在Windows中使用FileZilla Server创建FTP
- 电商后台管理系统难点(2)
- 两台计算机传输文件速度,一根网线,两台电脑,超高速传输文件
- Vue - $route matched 属性实现面包屑导航
- ArcGIS Administartor localhost是无效主机名
- 01、本地微信服务器测试环境
- 读书笔记 - 《卧底经济学》
- javah命令详解与idea使用javah一键编译JNI的.头文件
- PHP的环境安装基本的配置
- 常见的数字高程模型结构有哪些?
- ubuntu下安装fcitx五笔输入法
- gt710显卡驱动linux,华硕 GT710-SL-2G驱动下载_asus GT710-SL-2G显卡驱动下载-硬件之家...
热门文章
- AbMole推荐:人源化单抗动物实验黄金指南 (上)
- GoLang之Map深度讲解
- 我的第一篇SPL(Signal Processing Letters)的写作旅途
- python word2vec怎么用_小白看Word2Vec的正确打开姿势|全部理解和应用
- VB:编一个子过程DeleStr(s1,s2),将字符串s1中出现的s2子字符串删去,结果存放在s1中
- linux驱动学习的磕磕碰碰
- 人类小行星探测任务回顾
- TypeError: Cannot set properties of undefined (setting ‘xx‘)
- 格林尼治标准时(GMT)与世界时(UTC)
- 哈工大计算机考研复试指南