多表查询的相关知识
多表查询分为哪几类?
-
内连接查询
1.隐式内连接:使用where来消除无用的数据
2.显式内连接:换了一种格式
-
外连接查询
1.左外连接
2.右外连接
-
子查询
什么是笛卡尔积呢?
* 有两个集合A,B.取这两个集合的所有组成情况。一般合成的集合是C=A*B
* 要完成多表查询,需要消除无用的数据
如何消除笛卡尔积呢?
就是多表查询的产生的原因。
内连接查询的主要特点是什么呢?
1.从哪个表进行查询
2.选几个字段
3.使用什么条件
为什么要分显式内连接和隐式内连接?
显式内连接是一种新的表达方式,但是效果都是一样的。
显式内连接的格式中inner是一定要加上的吗?inner join左右的表名是可以交换顺序的吗?
是可以省略的。 INNER JOIN 左右的顺序是可以互换的,但是表的字段的顺序也是会互换的。
为什么需要左外连接?
如果有一个表中的数据有NULL的值,无法和另一个表进行匹配,这样的话,就需要使用左外连接,查询的是左表所有数据以及其交集部分。
外连接中的outer是可以省略的吗?
对的是可以省略的。
子查询是什么呢?
查询中嵌套查询。
查询结果作为一个条件来使用。
查询 查询最大值的条件
SELECT * FROM emp WHERE emp.salary
= (SELECT MAX(salary) FROM emp);
子查询分为哪几类?
子查询的结果是 单行单列;
子查询的结果是 多行单列;
子查询的结果是 多行多列;
子查询中的多行多列的情况是怎样的呢?
把子查询的结果集(一个表)当作一个条件来使用。
子查询可以作为一张虚拟表参与查询
子查询的多行单列的情况是什么样的呢?
子查询可以作为条件,使用运算符in来判断
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');