MySQL------SQL99语法⼀、SQL99语法
  语法:
    select  查询列表
    from 表1 别名【连接类型】
    join 表2 别名
    on 连接条件
   【where 筛选条件】
   【group by 分组】
   【having 筛选条件】
   【oder by 排序列表】
  分类:
    内连接:inner
    外连接:左外 left【outer】、右外 right【outer】、全外 full【outer】
    交叉连接:cross
⼆、内连接
  语法:
    select  查询列表
    from 表1 别名
    inner join 表2 别名
    on 连接条件
  分类:等值连接、⾮等值连接、⾃连接
    #案例:查询员⼯名、部门名<;等值连接>
    SELECT last_name,department_name
    FROM employees e
    INNER JOIN departments d
    ON e.`department_id` = d.`department_id`
    #案例:查询员⼯名、部门名、⼯种名‘、并按部门名降序
    SELECT last_name,department_name,job_title
    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`
    ORDER BY department_name DESC;
  特点:1、添加排序、分组、筛选
     2、inner 可以省略
     3、筛选条件放在where后⾯,连接条件放在on后⾯,提⾼分离性,便于阅读
     4、inner join 连接和 sq192语法中的等值连接效果是⼀样的,都是查询多表的交集
三、⾮等值连接
  #查询员⼯的⼯资级别
  SELECT salary,grade_level
  FROM employees e
  JOIN job_grades g
  ON e.`salary` BETWEEN g.`lowest_sal`AND g.`highest_sal`;
四、⾃连接
  #案例:查询员⼯的名字、上级的名字
  SELECT e.last_name 员⼯,m.last_name 领导
  FROM employees e
  JOIN employees m
  ON m.`employee_id` = e.`manager_id` ; #含义:领导下的员⼯ = 员⼯上的领导
五、外连接
  应⽤场景:⽤于查询⼀个表中有,另⼀个表没有的记录
  特点:
  1、外连接的查询结果为主表中的所有记录
      如果从表中有和它匹配的,则显⽰匹配的值
      如果从表中没有和它匹配的,则显⽰null
      外连接查询结果=内连接结果+主表中有⽽从表没有的记录
mysql交集查询
  2、左外连接,left join左边的是主表
  右外连接,right join右边的是主表
  3、左外和右外交换两个表的顺序,可以实现同样的效果
  4、全外连接 = 内连接的结果+表1中有但表2没有的,表2中有但表1没有的
      #案例:查询没有男朋友的⼥⽣名(左外)
      SELECT be.name,bo.id,bo.`boyName`
      FROM beauty be
      LEFT OUTER JOIN boys bo
      ON be.`boyfriend_id` = bo.`id`
      WHERE bo.id IS NULL;
      #案例:查询没有男朋友的⼥⽣名(右外)
      SELECT be.*,bo.*,
      FROM boys bo
      RIGHT OUTER JOIN beauty be
      ON be.`boyfriend_id` = bo.`id`
      WHERE be.id IS NULL;
五、交叉连接     
      #案例
      SELECT b.*,bo.*
      FROM beauty b
      CROSS JOIN boys bo;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。