MySQL查询课程没有被选修过_mysql 查询 (二)

带 any/all 谓词的子查询

8cac3e9b0133363b1ecbca95d609068f.png

7b26cf86fe002fae9d4875d65102a50f.png

例子:

1. 查询出成绩比1号学生或3号学生高的其他学生的 的信息(stu)

查看 stu 表

9345ada1ce59aec699729d4e4492fe28.png

方法1:使用 any 谓词

fa33d4e03a20751b1e428dcb36662d02.png

方法2:使用聚合函数 min()

02ba685cac43d49712be3abaf270a763.png

2. 查询出成绩比1号学生和3号学生都高的其他学生的 的信息(stu)

使用 all 谓词

b3fb4b2cb24d217bac51143c25b23f37.png

使用聚合函数 max()

63da2c6577ec816b6c324d70982a840f.png

带有 exists 谓词的子查询

58aa4378c320375924a8ac754b50d736.png

例子:

1. 查询未选课程的学生信息(stu中有,而stu_score中没有的学号)

查看 stu, stu_score表

fa4236904ef04e6b4635a7f96027ff21.png

使用 not exists

ed5e60e8957f9afef80cd10bafdd555f.png

2. 查询既选修了1号课程又选修了4号课程的学生的学号(stu_score)

f67fba743f09de6447f3d5c320600eaf.png

基于派生表的查询(from 型子查询)

babfe99f829c7abdea48737da7d5982a.png

例子:

1. 用from型子查询实现 select * from stu where sex = 'f' and grade <60:(性别女,分数低于60)

9c28728a3e0fe505aebb4d64271a8ce2.png

连接查询

多表连接查询原理:

1. 先确定数据要用到哪些表。

2. 将多个表先通过笛卡尔积变成一个表。

3. 然后去除不符合逻辑的数据(根据where后的条件)。

32edc1ed645eb17e1706aeaebe77a153.png

44163e2d64f200e5fe579f03e33cea96.png

9575db457be899754135931ffe9b69fb.png

1. 不带谓词的连接(很少使用)

例如:

连接 stu 和 stu_score

select stu.*, stu_score.* from stu,stu_score;

2. 等值连接

例子:

(1) 查询选修了1号课程的所有学生的基本信息

581afc7e737a857a0bb31a2e47330aab.png

(2) 查询出所有学生的学号,姓名,课程名及各门功课的成绩 (stu,score,course)

stu,score,course三表如下所示:

11c0c4edb01983b6dbb7d880d374d166.png

9387fbf549d7efb3e2f280f3a1461e75.png

d2fa56bfbed143a25f0a792f40ffc93a.png

查询:

5853fecf6b863a0d1de493eec1457a3a.png

---------------------------------------------------------------------------------------------------------------------

自身连接

ae83c493b977a9f743122878559b62f9.png

例子

查询既选修了1号课程又选修了2号课程的学生的学号(score)

9a2a8b5bf5cb7bb47bb0a5622191cee4.png

----------------------------------------------------------------------------------------------------------------------------

外连接

22c9b17c5cb053d785eb9c68525320c2.png

9303ebf0cfb00bb6e823aea44e408177.png

700402d76427cb6c9618b221af3813a4.png

例子

查询出所有学生的学号,姓名,课程号,及各门功课的成绩 (stu,stu_score)包括没有选修任何课程的学生

stu, stu_score 表

2ce70326487f473af576b0bafa500502.png

stu 左连接 stu_score

6fa38a5e16ae2df23ce22c40883e5892.png

stu 右连接 stu_score

56b3649ec41a6f35a5f98999b8259f8f.png

集合查询

cd77606801c3098a11534f6fc2f61562.png

1. 并操作:union

bce566e02c1b4513d94a8cae317905af.png

例子:

(1): 合并 A 和 B,id 对应的 num 求和

A, B:

9d9c3068e7d65e9183a2150a07e6f1f4.png

合并:

a9194bb24ec4d96ce1c25744cd116d3a.png


版权声明:本文为weixin_42311375原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。