Mysql基础(四):sql查询(四)连接查询

##进阶6:多表连接查询

笛卡尔乘积:如果连接条件省略或无效则会出现
解决办法:添加上连接条件

一、传统模式下的连接 :等值连接——非等值连接


  1.等值连接的结果 = 多个表的交集
  2.n表连接,至少需要n-1个连接条件
  3.多个表不分主次,没有顺序要求
  4.一般为表起别名,提高阅读性和性能

二、sql99语法:通过join关键字实现连接

  含义:1999年推出的sql语法
  支持:
    等值连接、非等值连接 (内连接)
  外连接
  交叉连接

语法:

  select 字段,...
  from 表1
 【inner|left outer|right outer|cross】join 表2 on 连接条件
 【inner|left outer|right outer|cross】join 表3 on 连接条件
 【where 筛选条件】
   【group by 分组字段】
 【having 分组后的筛选条件】
   【order by 排序的字段或表达式】

  好处:语句上,连接条件和筛选条件实现了分离,简洁明了!


三、自连接

案例:查询员工名和直接上级的名称

sql99

  SELECT e.last_name,m.last_name
  FROM employees e
  JOIN employees m ON e.`manager_id`=m.`employee_id`;

sql92


  SELECT e.last_name,m.last_name
  FROM employees e,employees m
  WHERE e.`manager_id`=m.`employee_id`;

原文地址:https://www.cnblogs.com/qiu-hua/p/14873495.html