笛卡尔积
笛卡尔积是指数学中两组X和Y的笛卡尔积,也称为直积,表示为X×Y,第一个对象是X,第二个对象是X的一个成员。Y的所有可能的有序对[3]。
假设集合A = {a,b}且集合B = {0,1,2},则这两个集合的笛卡尔积为{(a,0),(a,1),(a,2 ),(b,0),(b,1),(b,2)}。
内连接
外连接
外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示我们就说是左外连接;右侧的表完全显示我们就说是右外连接。
自连接
涉及到行与行之间的比较时,就需要自连接了
示例:显示所有“计算机原理”成绩比“Java”成绩高的成绩信息
子查询
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
单行子查询:返回一行记录的子查询
案例:查询与“小白” 同学的同班同学:
多行子查询:返回多行记录的子查询
[NOT] IN关键字:
先执行子查询的SQL,得到的结果放到内存中,再进行外层查询,就直接把给出的限制条件和子查询的结果比较,筛选就好了。(依赖内存,适合子查询的结果集合比较小的情况)
[NOT] EXISTS关键字:
先执行外层查询,依次取每一条外层查询的记录,带入到里层查询中
如果里层查询的结果集合非空,就保留外层查询到的结果
如果里层查询的结果集合为空,就丢弃外层查询到的结果
不依赖内存,适合外层查询结果集合小,子查询的结果集合比较大的情况
合并查询
为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION
和UNION ALL时,前后查询的结果集中,字段需要一致。
union
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。
案例:查询id小于3,或者名字为“英文”的课程:
union all
该运算符用于获取两个结果集的并集。使用此运算符时,结果集中的重复行将不会被删除。
情况:查询ID小于3或名称为“ Java”的课程:
我来说两句