zoukankan      html  css  js  c++  java
  • 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

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

      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;

     

  • 相关阅读:
    读《构建之法》阅读与思考
    软工沉浮沉沉沉沉沉沉…记事
    四则运算截图and代码
    2016012000郭慕然+散列函数的应用及其安全性
    结对作业之四则运算网页版
    阅读《构建执法》第四章及第十七章有感
    2016012000小学四则运算练习软件项目报告
    有关读《构建之法》的部分思考与疑问
    遇见·软件
    我的——今日学习内容
  • 原文地址:https://www.cnblogs.com/evething-begins-with-choice/p/12955713.html
Copyright © 2011-2022 走看看