MySql数据库基本select查询语句练习题,初学者易懂。

MySql数据库基本select查询语句练习题,初学者易懂。MySQL数据库的基本查询语句题目:

大家好,又见面了,我是你们的朋友全栈君。



数据库建立四个表:分别为

student(sid,sname,sage,ssex)

teacher(tid,tname)

course(cid,cname,tid)

sc(sid,cid,score)

— 1、查询“001”课程比”002″课程成绩高的所有学生的学号。

select a.sid FROM
(select * from sc where cid=”001″) as a,
(select * from sc where cid = “002”)as b
where a.sid = b.sid and a.score>b.score

— 2、查询平均成绩大于60分的同学的学号和平均成绩

select sid,avg(score) 
FROM sc
GROUP BY sid
HAVING avg(score)>=70;

— 3、查询所有的同学的学号、姓名、选课数、总成绩

select student.sid, sname,COUNT(*),sum(score)
from sc,student
where sc.sid = student.sid 
GROUP BY sid;

— 4、查询姓“李”的老师的个数

select COUNT(*)
from teacher
where tname LIKE ‘大%’;

— 5、查询没学过“叶平“老师的课程的同学的学号、姓名

SELECT sid,sname
from student
where sid NOT in(select sid
from sc,course,teacher
where sc.cid = course.cid and teacher.tid = course.tid and teacher.tname = “叶良辰”);

—  6、查询所有    课程有挂科的同学的学号、姓名

SELECT sid ,sname
from student
where 
sid in (select sid from sc) AND
sid not in(select sid from sc where score<60 GROUP BY sid);

—  7、查询至少一门课与学号为“2”的同学所学相同的学生的学号和姓名

SELECT DISTINCT(sc.sid)
from sc,student
where student.sid = sc.sid and cid in(select cid from sc where sc.sid=’2′) and student.sid<>’2′;

— 8、统计列印各科成绩,各分数段人数:课程ID、课程名称,100-85,85-70,70-60,<60

select sc.cid as ‘课程ID’,cname as ‘课程名称’,
SUM(case WHEN score between 85 and 100 then 1 else 0 end) as ’85-100′,
SUM(case WHEN score between 70 and 84 then 1 else 0 end) as ’70-84′,
SUM(case WHEN score between 69 and 60 then 1 else 0 end) as ’60-69′,
SUM(case WHEN score between 0 and 100 then 59 else 0 end) as ‘0-59’
from course,sc
where sc.cid=course.cid
GROUP BY sc.cid;

—  9、查询每门课程的课程名和选修的学生数

select cname,count(*)
from sc,course
where course.cid=sc.cid 
group by sc.cid;

— 10、查询出只选修了一门课程的全部同学的学号、姓名

select sc.sid,sname
from sc,student
where student.sid=sc.sid
GROUP BY (sc.sid)
HAVING COUNT(*)=1;

— 11、查询男生、女生的人数

(select “男生” AS “性别”,count(*) from student where ssex=”男”)
UNION
(select “女生” as “性别”, count(*) from student where ssex=”女”);

—  12、查询姓“李”的师生名单

(select sname as ‘名单’ from student where sname like ‘李%’)
union
(select tname as ‘名单’ from teacher where tname like “李%”);

在数据库建立三个表:

学生表:student(sno,sname,sage,ssex,sdept)==(学号,姓名,年龄,性别,系别)

课程表:course(cno,cname,credit)==(课程号,课程名,学分)

选课表:sc(sno,cno,grade)===(学号,课程号,成绩)

— 写出选修了数据结构的同学的学号和姓名

select *
from student
where sno in(select sno
 from sc,course 
where sc.cno=course.cno and cname=’数据结构’ 
);

— 1.统计每门课的选课人数,包括没有人选的课程,列出课程号及选课情况,其中选课情况为,如果此门课的选课人数超过100
— 人,则显示人多,40-100一般 1-40人好,无人选

select  course.cno ,
case 
when (count(*)>=40 and count(*)<=100) then  ‘较多’ 
when (count(*)>1 and count(*)<40) then ‘较少’
else ‘无人选’ end as ‘选课情况’
from course left join sc
on course.cno=sc.cno
GROUP BY cno;

—  2.查询计算机有哪些学生没有选课,列出姓名和学号(用外连接)
select sname
from student left join  sc on
sc.sno=student.sno
where sdept=”计科” and sc.sno is null;

2>– 成绩小于60的学生姓名,课程,成绩

select sname,cname,grade
from student,sc,course
where student.sno=sc.sno and sc.cno=course.cno
and grade<60;

— 3. 统计每个学生的选课人数和考试总成绩,并按照选课门数升序排列
select sno,count(*)’选课门数’ ,sum(grade)’总成绩’
from sc
GROUP BY sno
ORDER BY count(*) DESC;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140907.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iframe自适应屏幕大小_iframe高度自适应撑开

    iframe自适应屏幕大小_iframe高度自适应撑开今天有朋友问到我关于“iframe自适应高度”的问题,原本以为是很简单的问题,没想到折腾了20分钟才搞定。期间遇到几个问题,要么是高度自适应了,但是当窗口改变时会出现滚动条。也就是当窗口放大时iframe没有自动跟随变大显得很小,或是当窗口缩小时iframe还是之前那么大就出现了滚动条。还有或是高度不准确,那么就达不到想要的效果了。为什么需要使用iframe自适应高度呢?其实就是为

    2022年10月12日
    2
  • c++ pushback函数_push back from

    c++ pushback函数_push back from算法中里面的一个函数名,如c++中的vector头文件里面就有这个push_back函数,在vector类中作用为在vector尾部加入一个数据。string中也有这个函数,作用是字符串之后插入一个字符。如果是指标准模板库(stl)中容器的一般pushback()操作函数,那么是指在容器尾端插入一项数据,比如vectora(10);a.pushback(10);那么a的尾端,同时也是唯…

    2025年8月4日
    4
  • 布隆过滤器 原理及优缺点分析_布隆过滤器误判怎么办

    布隆过滤器 原理及优缺点分析_布隆过滤器误判怎么办用于检索一个元素是否在集合中,其空间和时间上及其优秀!

    2022年10月7日
    2
  • dota5显示正在连接协调服务器,win10系统打开dota2提示已连接至DOTA2游戏协调服务器正在登陆中如何解决…

    dota5显示正在连接协调服务器,win10系统打开dota2提示已连接至DOTA2游戏协调服务器正在登陆中如何解决…近日有win10系统用户要在电脑中玩dota2游戏的时候,发现一打开dota2提示已连接至DOTA2游戏协调服务器正在登陆中,该怎么办呢,本文就给大家讲解一下win10系统打开dota2提示已连接至DOTA2游戏协调服务器正在登陆中的详细解决步骤。解决方法一、1、开始按钮在搜索中输入CMD,打开第一个在弹出框输入:netshwinsockresetcatalog;2、直接复制然后再弹出框中右…

    2022年5月17日
    96
  • 数据结构面试经典问题汇总及答案_数据结构基础面试题

    数据结构面试经典问题汇总及答案_数据结构基础面试题数据结构面试经典问题汇总参考资源:基础深入补充:参考资源:基础数据结构常见面试题深入数据结构面试题(三)数据结构面试必问数据结构算法常见面试考题补充:1.数组和链表的区别,请详细解释。从逻辑结构来看:a)数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。b)链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除

    2022年9月19日
    3
  • platform_driver_probe与platform_driver_register的区别[通俗易懂]

    platform_driver_probe与platform_driver_register的区别[通俗易懂]

    PlatformDeviceandDrivers
    我们可以了解Platformbus上面的驱动模型接口:platform_device,platform_driver。和PCI和USB这些大结构的总线不同,虚拟总线Platformbus使用最小结构来集成SOCprocesser上的各种外设,或者各种“legacy”之间的互联。
    Platformdevice
    典型的Platformdevi

    2022年7月14日
    17

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号