zoukankan      html  css  js  c++  java
  • (十)mysql语法-连接查询


    #非等值连接查询
    #案例1:查询员工的工资和工资级别
    select a.salary,b.grade_level from employees a,job_grades b
    where a.salary BETWEEN b.lowest_sal and b.highest_sal;

    #自连接;简单的理解就是自己连接自己进行查询
    #查询员工名和上级的名称 这种情况说明是这张表中有一些比较特殊的字段,一共查询了这张表两遍 一张表当做两张表来使用,有些情况下,甚至当作更多张表来使用,分别当作了员工表和领导表
    SELECT a.employee_id,a.last_name,b.manager_id,b.last_name FROM employees a,employees b where a.employee_id=b.manager_id;
    SELECT a.employee_id,a.last_name,b.employee_id,b.last_name FROM employees a,employees b where a.employee_id=b.manager_id;--这两种写法,查询出来的效果是一样的

    #获取随机数
    select RAND();--返回0-1之间的随机数

    #password函数 将给定的字符进行加密
    select PASSWORD('赵永强');--结果:*7B24462CC76FA0D6E59A26F942D0C8B46F31F533
    #MD5函数,将给定的字符进行MD5加密
    select MD5('赵永强');--结果:8983fb3e10bd6c6817f6e7d128c67276

    #sql99语法标准
    语法: select 查询列表
    from 表1 别名 【连接类型】
    join 表2 别名
    on 连接条件
    where 筛选条件
    分类:
    内连接:inner
    外连接:
    左外连接 left [OUTER]
    右外连接 right [OUTER]
    全外连接 full [OUTER]
    交叉连接:cross
    #等值连接
    @案例一:查询员工名、部门名
    select a.last_name,b.department_name
    from employees a
    INNER JOIN departments b
    on a.department_id=b.department_id

    SELECT a.last_name,b.department_name from employees a , departments b where a.department_id=b.department_id;--这两种写法的查询出来的效果是一样的

    @案例二:查询名字中包含e的员工名和工种名
    select a.last_name,b.job_title
    from employees a
    INNER JOIN jobs b
    on a.job_id=b.job_id
    where a.last_name like '%e%';

    select a.last_name,b.job_title from employees a,jobs b where a.job_id=b.job_id AND a.last_name like '%e%';--这两种写法的查询出来的效果是一样的


    #查询部门个数>3的城市名和部门个数(添加分组和筛选)
    select b.city,count(*)
    from departments a
    INNER JOIN locations b
    ON a.location_id=b.location_id
    GROUP BY b.city
    HAVING count(*)>3;

    #案例4:查询哪个部门的盐工个数大于3的部门名和员工个数,并按照个数降序排列
    select count(*) 个数,department_name
    from employees a
    JOIN departments b
    on a.department_id=b.department_id
    GROUP BY department_name
    HAVING count(*)>3
    ORDER BY count(*) desc;

    #5.查询员工名,部门名、工种名,并按照部门名进行降序排列(添加三表连接)
    select last_name,department_name,job_title
    from employees a
    INNER JOIN departments b on a.department_id=b.department_id
    INNER JOIN jobs c on a.job_id=c.job_id
    ORDER BY department_name desc;

    ------其实上面所有的inner都是可以省略的,筛选条件放在where 后面,连接条件放在on后面 ,便于阅读
    #非等值连接
    #查询员工的工资级别
    select a.salary,b.grade_level from employees a INNER JOIN job_grades b on a.salary BETWEEN b.lowest_sal and b.highest_sal

    #查询工资级别的个数》20的个数,并按照工资级别进行降序排列
    select count(*),b.grade_level from employees a INNER JOIN job_grades b on a.salary BETWEEN b.lowest_sal and b.highest_sal
    GROUP BY b.grade_level desc
    HAVING count(*)>20

    #自连接
    #查询名字中包含字符k的员工姓名、上级的名字
    select a.last_name,b.last_name from employees a INNER JOIN employees b on a.employee_id = b.manager_id
    WHERE a.last_name like '%k%'

  • 相关阅读:
    iOS 使用GRMustache对HTML页面进行渲染
    算法 -- 排序
    ios 笔记
    ios 开发视图界面动态渲染
    Python环境变量设置
    Excel2010: Excel使用小技巧(不断更新)
    C: Answers to “The C programming language, Edition 2”
    VBScript: Windows脚本宿主介绍
    VBScript: 正则表达式(RegExp对象)
    VBScript Sample:遍历文件夹并获取XML文件中指定内容
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12317279.html
Copyright © 2011-2022 走看看