连接查询

连接查询:

内连接:等值连接,非等值连接,自连接

外连接:左外连接,右外连接,全外连接

交叉连接

sql92仅支持内连接:

等值连接:(多表)

多表等值连接的结果为多表的交集部分

n表连接,至少需要n-1个连接条件

多表的顺序没有要求

一般需要为表取别名

可以搭配排序、分组、筛选等语句

示例:

SELECT e.last_name,e.job_id,j.job_title

FROM employees e,jobs j

WHERE e.`job_id`=j.`job_id`;

非等值连接:(多表)

连接条件至少包含非等值条件

自连接:(单表)

将一个表作为多表使用,查询多次

示例:

SELECT e.employee_id,e.last_name,m.employee_id,m.last_name

FROM employees e,employees m

WHERE e.`manager_id`=m.`employee_id`;

sql99:

内连接:

SELECT 查询列表

FROM 表1 别名

INNER JOIN 表2 别名

ON 连接条件

(多表时JOIN ON为一组增加连接条件,且INNER可省略)

外连接:

外连接查询结果=内连接结果+主表中有而从表中没有的记录

LEFT OUTER JOIN 左边为主表

RIGHT OUTER JOIN 右边为主表

SELECT d.*,e.employee_id
FROM department d
LEFT OUTER JOIN employees e
ON d.`department_id` = e.`department_id`
WHERE e.`employee_id` IS NULL

MySQL不支持全外连接

交叉连接:

两个表进行笛卡尔乘积

1.jpg

该图来源

原文地址:https://www.cnblogs.com/faded828x/p/13174104.html