最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。
资源地址在最下方。
本篇文章,作为学习笔记可配套学习!
ANY和ALL
概念练习ANY:任意一个表示所有的 ALL 视频资源:概念
首先any和all都是用于子查询的;
ALL:是所有,表示全部都满足才返回true
ANY:是任意一个 ,表示有任何一个满足就返回true
练习
ANY:任意一个
查询课程 3-105 且成绩 至少 高于 3-245 其中一名同学的 score 表。
SELECT * FROM score WHERE c_no = '3-105';+------+-------+--------+| s_no | c_no | degree |+------+-------+--------+| 101 | 3-105 |90 || 102 | 3-105 |91 || 103 | 3-105 |92 || 104 | 3-105 |89 || 105 | 3-105 |88 || 109 | 3-105 |76 |+------+-------+--------+SELECT * FROM score WHERE c_no = '3-245';+------+-------+--------+| s_no | c_no | degree |+------+-------+--------+| 103 | 3-245 |86 || 105 | 3-245 |75 || 109 | 3-245 |68 |+------+-------+--------+
– ANY: 符合SQL语句中的任意条件。
– 也就是说,在 3-105 成绩中,只要有一个大于从 3-245 筛选出来的任意行就符合条件,
-- 最后根据降序查询结果。SELECT * FROM score WHERE c_no = '3-105' AND degree > ANY(SELECT degree FROM score WHERE c_no = '3-245') ORDER BY degree DESC;+------+-------+--------+| s_no | c_no | degree |+------+-------+--------+| 103 | 3-105 |92 || 102 | 3-105 |91 || 101 | 3-105 |90 || 104 | 3-105 |89 || 105 | 3-105 |88 || 109 | 3-105 |76 |+------+-------+--------+
表示所有的 ALL
查询课程 3-105 且成绩高于 3-245 的 score 表。
– 只需对上一道题稍作修改。
– ALL: 符合SQL语句中的所有条件。
– 也就是说,在 3-105 每一行成绩中,都要大于从 3-245 筛选出来全部行才算符合条件。
SELECT * FROM score WHERE c_no = '3-105' AND degree > ALL(SELECT degree FROM score WHERE c_no = '3-245');+------+-------+--------+| s_no | c_no | degree |+------+-------+--------+| 101 | 3-105 |90 || 102 | 3-105 |91 || 103 | 3-105 |92 || 104 | 3-105 |89 || 105 | 3-105 |88 |+------+-------+--------+
视频资源:
《一天学会MySQL数据库》
/video/BV1Vt411z7wy?p=21