1、什么是连接查询?
从一张表中查询数据,称为单表查询。
多张表联合起来查询数据,称为连接查询。在实际开发中一般一个业务会对应多张表,所以连接查询使用较多。
2、连接查询的分类:
根据语法的年代分类:SQL92(1992年出现的语法)和SQL99(1999年出现的语法)
根据表连接的方式分类:
内连接:等值连接、非等值连接和自连接。
外连接:左外连接/左连接和右外连接/右连接
全连接:(现阶段不接触)
3、笛卡尔积现象:
当两张表进行连接查询时,如果没有任何条件限制,最终显示查询结果的条数是两张表记录条数的乘积该现象称为笛卡尔积现象。(这是笛卡尔积发现的数学现象)
4、怎么避免笛卡尔积现象?(连接时加条件,满足条件的被查出来)
加入条件后,虽然最终显示的条数减少了,但是查询过程中匹配的次数没有减少,还是两表记录条数的乘积。
【通过笛卡尔积现象得出,表与表的连接次数越多效率越低,为此应当尽量降低表的连接次数。】
举例:查询员工及其所在部门:涉及到员工表emp和部门表dept(两张表中都有部门编号)
SQL:
select
ename,dname
from
emp,dept
where
emp.deptno = dept.deptno; #这里加入连接条件后,查询结果显示的记录条数就会减少。
为了提升效率可以写成:
select
emp.ename,dept.dname #这里加入具体表对应的字段名,可以提升效率。
from
emp,dept
where
emp.deptno = dept.deptno;
利用别名来简化编写命令如下:
select
e.ename,d.dname
from
emp e,dept d #这里省略了as, 为什么可以在这里起别名,是因为from最先执行。
where
e.deptno = d.deptno;