MySQL多表连接查询

多表查询:当查询结果来自多张数据表的时,就需要用到连接查询。

多表连接查询:会出现笛卡尔积的现象:a表有m行,b表有n行,查询结果=m*n行,消除笛卡尔积现象就必须加上关联条件,关联条件的个数=n个表-1。

多表连接查询按照能分类为:
1、内连接:

        等值连接:表之间连接条件用 = 连接 
        非等值连接:表之间连接条件用非等号
        自连接:相当于等值连接,只不过是自己连接自己,不像等值连接是两个不同的表 

语法格式:

select                 
    查询列表       
from                
    表1 别名1,
    表2 别名2,
    ......      
where               
     关联条件 and
     筛选条件(针对表的所有记录)       
group by                
    分组字段列表       
having(只能配合group by使用)                
    与分组有关的筛选条件(针对分组后的每组内记录)       
order by                
    排序

后天的关键字查询条件可根据需求进行选择,

自连接 eg:

select 
    e.name,m.salary
from 
    employees e, employees m #把同一张表当成两张不同表
where 
    e.manager_id = m.employee_id
order 不要
    m.salary DESC;


2、外连接: 

        左外连接:查询结果以左表为主表查询所有记录,从表无记录数据时为null
        右外连接:查询结果以右表为主表查询所有记录,从表无记录数据时为null
        全外连接:Mysql不支持
        交叉连接:就两个记录做笛卡尔积,不加关联条件

语法格式:

select 
    查询列表
from 
    表1 别名1
   【链接类型】 join 表2 别名2
    on 关联条件
   【链接类型】 join 表3 别名3
    on 关联条件
where               
     筛选条件(针对表的所有记录)       
group by                
    分组字段列表       
having(只能配合group by使用)                
    与分组有关的筛选条件(针对分组后的每组内记录)       
order by                
    排序

1)【链接类型】的关键字:

内连接:inner (还可以省略)
外连接:
    左外连接 left 【outer】  (outer可以省略)
    右外连接 right 【outer】
    全外连接 full 【outer】(Mysql不支持)
    交叉连接 cross 【outer】(不常用)

2)外连接知识点:

1、外连接的查询结果为主表中有的所有记录
     外表有对应数据,结果记录上显示对应数据
     外表中没有对应的数据,结果记录上填充null

2、外链接与连接的区别:
     内连接:当从表没有记录的时候,主、从表的记录都丢掉!
     外连接:当从表没有记录的时候,会保留主表的记录,对应从表null

3、左外连接:left join左边的是主表,
     右外连接:right join 右边的是主表

4、左外连接和右外连接上是互通的,掌握一个就好啦!

内连接 eg:

select 
    e.name,j.job_title,d.department_name
from 
    employees e
    inner join departments d
    on e.department_id = d.department_id
    inner join jobs j
    on e.job_id=j.job_id
where e.salary >5000
order by d.department_name;

左连接 eg:

SELECT 
    d.department_id,d.department_name,e.employee_id
FROM 
    departments d
    LEFT JOIN employees e
    ON d.department_id = e.department_id
WHERE 
    e.employee_id IS NULL;

猜你喜欢

转载自blog.csdn.net/qq_42402854/article/details/84574895