• 查询综合练习整理


      建表
    
    create table Student
      
     ( Sno varchar(20) not null primary key,
    
    
       Sname varchar(20) not null,
      
       Ssex varchar(20) not null,
    
       Sbirthday datetime,
    
    
      Class varchar(20)
       
      )
    
    
      create table Course
     
     (
       Cno varchar(20) not null primary key , 
    
    
      Cname varchar(20) not null,
    
    
      Tno    varchar(20) not null,
    
     foreign key (Tno) references Teacher (Tno)
    
     
    
    
    
     );
    
      create table Teacher
      (
        Tno varchar(20) not null primary key,
    
       Tname varchar(20) not null,
      
       Tsex varchar(20) not null,
    
       Tbirthday datetime,
    
        Prof varchar(20),
      
       Depart varchar(20) not null
    
    
    )
    
    create table Score
    (
     Sno varchar(20) not null ,
      
      
    
     Cno varchar(20) not null,
    
    Degree Decimal(4,1),
    
     primary key(Sno,Cno),#建两个主键叫联合主键
    
    foreign key (Sno) references Student(Sno),#这样建外键才有效
    
    
    foreign key (Cno) references Course (Cno)
    
    
    )
    
    录入信息
    insert into  Student values('108','曾华','','1977-09-01','95033')
    
    
    insert into  Student values('105','匡明','','1975-10-02','95031')
    
    
    insert into Student  values('107', '王丽','','1976-01-023','95033'),( '101','李军','','1976-02-20','95033')
    
    
    
    insert into Student  values('109', '王芳','','1975-02-10','95031')
    
    
    
    insert into Student  values( '103','陆君','','1974-06-03','95031')
    
    
    insert into Course values('3-105','计算机导论','825')
    
    insert into Course values('3-245','操作系统','804')
    
    
    
    insert into Course values('6-166','数字电路','856')
    
    
    insert into Course values('9-888','高等数学','831')
    
    insert into Teacher values('804','李诚','','1958-12-02','副教授','计算机系')
    
    
    
    insert into Teacher values('856','张旭','','1969-03-12','讲师','电子工程系')
      
    
    insert into Teacher values('825','王萍','','1972-05-05','助教','计算机系')
    
    
    insert into Teacher values('831','刘冰','','1977-08-14','助教','电子工程系')
    
    
    insert into Score values('103','3-245','86')
    
    
    
    insert into Score values('105','3-245','75')
    
    insert into Score values('109','3-245','68')
    
    insert into Score values('103','3-105','92')
    insert into Score values('105','3-105','88')
    
    insert into Score values ('109','3-105','76')
    
    insert into Score values ('101','3-105','64')
    
    insert into Score values ('107','3-105','91')
    
    insert into Score values('108','3-105','78');
    
    insert into Score values('101','6-166','85');
    
    insert into Score values('107','6-166','79');
    
    
    insert into Score values('108','6-166','81')
    #填入信息时一定按主从表的顺序建要不添加不上,要想建外键也是先建主表在建从表
    
    查询Student表中的所有记录的Sname、Ssex和Class列。
     1.select Sname,Ssex,Class from Student
    
    查询教师所有的单位即不重复的Depart列。
    2.select distinct Depart from Teacher#去重
    
     查询Student表的所有记录。
    3.select *from Student
    查询Score表中成绩在60到80之间的所有记录
    4.select*from Score where Degree between  '60 'and '80' 
    
    select*from Score where Degree >'60' and Degree<'80'# 不用加单引号
     查询Score表中成绩为85,86或88的记录。
    5.select*from Score where Degree='85'and Degree='86'or Degree='88'
    
    select*from Score where Degree in(85,86,88)
     查询Student表中“95031”班或性别为“女”的同学记录。
    6.select *from Student where Class='95031'or Ssex=''
    以Class降序查询Student表的所有记录。
    7.select*from Student  order by Class desc
    以Cno升序、Degree降序查询Score表的所有记录。
    8.select*from Score order by Cno asc, Degree desc
    查询“95031”班的学生人数。
    9.select count(*) from Student where class='95031'
     查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
    10.select Sno,Cno from Score where Degree= ( select max(Degree) from Score )
    
    11、 查询每门课的平均成绩。
    
      select Cno ,avg (Degree) from  Score group by Cno
    
    
    
    12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
    
      select avg (Degree)from Score group by Cno having count(*)>5 and Cno like '3%'
    
    select avg(Degree) from Score where Cno in (select Cno from Score group by Cno having count(*)>5) and Cno like '3%' group by Cno
     
    
    
    13、查询分数大于70,小于90的Sno列。
    
     select  Sno from Score  WHERE Degree>'70 'and Degree<'90'
    
     select  sno from score  where Degree between '70'and '90'
    
    14、查询所有学生的Sname、Cno和Degree列。
    
    select Student.Sname,Score.Cno, Score.Degree from Student,Score
    
    
    
    select Sname,Cno,Degree from Score join Student on Student.Sno = Score.Sno
     
    
    15、查询所有学生的Sno、Cname和Degree列。
     select Student.Sno,Cname,Degree from Student, Course,Score where Student.Sno=Score.sno
     
     select Student.Sno, Course.Cname,Score.Degree from Student,Course,Score
    
    select Sno,Cname,Degree from Score join Course on Score.Cno = Course.Cno
    16、查询所有学生的Sname、Cname和Degree列。
     select Student.Sname,Course.Cname,Score.Degree from Student,Course,Score where Student.Sno=Score.Sno and Course.Cno=Score.Cno
    
     select Sname,Cname,Degree from Score join Student on Student.Sno = Score.Sno join Course on Score.Cno = Course.Cno
    17、 查询“95033"班学生的平均分。
    
      
        select avg (Degree) from  Score where Sno in   (select Sno from Student where Class='95033')
    18、 假设使用如下命令建立了一个grade表:
    create table grade(low  int(3),upp  int(3),rank  char(1)); 
    insert into grade values(90,100,'A’);
    insert into grade values(80,89,'B’);
    insert into grade values(70,79,’C’);
    insert into grade values(60,69,’D’);
    insert into grade values(0,59,’E’);
    现查询所有同学的Sno、Cno和rank列。
    
    
    
    
    select Sno,cno,rank from Score join grade on Score.Degree between low and upp
    19、  查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
      select *from score where cno ='3-105' and degree>(select degree from score where cno='3-105'and Sno='109')
      
    
    20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
    
       select*from score a where Sno in (select sno from Score group by Sno having count(*)>1)and Degree not in ( select max (Degree)from Score b where b.Cno=a.Cno)#第一种理解 选多门课程的同学指一个同学选好几门 用到相关子查询
    
    第二种理解 选多门课程的同学指多个同学从多门课程中选
    select * from Score a where Sno in (select Sno from Score group by Sno having count(*)>1 )  and Degree not in (select max(Degree) from Score a where Sno in (select Sno from Score group by Sno having count(*)>1 ))
    
    21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
       select*from score where Degree> (select Degree from score where sno='109'and cno='3-105')
    
    22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
    
       select student.Sno, student.Sname,Sbirthday from student where year(Sbirthday)=  (select year(Sbirthday)from student where sno='108')
    23、查询“张旭“教师任课的学生成绩。
        select Tname,Sname,degree from teacher, course,score, student where student.sno   =score.sno and teacher.Tno=course.Tno and  course.cno=score.cno and teacher.Tname='张旭'
    
        select*from Score where cno in (select cno from course where tno=( select Tno from Teacher wherer tname='张旭'))
    24、查询选修某课程的同学人数多于5人的教师姓名。
          select Tname from Teacher where Tno in ( select Tno from course where Cno in( select Cno from Score group by Cno having count(*)>5))
    
    25、查询95033班和95031班全体学生的记录。
     select *from Student where class in ('95031','95033')
    26、  查询存在有85分以上成绩的课程Cno.
    select distinc Cno   from  Score where Degree>85
    
    
    27、查询出“计算机系“教师所教课程的成绩表。
     select *from Course where Tno in (select Tno from Teacher where
    28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
    
                     select Tname,prof from Teacher where prof not in  (select  prof from Teacher where depart ='计算机系'and prof in ( select prof from Teacher where depart='电子工程系'))
    
    
    29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
    
    
      select*from Score where Cno ='3-105'and Degree> any  ( select Degree From score where Cno='3-245') order by Degree Desc
    30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
    select*from Score where Cno ='3-105'and Degree> all  ( select Degree From score where Cno='3-245')
    
    31、 查询所有教师和同学的name、sex和birthday.
    
    select Sname,Ssex,Sbirthday from Student union select Tname,Tsex,Tbirthday from  Teacher
    32、查询所有“女”教师和“女”同学的name、sex和birthday.
    select Sname,Ssex,Sbirthday from Student where Ssex='' union select Tname, Tsex,Tbirthday from Teacher where Tsex=''
    33、 查询成绩比该课程平均成绩低的同学的成绩表。
    select*from  Score a where Degree<(select avg (Degree) from Score b where b.Cno=a.cno)
    
    
    34、 查询所有任课教师的Tname和Depart.
    
    
    
    
     select Tname ,depart from Teacher where Tno in (select Tno from Course)
    
    成绩表上:select Tname,depart from Teacher where Tno in(select Tno from Course where Cno in(select Cno from Score))
    35 、 查询所有未讲课的教师的Tname和Depart.
    select Tname,depart from Teacher where Tno in(select Tno from Course where Cno not in(select Cno from Score))
     
    36、查询至少有2名男生的班号。
    
    select Class  from Student where Ssex='' group by Class having count(*)>1
    37、查询Student表中不姓“王”的同学记录。
    
       select *from  Student where Sno not in (select Sno from Student where Sname like'王%')
    38、查询Student表中每个学生的姓名和年龄。
    select Sname,YEAR (now())-year(Sbirthday) from Student
    
    39、查询Student表中最大和最小的Sbirthday日期值。
    select max(Sbirthday)from Student union select min(Sbirthday) from Student #这样写运行只有一个最大值得表拦
    
    select max(Sbirthday),min(Sbirthday)from Student
    40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
    
    select*from student order by Class desc, Sbirthday desc
    
    41、查询“男”教师及其所上的课程。
    
    select*from Teacher join Course on Teacher.Tno=Course.Tno where Teacher.tsex=''
    42、查询最高分同学的Sno、Cno和Degree列。
     select*from Score where Degree= (select max(Degree) from score)  
    43、查询和“李军”同性别的所有同学的Sname.
    
    select Sname from Student where Ssex=(select Ssex from Student where sname='李军')
    44、查询和“李军”同性别并同班的同学Sname.
    
    select Sname from Student where Ssex=(select Ssex from Student where sname='李军')and class=(select class from student where Sname='李军')
    
    45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
      
    
    select * from Score where Sno in (select Sno from Student where Ssex='')and Cno in(select Cno from Course where Cname='计算机导论') 
  • 相关阅读:
    zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程
    centos6.5环境wget报错Unable to establish SSL connection
    文件缓存tmpfs简单使用
    codis3.2安装报错dashboard.go:369: [PANIC] call rpc create-proxy to dashboard 127.0.0.1:18080 failed的处理
    saltstack自动化运维系列12配置管理安装redis-3.2.8
    反向代理负载均衡之APACHE
    web服务器tomcat入门实战
    haproxy配置基于ssl证书的https负载均衡
    keepalived实现haproxy负载均衡器的高可用
    centos7使用haproxy1.7.5实现反向代理负载均衡实战
  • 原文地址:https://www.cnblogs.com/crazy-zw/p/5290039.html
Copyright © 2020-2023  润新知