比较复杂的数据库查询案例,建表语句和测试数据[通俗易懂]

比较复杂的数据库查询案例,建表语句和测试数据[通俗易懂]比较复杂的数据库查询案例,建表语句和测试数据

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

create DATABASE test
CREATE TABLE Student ( S VARCHAR(64), Sname VARCHAR(64) ,Sage INT, Ssex VARCHAR(2), PRIMARY KEY (S) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Course ( C VARCHAR(64),Cname VARCHAR(64), T VARCHAR(64) ) engine=InnoDb DEFAULT charset=utf8;
CREATE TABLE SC ( S VARCHAR(64), C VARCHAR(64), score INT) engine=InnoDB DEFAULT CHARSET=UTF8;
CREATE TABLE Teacher ( T VARCHAR(64), Tname VARCHAR(64) ) engine=Innodb DEFAULT charset=utf8;

insert into test.course (C,Cname,T) VALUES('001','数学','001');
insert into test.course (C,course.Cname,course.T) values('002','语文','002'),('003','英语','003');

insert into test.sc (sc.C,sc.score,sc.S) values('001',50,'001'),('001',90,'002'),
                                        ('002',77,'001'),('002',99,'002'),
                                        ('003',100,'001'),('003',33,'002');
insert INTO test.teacher (T,Tname) VALUES('001','刘老师'),('002','王老师'),('003','丧老师');
insert INTO test.teacher (T,Tname) VALUES('004','刘老师')
insert into test.student (student.S,student.Sage,student.Sname,student.Ssex) values('01',12,'小明','男'),('02',12,'小红','女');
insert into test.student (student.S,student.Sage,student.Sname,student.Ssex) values('03',13,'小花','女');
insert into test.student (student.S,student.Sage,student.Sname,student.Ssex) values('04',13,'小绿','女');

查询条件:

//15、删除学习“丧老师”老师课的SC表记录:
delete from test.sc where c=
(select c from test.teacher,test.course where teacher.T=course.T and teacher.Tname='丧老师')
        
//14、查询和“02”号的同学学习的课程完全相同的其他同学学号和姓名:
select s,student.Sname from test.student
        where student.s  in (select s from test.sc where c in (select c from sc where s='02')
        group by s having count(*) =(select count(*) from sc where s='02')) and s !='02'
//13、把“SC”表中“刘老师”老师教的课的成绩都更改为此课程的平均成绩:
update Sc set  score =(
        select a.aa from (
                select avg(sc2.score) aa from sc sc2 ,course where sc2.c=course.c
                       ) a)
        where c in 
                (select c from test.course cs inner join test.teacher th on cs.T=th.T and th.Tname='刘老师')
//12、查询至少学过学号为“01”同学所有一门课的其他同学学号和姓名;
select DISTINCT student.S,student.Sname from test.student,test.sc
        where student.s=sc.S
                and sc.c in(select c from test.course where sc.S='01')
//11、查询至少有一门课与学号为“01”同学所学相同的同学的学号和姓名:
SELECT DISTINCT(student.s),student.Sname from test.student,test.sc,test.course
        where student.s = sc.s
                and sc.C in (select c from sc where sc.s='01')
//10、查询没有学全所有课的同学的学号、姓名:
select student.s,student.Sname from test.student,test.sc
        where sc.s=student.s 
                group by student.s,student.Sname
                        having count(sc.c)<(select count(*) from test.course)
//9、查询所有课程成绩小于60的同学的学号、姓名:
select student.s,student.Sname from test.student
        where student.S not in (select student.s from test.student ,sc where student.s=sc.S and sc.score >60);
//8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名:

//7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名:
select student.s,student.Sname from test.student,test.sc where student.s=sc.s and sc.c='001'and
        EXISTS (select * from sc as sc_2 where sc_2.S=sc.S and sc_2.c='002')
//6、查询学过“刘老师”老师所教的所有课的同学的学号、姓名:
select student.s,student.Sname from test.student 
        where s  in 
                (select sc.s from sc,test.course,test.teacher where sc.c=course.c and teacher.t=course.t and teacher.Tname='刘老师')
//5、查询没有学过“刘老师”老师可的同学的学号、姓名:
select student.s,student.Sname from test.student 
        where s not in 
                (select sc.s from sc,test.course,test.teacher where sc.c=course.c and teacher.t=course.t and teacher.Tname='刘老师')
//4查询姓‘刘’的老师的个数:
select count(distinct(teacher.Tname)) num from test.teacher where teacher.Tname like '刘%'
//1查询“001”课程比“002”课程成绩高的所有学生的学号
select a.s from 
        (SELECT S,score FROM test.sc WHERE sc.C='001') a ,(select S,sc.score from test.sc where sc.C='002')b 
                where a.score>b.score and a.S=b.S
//1.2查询“001”课程比“002”课程成绩高的所有学生的姓名                        
select * from test.student where student.S=
       ( select a.s from 
                (SELECT S,score FROM test.sc WHERE sc.C='001') a ,(select S,sc.score from test.sc where sc.C='002')b 
                        where a.score>b.score and a.S=b.S)
 //2查询平均成绩大于60分的同学的学号和平均成绩
select sc.s, avg(score) from test.sc group by sc.S having avg(Score)>60 
//3、查询所有同学的学号、姓名、选课数、总成绩    
select student.S,student.Sname,count(sc.C),sum(sc.score)from test.student  
        left outer JOIN test.sc on student.S= sc.S   
                GROUP BY student.S,student.Sname                

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

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

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


相关推荐

  • 计算机网络第七版课后习题答案(第一章)(20210321)

    1.计算机网络可以向用户提供哪些服务?(1)连通服务:指计算机网络使上网用户之间可以交换信息,好像这些用户的计算机可以彼此直接连通一样。(2)资源共享:用户可以共享计算机网络上的信息资源、软件资源和硬件资源。2.试简述分组交换的要点。答:分组交换实质上是在“存储——转发”基础上发展起来的。它兼有电路交换和报文交换的优点。分组交换在线路上采用动态复用技术传送按一定长度分割为许多小段的数据—…

    2022年4月16日
    36
  • 配置maven环境变量出错

    配置maven环境变量出错真是百思不得其解,在配置maven环境变量的时候通过下面的方法,尽管配置的环境完全正确,但在验证maven环境是否配置正确的时候却始终报错,报错内容如下所示:   出现此错误的配置方法如下: 1、右键“我的电脑”->”属性”; 2、在打开的属性面板里选择“高级系统设置”; 3、在打开的高级系统设置对话框中选择“环境变量”; 4、添加新的系统环境变量MA

    2022年5月14日
    56
  • Log4cpp介绍及使用

    Log4cpp介绍及使用

    2021年11月30日
    43
  • YUI3学习(一)—入门

    YUI3学习(一)—入门   学习YUI3有一段时间,并且应用在了一些项目的前端开发中,感觉还是蛮不错的,所以决定开始记录下YUI3的学习历程和个人经验。   YUI3在前身YUI2基础上进行了大量的重新设计,并不只是简单的版本升级。YUI3强调代码重用,将功能做了级别划分和颗粒化的设计。在概念上抽象出核心、工具、和组件类,分别放在不同的目录结构中,需要的时候自行去引用。为动态加载的框架设计做铺垫。YUI3…

    2022年7月12日
    27
  • App2sd功能和Asec文件

    App2sd功能和Asec文件本文原创作者:CloudChou.欢迎转载,请注明出处和本文链接1.asec文件是什么?asec的全称是AndroidSecureExternalCaches以前app安装好之后,app和app的数据都是放在data分区,而data分区经常存储空间不够,于是从Android2.2,Froyo版本开始,Android开始支持App2Sd功能,所谓的App2Sd就是安装ap

    2022年7月20日
    14
  • 圆周率两千万亿位_圆周率后3000万亿位

    圆周率两千万亿位_圆周率后3000万亿位网友一:对于我们日常生活应用来说,π=3.14就够用了,这就是小学毕业的要求。如果是工程上用,π=3.1415927也足够用了,也就是计算器的精度。那么如果继续计算圆周率,到100位、1万位,其实已经不是实用价值,而是数学研究价值了。1,信念,验证无限不循环π肯定是无限不循环的,不需要验证了。但是,作为数学的信念,我们就想验证一下。这种信念不仅仅在数学家中有,在其他学科领域、行业领域也有。2,研究…

    2025年11月5日
    3

发表回复

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

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