- 连接查询
定义:数据往往不是存放储一张表中,而是同时存储在多张表中,这些表与表存在着关系,我们在检索数据的时候往往需要多张表联合起来检索,这种多表联合检索被称为连表查询或跨表查询
需要注意的笛卡尔乘积现象
含义:若两张表进行连接查询的时候没有任何条件限制,最终的查询结果总数是两张表记录的乘积,该现在称为笛卡尔积现象。
2、根据SQL语法规则出现的年代分类
SQL92语法
查询每一个员工所在的部门名称,要求最终显示员工姓名和对应的部门名称
select xxxx from A表名,B表名 where 表连接条件 and 数据查询条件;
缺点:表连接条件与查询条件放在一起,没有分离;
SQL99语法【只掌握SQL99 】
语法:
select xxxx from A表名 join B表名 where 数据查询条件;
优点:表连接独立,结构清晰,如果结果数据不满足要求,可再追加where条件进行过滤;
3、根据连接方式分类
- 内连接 :只连接匹配的行,即A表与B表相连接,能够匹配的记录查询出来
具体来说:这个部门有员工,而这个员工又有所属的部门,数据是一一对应的,这样的数据才能被内连接查询出来
但是:有的部门没有员工,有的员工没有部门 - 外连接:A表和B表能够完全匹配的记录查询出来之外,将其中一张表的记录无条件的完全查询出来,
- 对方表没有匹配的记录时,会自动模拟出null值与之匹配
- 外连接的查询结果条数 >= 内连接的查询结果条数
4、内连接之等值连接
- 定义:只连接匹配的行,即A表与B表相连接,能够匹配的记录查询出来
- 等值连接 ,用=连接两个表的条件
5、内连接之非等值连接
- 用非等号连接两个表中的条件
- 案例:查询员工的工资及其工资级别
select e.ename,e.sal,s.grade from emp e join salgrade s on e.sal between s.losal and hisal
6、内连接之自连接
- 案例:查询员工的经理的信息
- 思路:通过表的别名把一个表虚拟成两个表,然后在这个两个表上面做等值查询