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 交叉連線:cross19 */ 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;