deyo
  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;

 

#二、sql99语法/*语法SELECT 查询列表FROM 表1 别名 【连接类型】JOIN 表2 别名on 连接条件【where 筛选条件】【group BY 分组】【having 筛选条件】【order by 排序列表】
分类:内连接:inner外连接:左外:left【outer】右外:right【outer】全外:full【outer】交叉连接:cross*/#一、内连接/* 语法:select 查询列表from 表1 别名inner join 表2 别名on 连接条件;
分类:等值非凳子自连接
特点①添加排序、分组、筛选② inner可以省略③筛选条件放在 where后面,连接条件放在on后面,提高分离性,便于阅读④ inner join连接和sq192语法中的等值连接效果是一样的*/#案例1、查询员工名、部门名SELECTlast_name,department_nameFROMemployees eINNER JOIN departments d ON e.department_id = d.department_id;
#案例2.查询名字中包含e的员工名和工种名(筛选)SELECTlast_name,job_titleFROMemployees eINNER JOIN jobs j ON e.job_id = j.job_idWHEREe.last_name LIKE '%e%';
#案例3.查询部门个数>3的城市名名和部门个数,(分组+筛选)#①查询每个城市的部门个数4#②在①结果上筛选满足条件的SELECTcity,department_id,COUNT(*) 部门个数FROMdepartments dINNER JOIN locations l ON d.location_id = l.location_idGROUP BYcityHAVING部门个数 > 3;
#案例4.查询哪个部门的部门员工个数》3的部门名和员工个数,并按个数降序(排序)SELECTCOUNT(*) 员工个数,d.department_nameFROMemployees eINNER JOIN departments d ON e.department_id = d.department_idGROUP BYdepartment_nameHAVING员工个数 > 3ORDER BY员工个数 DESC;
#案例5,查询员工名、部门名、工种名,并按部门名降序SELECTlast_name,department_name,job_titleFROMemployees eINNER JOIN departments d ON e.department_id = e.department_idINNER JOIN jobs j ON e.job_id = j.job_idORDER BYdepartment_name DESC;
#二、非等值连接#查询员工的工资级别SELECTsalary,grade_levelFROMemployees eJOIN job_grades g ON e.salary BETWEEN g.lowest_salAND g.highest_sal;
#查询工资级别的个数>20的个数,并且按工资 级别降序SELECTCOUNT(*) 工资级别个数,grade_levelFROMemployees eJOIN job_grades g ON e.salary BETWEEN g.lowest_salAND g.highest_salGROUP BYgrade_levelHAVINGCOUNT(*) > 20ORDER BYgrade_level DESC;

相关文章: