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;

结束:

上述题目的解不是唯一,例题中的解是我所理解并运行成功的,如果有不对的地方,欢迎指出。

后面还会有数据更新部分的练习题;

感谢各位看到最后!

标签:sno,练习,查询,CHAR,课程,student,MySQL,sc,cno

来源: https://www.cnblogs.com/xbhog/p/14021013.html

mysql查询学生表的总人数,MySQL查询练习2相关推荐

  1. mysql查询学生表的总人数,MySQL(表)-实操数据查询

    MySQL(表)-实操数据查询 MySQL(表)-实操:数据查询 练习1:成绩表筛选 创建成绩表(exam): CREATE TABLE exam( id INT PRIMARY KEY AUTO_I ...

  2. mysql查询学生表的总人数_MySQL-五-多表查询

    33 1.表的加法(union) 表的加法是将两个表的数据,按照行合并到一起.合并时会把重复的数据删除. 如果想保留重复的行,应在union后加all 练习一:如何合并两个表? 方法一:新建cours ...

  3. mysql查询学生表的总人数_mysql数据库查询练习

    创建四张数据表 学生表student:学号,姓名,性别,出生年月日,所在班级 教师表teacher:教师编号,教师名,教师性别,出生年月日,职称,所在部门 课程表course:课程号,课程名,教师编号 ...

  4. 实验3数据库查询-学生表(Student)、课程表(Course)、学生选课表(SC)

    答案 查询select  彻底删除drop  修改alter 创建creat --删除数据库 drop database TK --数据库名 查询学生表S中的所有信息 use TK --数据库名 se ...

  5. oracle学生选课查询(学生表student、成绩表sc、课程表c)

    oracle学生选课查询--学生表student.成绩表sc.课程表c 一.创建学生表,表结构(学号,姓名,年龄,性别,系别,出生地),插入几条记录 二.创建成绩表,表结构(学号,课程号,成绩),插入 ...

  6. mysql学生表选课表课程表_mysql查询(学生表、课程表、选课表)

    ************************************************************ 为sc表中的sno和cno创建外键 alter table sc add fo ...

  7. MySQL(学生表、教师表、课程表、成绩表)多表查询

    多表查询SQL语句 1.表架构 student(sid,sname,sage,ssex) 学生表  course(cid,cname,tid) 课程表  sC(sid,cid,score) 成绩表  ...

  8. mysql为什么表大了要重建_为什么MySQL分库分表后总存储大小变大了?

    [MySQL系列相关] 1.聊一聊关于MySQL的count(*) 1.背景 在完成一个分表项目后,发现分表的数据迁移后,新库所需的存储容量远大于原本两张表的大小.在做了一番查询了解后,完成了优化. ...

  9. php mysql ajax 单表多字段多关键词查询

    单表多字段查询在一些稍微复杂一点的查询中十分有用.本文主要利用MySQL数据库中的concat函数实现单表多字段多关键词查询.并且显示查询结果的表格可根据所选数据表动态生成. html代码 <! ...

最新文章

  1. 易观与用友推出云融合产品“智能用户运营”,掀开数字营销技术新篇章
  2. linux计时函数的使用
  3. 解决BitLocker反复提示恢复密钥正确而无法进入系统的问题
  4. oracle+restore+pfile,RAC(11gR2) OCR BACKUP RESTORE
  5. zoj 2526(一道很好的最短路应用题)
  6. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)
  7. centos7下docker设置阿里云镜像(自定义阿里云镜像)
  8. FileUpload上传图片提示 “GDI+中发生一般性错误”
  9. backbonejs中的集合篇(一)
  10. iOS UIPageControl
  11. springboot和springframework以及jdk版本的对应关系
  12. Vue开发环境搭建 VsCode
  13. 语音识别算法_开源语音识别算法_语音 识别 - 云+社区 - 腾讯云
  14. java ip地址定位,Java根据IP地址定位位置
  15. R语言学习-问题解决-Error in output$nodeID : $ operator is invalid for atomic vectors
  16. 混血网站诞生 公司相互嫁接成就新商业模式
  17. SM4350 背光控制--关闭XBL WLED
  18. bandgap中简并点理解与仿真
  19. 2022-2028全球与中国数字化销售室软件市场现状及未来发展趋势
  20. 俄罗斯套娃信封问题 转https://www.jianshu.com/p/9d9495ef4372

热门文章

  1. Attention Is All You Need翻译
  2. LeetCode 2296. 设计一个文本编辑器(双栈)
  3. 华工计算机组成原理第一次作业,华工网络教育学院2018计算机组成原理作业
  4. 华工计算机工程学院,计算机工程学院赴华工兄弟学院交流学习
  5. 罗庄高新区电子计算机学校,厉害了!临沂这101所中小学要出名了!罗庄这些学校上榜(附全名单)...
  6. w15作业--ZJM 与生日礼物(选做)
  7. iphone 越狱后
  8. 趣图:菜鸟程序员的工作状态…
  9. Bayesian face revisited : a joint formulation 论文学习
  10. VLOOKUP函数反向查找(需要用IF函数把数据源倒置一下)