连接查询分类:
- sql92标准:仅仅支持内连接
- sql99标准:【推荐使用这种做法】
按功能分类:
- 内连接:等值连接、非等值连接、自连接
- 外连接:左外连接、右外连接、全外连接
- 交叉连接:笛卡尔积
1.笛卡尔乘积
笛卡尔乘积就是拿着主表中的每个元素依次与匹配次表中的每个元素,如果A表中有10条数据,B表中有5条数据,那么最终得到的结果就为50条。
SELECT bo.*, b.* FROM boys bo, beauty b;
该种写法是sql92,同时查了两个表,并未每个表起了别名,然后系统就会默认做笛卡尔积,将两个表中的记录进行拼接
2.等值连接
案例:查询女神和对应男神的名字
SELECT b.NAME, bo.boyName FROM boys bo, beauty b WHERE bo.id = b.boyfriend_id;
3.非等值连接
案例:查询出员工的工资和工资级别
它的做法同样是做笛卡尔积,拿着第一个表的每一条记录依次匹配第二个表的数据记录,一旦发现符合where条件将其连接
SELECT salary, grade_level FROM employees e, job_grades j WHERE salary BETWEEN j.lowest_sal AND j.highest_sal;
4.自连接
自连接说白了就是自己和自己进行连接,像查询大学选修课的先行课就利用自连接,因为它的先行课信息也在这个表当中
案例:查询员工名和上级的名称
这个任务就需要使用自连接操作,因为一个员工的上级同样是一个员工也在员工表中
SELECT e.last_name, m.last_name FROM employees e, employees m;
由于是自己和自己连接,那么就需要对表起别名,否则无法提取字段信息






