50个常用sql语句

一,创建表

Student(SId,Sname,Sage,Ssex) 学生表
Course(CId,Cname,TId) 课程表
SC(SId,CId,score) 成绩表
Teacher(TId,Tname) 教师表

创建表
创建学生表Student

create table Student(SId varchar(10),Sname varchar(10),Sage Date,Ssex varchar(10));

创建科目表Course

create table Course(CId varchar(10),Cname varchar(10),TId varchar(10));

创建教师表teacher

create table Teacher(TId varchar(10),Tname varchar(10));

创建成绩表 SC

create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));

插入数据

insert into Student values('01' , '赵雷' , '1990-01-01', '男');
insert into Student values('02' , '钱电' , '1990-12-21', '男');
insert into Student values('03' , '孙风' , '1990-05-20', '男');
insert into Student values('04' , '李云' , '1990-08-06', '男');
insert into Student values('05' , '周梅' , '1991-12-01', '女');
insert into Student values('06' , '吴兰' , '1992-03-01', '女');
insert into Student values('07' , '郑竹' , '1989-07-01', '女');
insert into Student values('09' , '张三' , '2017-12-20', '女');
insert into Student values('10' , '李四' , '2017-12-25', '女');
insert into Student values('11' , '李四' , '2017-12-30', '女');
insert into Student values('12' , '赵六' , '2017-01-01', '女');
insert into Student values('13' , '孙七' , '2018-01-01', '女');insert into Course values('01' , '语文' , '02');
insert into Course values('02' , '数学' , '01');
insert into Course values('03' , '英语' , '03');
insert into Course values('04' , '化学' , '04');insert into Teacher values('01' , '张三');
insert into Teacher values('02' , '李四');
insert into Teacher values('03' , '王五');
insert into Teacher values('04' , '李明');insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('01' , '04' , 88);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 77);
insert into SC values('03' , '04' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('05' , '04' , 75);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);

1、查询“01”课程比“02”课程成绩高的所有学生的学号;

 SELECT a.SId FROM(SELECT SId,score FROM sc where CId=01)as a,(SELECT SId,score FROM sc where CId=02)as bwhere a.SId=b.SId AND a.score > b.score

查询结果

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

SELECT SId,AVG(score) from sc GROUP BY SId HAVING AVG(score)>60;

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

SELECTs.SId as 学号,s.Sname as 姓名,count(c.CId) as 选课数,SUM(c.score) as 总分
FROMstudent s
LEFT OUTER JOIN sc c ON s.SId = c.SId
GROUP BYs.SId
HAVINGSUM(CId)


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

select count(distinct(Tname))  from Teacher where Tname like '李%';

5、查询没学过“李明”老师课的同学的学号、姓名;

SELECT s.SId,s.Sname FROM student s WHERE s.SId NOT in (
SELECT sc.SId FROM sc,course,teacher where sc.CId=course.CId AND course.TId=teacher.TId AND teacher.Tname="李明");

6、查询学过“01”并且也学过编号“02”课程的同学的学号、姓名;

SELECTs.SId,s.Sname
FROMstudent s,sc c
WHEREs.SId = c.SId
AND c.CId = 01 AND EXISTS (SELECT*FROMsc c_2WHEREc.SId = c_2.SIdAND c_2.CId = 02
)


7、查询学过“李明”老师所教的所有课的同学的学号、姓名;

SELECTs.SId,s.Sname
FROMstudent s
JOIN sc c ON s.SId = c.SId
JOIN course c_2 ON c.CId = c_2.CId
JOIN teacher t ON t.TId = c_2.TId
AND t.Tname = '李明'


8、查询课程编号“02”的成绩比课程编号“01”课程低的所有同学的学号、姓名;

SELECT SId,Sname FROM(SELECT student.SId,student.Sname,score,(SELECT score FROM sc SC_2 WHERE SC_2.SId = student.SId AND SC_2.CId = '02' )score2 FROM student, scWHERE student.SId = SC.SIdAND CId = '01')s_2
WHEREscore2  < score;


9、查询所有课程成绩小于60分的同学的学号、姓名;

SELECT s.SId,s.Sname FROM student s
WHERE SId NOT IN(SELECT student.SId FROM student,sc WHERE student.SId=sc.SId AND score>60);


10、查询没有学全所有课的同学的学号、姓名;

SELECT s.SId,s.Sname FROM student s,sc c
WHERE s.SId=c.SId GROUP BY s.SId,s.Sname HAVING COUNT(CId) < (SELECT COUNT(CId) FROM course)

50道经典SQL练习题和答案-1-10相关推荐

  1. 深夜小酌,50道经典SQL题,真香~

      晚上听说我们村子快解封了,居家办公的日子已不多,久久不能平息~~   蹲坑之余,在网上找到了50道所谓经典SQL题,这不就是深夜必备小菜?我用脚叼起拖鞋,从冰箱拿出封印已久的半瓶可乐,打开数日未见 ...

  2. 50道数据库SQL练习题(深入理解各关键字的作用)

    目录 表结构 创建表 练习题 1.查询"001"课程比"002"课程成绩高的所有学生的学号 2.查询所有同学的学号.姓名.选课数.总成绩 3.查询平均成绩大于6 ...

  3. 面试必练:50道经典SQL练习

    –1.学生表 - Student(S,Sname,Sage,Ssex) –S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 –2.课程表 – Course(C,Cname,T ...

  4. 50道经典计算机网络面试题

    50道经典计算机网络面试题 1. 说说HTTP常用的状态码及其含义? 思路: 这道面试题主要考察候选人,是否掌握HTTP状态码这个基础知识点. 不管是不是面试需要,我们都要知道,日常开发中的这几个状态 ...

  5. 转载:【SQL练习】经典SQL练习题

    原始链接:https://blog.csdn.net/mrbcy/article/details/68965271 [SQL练习]经典SQL练习题 墨染百城 2017-04-03 18:12:08   ...

  6. [ZZ]知名互联网公司Python的16道经典面试题及答案

    知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...

  7. 30道经典SQL面试题讲解(11-20)

    本篇节选自书籍<对比Excel,轻松学习SQL数据分析>一书,主要讲解数据分析面试中常见的30道SQL面试题.1-10题见:30道经典SQL面试题讲解(1-10) 11 行列互换 现在我们 ...

  8. 我整理了50道经典Java算法题,直接进了字节跳动!!

    写在前面 最近,很多小伙伴都想进入字节跳动这个快速发展的公司,而字节跳动对于算法的要求比较高.于是乎,有些小伙伴问我能否整理一些基础的算法题,帮助他们提升下基础算法能力.我:没问题啊!于是,经过半个多 ...

  9. 50个经典Sql语句

    50个经典Sql语句 --1.学生表 Student(S,Sname,Sage,Ssex) --S 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表  Cours ...

最新文章

  1. linux查看msf安装目录,linux系统安装msf的过程详解
  2. gulp自动化ES6转ES5
  3. Angular动态表单生成(八)
  4. 熵权法中计算的熵值与决策树的熵值完全不一样之谜
  5. 【Error-Android Studio】clang++: error: no such file or directory
  6. 有限元笔记02:第三章
  7. openssl java aes_请问如何使用AES对使用OpenSSL命令加密的Java文件进行解密?
  8. 【设计模式】设计模式C++编程实现之观察者模式(ObserverPattern)
  9. 444 nginx_程序员安全规范:安全无小事,安全防范从nginx配置做起
  10. 联通突然从4g变成3g了_联通正式关闭2G、3G服务?官方回应:是用户手机的问题...
  11. SQL2005服务器上安装SQL2008失败
  12. arm体系结构与编程_ARM体系结构基础(1)
  13. Android 计时器Timer用法
  14. 操作系统——进程管理
  15. 【柒穆雨】平面设计好不好学?设计小白该如何学习平面设计
  16. 别把自己当作“千里马”,“笨鸟”先飞才是硬道理。
  17. python分析红楼梦中人物形象_《红楼梦》三大人物形象分析
  18. dSYM文件解析与分析
  19. QT笔记——Q_PROPERTY了解
  20. 计算机组成原理环境配置,计算机组成原理课程设计

热门文章

  1. 用DIV+CSS技术设计的红酒主题网站(web前端网页制作课作业)
  2. 【分享】PowerPoint如何设置保护和加密?
  3. 推荐阅读:《我在赶集网的两个月》
  4. 惠普系列原厂系统恢复原机win10win11
  5. 江苏专转本如何事半功倍的备考
  6. linux查看计算机系统软件,如何查询电脑系统版本 怎么查看电脑版本是系统几
  7. 【SSM - SpringMVC篇】日期格式转换 把英文日期转化为数字日期
  8. 如何禁用linux防火墙,linux防火墙如何禁用
  9. 很久没有来管理了,还是捡起来吧
  10. php 调用新浪微博接口,php调用新浪微博短链接api接口地址例子