图解Mysql数据库中的连接查询

连接查询

关于mysql中各种连接查询的图解如下?
在这里插入图片描述

在下面的例题中,需要的数据表如下:

  1. employees(员工信息表)
    在这里插入图片描述
  2. departments(部门信息表)
    在这里插入图片描述
  3. jobs(工作信息表)
    在这里插入图片描述
  4. locations(地区信息表)
    在这里插入图片描述
sql99标准
  • 内连接

    • 内连接(inner join)

      1,先确定所连接的表,

      2,再确定所要查询的字段,

      3,确定连接条件以及连接方式

      特点:只查询在连接的表中能够有对应的记录

      -- 查询名字和部门名
      SELECT e.last_name,d.department_name		-- 可以是名称.字段名
      FROM employees e							-- 表名,别名
      INNER JOIN departments d					-- 表名,别名
      ON e.department_id = d.department_id		-- 字段相等的语句
      
    • 等值连接

      1)可以搭配前面学的所有字句,排序,分组,筛选
      2)多表等值连接的结果是两个表的交集
      3)n表连接至少需要(n-1)个连接条件
      4)一般需要给表起别名
      5)多表顺序没有要求

      -- 两个表,员工信息表,部门表
      -- 查询员工对应部门名
      SELECT last_name,department_name
      FROM employees emp,departments dept
      WHERE emp.department_id = dept.department_id	--用where进行等值连接
      
    • 非等值连接

      -- 两个表,员工信息表,工资表
      -- 查询员工的工资和工资级别
      SELECT salary,grade_level 
      FROM employees emp,job_grades job 				-- 对两个表起别名
      WHERE salary 
      BETWEEN job.lowest_sal AND job.highest_sal		-- 查询出各个工资所对应的级别
      

      还有 >, <, !==, 等等

    • 自连接

      当前表与自身的连接查询,关键点在于虚拟化出一张表给一个别名

      自连接查询一般用作表中的某个字段的值是引用另一个字段的值,比如权限表中,父权限也属于权限。

      -- 一个表,员工表,
      -- 查询员工名和上级的名称
      SELECT emp1.last_name 员工名,emp2.last_name 上级领导 
      FROM employees emp1,employees emp2 
      WHERE emp1.manager_id=emp2.employee_id;
      
  • 外连接

    应用场景:用于查询一个表中有,另一表中没有的记录

    • 左外连接查询(left join)

    以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null

    1. 关键字是left outer join,等效于left join

    2. 在关联查询中,做外连接查询就是左连接查询,两者是一个概念

      注意:

      • 左连接,左表内容会全部显示,但是还是要看select后的语句(查询语句)
      • select之后查询的字段,若有重复,需要用 表名.字段 的方式来写
    -- 两个表,部门名称表,地区表
    -- 查询部门名称以及对应的城市
    SELECT department_name,city
    FROM departments dept
    LEFT JOIN locations loc
    ON dept.location_id = loc.location_id
    
    • 右外连接查询(right outer join)

      和左外连接相同

  • 全外连接(full)

    把两张表的字段都查出来,没有对应的值就显示null

    1. 使用full关键字连接左外连接和右外连接
    2. 全外连接就是两个表的并集
sql92标准
  • 仅支持内连接

    -- 基本语法格式:
    SELECT 字段名 
    FROM 表一,表二,,,
    WHERE 表名1.连接字段1 = 表名2.连接字段2	
    

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值