sql99等值&&非等值查询

  1 #二、sql99语法
  2 /*
  3 语法
  4 SELECT 查询列表
  5 FROM 表1 别名 【连接类型】
  6 JOIN 表2 别名
  7 on 连接条件
  8 【where 筛选条件】
  9 【group BY 分组】
 10 【having 筛选条件】
 11 【order by 排序列表】
 12 
 13 分类:
 14 内连接:inner
 15 外连接:左外:left【outer】
 16                 右外:right【outer】
 17                 全外:full【outer】
 18 交叉连接:cross
 19 */
 20 #一、内连接
 21 /* 
 22 语法:
 23 select 查询列表
 24 from 表1 别名
 25 inner join 表2 别名
 26 on 连接条件;
 27 
 28 分类:
 29 等值
 30 非凳子
 31 自连接
 32 
 33 特点
 34 ①添加排序、分组、筛选
 35 ② inner可以省略
 36 ③筛选条件放在 where后面,连接条件放在on后面,提高分离性,便于阅读
 37 ④ inner join连接和sq192语法中的等值连接效果是一样的
 38 */
 39 #案例1、查询员工名、部门名
 40 SELECT
 41     last_name,
 42     department_name
 43 FROM
 44     employees e
 45 INNER JOIN departments d ON e.department_id = d.department_id;
 46 
 47 #案例2.查询名字中包含e的员工名和工种名(筛选)
 48 SELECT
 49     last_name,
 50     job_title
 51 FROM
 52     employees e
 53 INNER JOIN jobs j ON e.job_id = j.job_id
 54 WHERE
 55     e.last_name LIKE '%e%';
 56 
 57 #案例3.查询部门个数>3的城市名名和部门个数,(分组+筛选)
 58 #①查询每个城市的部门个数4
 59 #②在①结果上筛选满足条件的
 60 SELECT
 61     city,
 62     department_id,
 63     COUNT(*) 部门个数
 64 FROM
 65     departments d
 66 INNER JOIN locations l ON d.location_id = l.location_id
 67 GROUP BY
 68     city
 69 HAVING
 70     部门个数 > 3;
 71 
 72 #案例4.查询哪个部门的部门员工个数》3的部门名和员工个数,并按个数降序(排序)
 73 SELECT
 74     COUNT(*) 员工个数,
 75     d.department_name
 76 FROM
 77     employees e
 78 INNER JOIN departments d ON e.department_id = d.department_id
 79 GROUP BY
 80     department_name
 81 HAVING
 82     员工个数 > 3
 83 ORDER BY
 84     员工个数 DESC;
 85 
 86 #案例5,查询员工名、部门名、工种名,并按部门名降序
 87 SELECT
 88     last_name,
 89     department_name,
 90     job_title
 91 FROM
 92     employees e
 93 INNER JOIN departments d ON e.department_id = e.department_id
 94 INNER JOIN jobs j ON e.job_id = j.job_id
 95 ORDER BY
 96     department_name DESC;
 97 
 98 #二、非等值连接
 99 #查询员工的工资级别
100 SELECT
101     salary,
102     grade_level
103 FROM
104     employees e
105 JOIN job_grades g ON e.salary BETWEEN g.lowest_sal
106 AND g.highest_sal;
107 
108 #查询工资级别的个数>20的个数,并且按工资 级别降序
109 SELECT
110     COUNT(*) 工资级别个数,
111     grade_level
112 FROM
113     employees e
114 JOIN job_grades g ON e.salary BETWEEN g.lowest_sal
115 AND g.highest_sal
116 GROUP BY
117     grade_level
118 HAVING
119     COUNT(*) > 20
120 ORDER BY
121     grade_level DESC;

 

posted @ 2020-07-08 09:45  自律即自由-  阅读(501)  评论(1编辑  收藏  举报