SQL语法练习(一)
- 查询学习课程”python”比课程 “java” 成绩高的学生的学号;
– 思路:
– 获取所有有python课程的人(学号,成绩) - 临时表
– 获取所有有java课程的人(学号,成绩) - 临时表
– 根据学号连接两个临时表:
– 学号 | 物理成绩 | 生物成绩
– 然后再进行筛选
1
2
3
4
5select A.s_id from
(select s_id, num as python from score left join course on score.c_id = course.c_id where course.c_name = 'python') as A
left join
(select s_id, num as java from score left join course on score.c_id = course.c_id where course.c_name = 'java') as B
on A.s_id = B.s_id where A.python > B.java;
查询平均成绩大于65分的同学的姓名和平均成绩(保留两位小数);
1
2
3
4
5SELECT student.s_name as names, round(AVG(score.num), 2) as average
FROM student, score
WHERE student.s_id = score.s_id
GROUP BY student.s_name
HAVING AVG(score.num) > 65;查询所有同学的姓名、选课数、总成绩
1
2
3
4
5SELECT student.s_name, COUNT(score.s_id) as course_num, SUM(score.num) as total_grades
FROM student, score
WHERE student.s_id = score.s_id
GROUP BY student.s_name
ORDER BY student.s_name;查询所有的课程的名称以及对应的任课老师姓名;
1
2
3SELECT course.c_name, teacher.t_name
FROM course, teacher
WHERE course.t_id = teacher.t_id;查询没学过“alex”老师课的同学的姓名;
1
2
3
4
5
6
7SELECT s_name
FROM student
WHERE student.s_id NOT IN (
SELECT DISTINCT score.s_id
FROM score, course, teacher
WHERE course.c_id = score.c_id AND teacher.t_id = course.t_id AND teacher.t_name = 'alex'
)查询学过’python’并且也学过编号’java’课程的同学的姓名
1
2
3
4
5
6
7SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as cid
FROM score, course
WHERE score.c_id = course.c_id AND (course.c_name = 'python' OR course.c_name = 'java')) as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name
HAVING COUNT(s_name) > 1;查询学过“alex”老师所教的全部课程的同学的姓名
1
2
3
4
5
6
7
8
9
10SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as cid
FROM score, course, teacher
WHERE score.c_id = course.c_id AND teacher.t_id = course.t_id AND teacher.t_name = 'alex') as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name
HAVING COUNT(s_name) = (SELECT COUNT(course.c_id) FROM
course, teacher
WHERE
teacher.t_id = course.t_id AND teacher.t_name='alex');查询挂科超过两门(包括两门)的学生姓名;
1
2
3
4
5
6
7SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as大专栏 SQL语法练习(一)span> cid
FROM score, course
WHERE score.c_id = course.c_id AND (score.num < 60 OR score.num ISNULL)) as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name
HAVING COUNT(s_name) > 1;查询有课程成绩小于60分的同学的姓名;
1
2
3
4
5
6SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as cid
FROM score, course
WHERE score.c_id = course.c_id AND score.num < 60) as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name;查询选修了全部课程的学生姓名;
1
2
3
4
5
6
7
8
9
10
11
12
13
14SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as cid
FROM score, course
WHERE score.c_id = course.c_id) as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name
HAVING COUNT(s_name) = (SELECT COUNT(*) FROM course); SELECT s_name FROM
student
LEFT JOIN score ON student.s_id = score.s_id
GROUP BY s_name
HAVING COUNT(s_name) = (SELECT COUNT(*) FROM course)查询至少有一门课程与“貂蝉”同学所学课程相同的同学姓名;
1
2
3
4
5
6SELECT s_name
FROM student, score
WHERE student.s_id = score.s_id AND student.s_name != '貂蝉' AND score.c_id IN (SELECT c_id FROM score, student
WHERE score.s_id = student.s_id AND student.s_name = '貂蝉') GROUP BY s_name;查询学过’貂蝉’同学全部课程的其他同学姓名;
1
2
3
4
5
6
7
8
9
10
11
12SELECT s_name FROM
(SELECT score.s_id as sid, score.c_id as cid
FROM score, course, student
WHERE
score.c_id = course.c_id AND
student.s_id = score.s_id AND
student.s_name != '貂蝉' AND
score.c_id in (SELECT c_id FROM score, student WHERE student.s_name = '貂蝉' AND student.s_id = score.s_id)
) as B
LEFT JOIN student ON B.sid = student.s_id
GROUP BY s_name
HAVING COUNT(s_name) >= (SELECT COUNT(score.c_id) FROM score, student WHERE student.s_name = '貂蝉' AND student.s_id = score.s_id);
– ——————————————————————————————————————————————————————————————
– INSERT INTO student VALUES (1, ‘鲁班’, 12, ‘男’);
– INSERT INTO student VALUES (2, ‘貂蝉’, 20, ‘女’);
– INSERT INTO student VALUES (3, ‘刘备’, 35, ‘男’);
– INSERT INTO student VALUES (4, ‘关羽’, 34, ‘男’);
– INSERT INTO student VALUES (5, ‘张飞’, 33, ‘女’);
–
–
– INSERT INTO teacher VALUES (1, ‘大王’);
– INSERT INTO teacher VALUES (2, ‘alex’);
– INSERT INTO teacher VALUES (3, ‘egon’);
– INSERT INTO teacher VALUES (4, ‘peiqi’);
– INSERT INTO course VALUES (1, ‘python’, 1);
– INSERT INTO course VALUES (2, ‘java’, 2);
– INSERT INTO course VALUES (3, ‘linux’, 3);
– INSERT INTO course VALUES (4, ‘go’, 2);
– INSERT INTO score VALUES (1, 1, 1, 79);
– INSERT INTO score VALUES (2, 1, 2, 77);
– INSERT INTO score VALUES (3, 1, 3, 58);
– INSERT INTO score VALUES (4, 2, 2, 66);
– INSERT INTO score VALUES (5, 2, 3, 77);
– INSERT INTO score VALUES (6, 3, 1, 61);
– INSERT INTO score VALUES (7, 3, 2, 64);
– INSERT INTO score VALUES (8, 4, 3, 70);
SQL语法练习(一)的更多相关文章
- 值得注意的ibatis动态sql语法格式
一.Ibatis常用动态sql语法,简单粗暴用一例子 <select id="iBatisSelectList" parameterClass="java.util ...
- Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)
Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...
- SQL 语法总结
学了一个月的java,开始有入门的感觉.这段时间接触到了java的JDBC, 发现学习这部分的内容还是要有SQL的基础,于是花费了几天时间学习了一下SQL语法,并将其总结于下. 选择数据 SELECT ...
- SQL语法和运算符(一)
一个数据库通常包含一个或多个表.每个表由一个名字标识,表包含带有数据的记录(行). 一些最重要的SQL命令(SQL对大小写不敏感): 一.SQL语法 select:从数据库中提取数据 update:更 ...
- [转]MySQL 最基本的SQL语法/语句
MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下. DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...
- SQL语法整理
SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...
- ORACLE分页查询SQL语法——最高效的分页
--1:无ORDER BY排序的写法.(效率最高)--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!) SELECT * FROM (SELECT ...
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- 有没有好用的开源sql语法分析器? - 匿名用户的回答 - 知乎
有没有好用的开源sql语法分析器? - 匿名用户的回答 - 知乎 presto,hive,drill,calcite,sparksq
- editplus的配置文件来支持sql语法高亮【转】
editplus默认是没有sql语法高亮的,原因是它的内部没有sql.stx的这样一个语法文件 我们自己在 EditPlus 的安装目录下面新建一个文件名为sql.stx,然后打开editplus ...
随机推荐
- 刷题41. First Missing Positive
一.题目说明 题目是41. First Missing Positive,求一个未排序队列中缺失的最小正整数.时间复杂度要求是O(n).难度是Hard,确实难. 二.我的解答 不考虑时间复杂度,首先对 ...
- CentOS 7 准备 Superset 环境
安装 anaconda 和 superset 下载 anaconda 软件: https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86 ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第八天】(solr服务器搭建、搜索功能实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- ZJNU 1138 - 小兔的棋盘——中级
二维图的动态规划因为不能穿越对角线,则选取对角线的一边dp即可选取对角线右下侧则x轴上每个点只能由其左侧的点走过去(只有1条)对角线上的点只能由对角线下方的点走过去其他点可以由左侧和下侧两种方式到达因 ...
- Mac环境下pyCharm的安装,激活及使用
1.pyCharm的安装 安装地址: https://www.jetbrains.com/pycharm/download/#section=mac 2.激活 获取注册码地址: http://idea ...
- [SDOI2019]移动金币(博弈论+阶梯Nim+按位DP)
首先可以把问题转化一下:m堆石子,一共石子数不超过(n-m)颗,每次可以将一堆中一些石子推向前一堆,无法操作则失败,问有多少种方法使得先手必胜? 然后这个显然是个阶梯Nim,然后有这样的结论:奇数层异 ...
- Git内部原理(1)
Git本质上是一套内容寻址文件系统,在此之上提供了VCS的用户界面. Git底层命令(plumbing) vs 高层命令(porcelain) Git的高层命令包括checkout.branch.re ...
- 2019-2020-1 20199324《Linux内核原理与分析》第二周作业
一.知识点总结 1.冯诺依曼体系结构的要点: ①五大基本类型部件:运算器.控制器.存储器.输入设备.输出设备 ②用二进制来表示指令和数据 ③ 核心:存储程序计算机 2.常见的汇编指令 mov指令(l指 ...
- Spring容器中的Bean几种初始化方法和销毁方法的先后顺序
https://blog.csdn.net/caihaijiang/article/details/8629725
- 绿洲作业第一周 - 美术Art work
Dear parents, Please remind your child to learn and finish the work as follows from the art teacher: ...