數據庫的查詢(結合YGGL.sql)


(如有錯誤,歡迎指正!)

1.select 語句查詢

(1)查詢employees表員工部門號和性別,要求消除重復行。

mysql> select distinct 員工部門號,性別 from employees;

+-----------------+--------+

| 員工部門號      | 性別   |

+-----------------+--------+

| 2               | 1      |

| 1               | 1      |

| 1               | 0      |

| 5               | 1      |

| 3               | 0      |

| 3               | 1      |

| 4               | 1      |

| 4               | 0      |

+-----------------+--------+

8 rows in set (0.03 sec)

 

2)計算salary表每個雇員的實際收入(實際收入=收入-支出)。

mysql>  select  (收入-支出) as 實際收入 from salary;

+--------------------+

| 實際收入           |

+--------------------+

| 1977.7100524902344 |

| 1494.5899963378906 |

|               2662 |

|  2167.679931640625 |

| 2384.2298889160156 |

|               1880 |

|  2978.459991455078 |

| 1907.4300079345703 |

|               2119 |

|  2770.499954223633 |

| 2332.8999786376953 |

|   1958.14990234375 |

+--------------------+

12 rows in set (0.00 sec)

 

3)查詢employees表中員工的姓名和性別,要求sex值為1時,顯示為‘男’,為0顯示為‘女’。

mysql> Select 姓名,  

case

when  性別=1  then ""

when  性別=0  then ""

end as 性別

from employees;

+-----------+--------+

| 姓名      | 性別   |

+-----------+--------+

| 王林      | 男     |

| 伍容華    | 男     |

| 王向容    | 男     |

| 李麗      | 女     |

| 劉明      | 男     |

| 朱俊      | 男     |

| 鍾敏      | 女     |

| 張石兵    | 男     |

| 林濤      | 男     |

| 李玉珉    | 男     |

| 葉凡      | 男     |

| 陳林琳    | 女     |

+-----------+--------+

12 rows in set (0.00 sec)

4)查詢employees表每個雇員的地址和電話,列標題要求顯示為 address telephone。

mysql> select  地址 as  adress, 電話號碼 as telephone from employees;

+--------------------+-----------+

| adress               | telephone |

+--------------------+-----------+

| 中山路32-1-508     | 83355668  |

| 北京東路100-2      | 83321321  |

| 四牌樓10-0-108     | 83792361  |

| 中山東路102-2      | 83413301  |

| 虎距路100-2        | 83606608  |

| 牌樓巷5-3-106      | 84708817  |

| 中山路10-3-105     | 83346722  |

| 解放路34-1-203     | 84563418  |

| 中山北路24-35      | 83467336  |

| 熱和路209-3        | 58765991  |

| 北京西路3-7-52     | 83308901  |

| 漢中路120-4-12     | 84468158  |

+--------------------+-----------+

12 rows in set (0.00 sec)

 

5)計算salary表中員工月收入的平均數。

mysql> select avg(收入)as 平均收入 from salary;

+-------------------+

| 月平均收入          |

+-------------------+

| 2375.566640218099 |

+-------------------+

1 row in set (0.00 sec)

 

6)計算所有員工的總支出。

mysql> select  sum(支出) as 總支出 from salary;

+--------------------+

|  總支出        |

+--------------------+

| 1874.1499786376953 |

+--------------------+

1 row in set (0.00 sec)

 

7)顯示女雇主的地址和電話。

mysql> select 姓名, 地址,電話號碼 from employees where 性別=0;

+-----------+-------------------+--------------+

| 姓名      | 地址              | 電話號碼     |

+-----------+-------------------+--------------+

| 李麗      | 中山東路102-2     | 83413301     |

| 鍾敏      | 中山路10-3-105    | 83346722     |

| 陳林琳    | 漢中路120-4-12    | 84468158     |

+-----------+-------------------+--------------+

3 rows in set (0.00 sec)

 

(8)計算員工總數。

mysql> select count(*) from employees;

+----------+

| count(*) |

+----------+

|       12 |

+----------+

1 row in set (0.00 sec)

 

9)顯示員工的最高收入和最低收入。

mysql> Select max(收入),min(收入) from salary;

+------------------+--------------------+

| max(收入)        | min(收入)          |

+------------------+--------------------+

| 3259.97998046875 | 1582.6199951171875 |

+------------------+--------------------+

1 row in set (0.00 sec)

 

2.條件查詢

(1)顯示月收入高於2000元員工的員工號。

mysql> select 員工編號 from salary where 收入>2000;

+--------------+

| 員工編號     |

+--------------+

| 000001       |

| 020010       |

| 020018       |

| 102201       |

| 108991       |

| 210678       |

| 302566       |

| 308759       |

| 504209       |

+--------------+

9 rows in set (0.00 sec)

2)查詢1970年以后的員工的姓名和地址。

mysql> select 姓名,地址 from employees where 出生日期>"1970-1-1";

+-----------+--------------------+

| 姓名      | 地址               |

+-----------+--------------------+

| 伍容華    | 北京東路100-2      |

| 王向容    | 四牌樓10-0-108     |

| 劉明      | 虎距路100-2        |

| 鍾敏      | 中山路10-3-105     |

| 張石兵    | 解放路34-1-203     |

| 林濤      | 中山北路24-35      |

| 葉凡      | 北京西路3-7-52     |

+-----------+--------------------+

7 rows in set (0.00 sec)

 

(3)顯示工作年限三年以上(包含3年)、學歷在本科以上(包含本科)的男性員工的信息。

mysql> select * from employees where 工作年限>=3 and (學歷="本科" or 學歷="碩士") and 性別 = 1;

+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+

| 員工編號     | 姓名      | 學歷   | 出生日期     | 性別   | 工作年限     | 地址              | 電話號碼     | 員工部門號      |

+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+

| 010008       | 伍容華    | 本科   | 1976-03-28   | 1      |            3 | 北京東路100-2     | 83321321     | 1               |

| 102201       | 劉明      | 本科   | 1972-10-18   | 1      |            3 | 虎距路100-2       | 83606608     | 5               |

| 302566       | 李玉珉    | 本科   | 1968-09-20   | 1      |            3 | 熱和路209-3       | 58765991     | 4               |

+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+

3 rows in set (0.00 sec)

 

4)查找員工中倒數第二個數字為0的員工的姓名、地址和學歷。

mysql> select 姓名,地址,學歷 from employees where 員工編號 like "%0_";

+-----------+-------------------+--------+

| 姓名      | 地址              | 學歷   |

+-----------+-------------------+--------+

| 王林      | 中山路32-1-508    | 大專   |

| 伍容華    | 北京東路100-2     | 本科   |

| 劉明      | 虎距路100-2       | 本科   |

| 朱俊      | 牌樓巷5-3-106     | 碩士   |

| 張石兵    | 解放路34-1-203    | 本科   |

| 陳林琳    | 漢中路120-4-12    | 大專   |

+-----------+-------------------+--------+

6 rows in set (0.00 sec)

 

5)查詢月收入在2000-3000元的員工。

mysql>  select * from salary  where 收入>=2000 and 收入<=3000;

+--------------+---------+--------+

| 員工編號     | 收入    | 支出   |

+--------------+---------+--------+

| 000001       |  2100.8 | 123.09 |

| 020010       |    2860 |    198 |

| 020018       | 2347.68 |    180 |

| 102201       | 2569.88 | 185.65 |

| 210678       |    2240 |    121 |

| 302566       |  2980.7 |  210.2 |

| 308759       | 2531.98 | 199.08 |

| 504209       | 2066.15 |    108 |

+--------------+---------+--------+

8 rows in set (0.00 sec)

 

3.多表查詢

1)查詢王林的基本情況和所工作的部門名稱。

mysql> select * from employees e,departments d where e.員工部門號=d.部門編號 and 姓名="王林";

+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+

| 員工編號     | 姓名   | 學歷   | 出生日期     | 性別   | 工作年限     | 地址              | 電話號碼     | 員工部門號      | 部門編號     | 部門名稱        | 備注   |

+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+

| 000001       | 王林   | 大專   | 1966-01-23   | 1      |            8 | 中山路32-1-508    | 83355668     | 2               | 2            | 人力資源部      | NULL   |

+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+

1 row in set (0.00 sec)

 

2)查詢財務部、研發部、市場部的員工信息。(預習和學習子查詢相關知識)

mysql> select * from employees e,departments d where e.員工部門號=d.部門編號  and (部門名稱="財務部" or 部門名稱="市場部" or 部門名稱="研發部");

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+

| 員工編號     | 姓名      | 學歷   | 出生日期     | 性別   | 工作年限     | 地址               | 電話號碼     | 員工部門號      | 部門名稱     |

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+

| 010008       | 伍容華    | 本科   | 1976-03-28   | 1      |            3 | 北京東路100-2      | 83321321     | 1               | 財務部       |

| 020010       | 王向容    | 碩士   | 1982-12-09   | 1      |            2 | 四牌樓10-0-108     | 83792361     | 1               | 財務部       |

| 020018       | 李麗      | 大專   | 1960-07-30   | 0      |            6 | 中山東路102-2      | 83413301     | 1               | 財務部       |

| 302566       | 李玉珉    | 本科   | 1968-09-20   | 1      |            3 | 熱和路209-3        | 58765991     | 4               | 研發部       |

| 308759       | 葉凡      | 本科   | 1978-11-18   | 1      |            2 | 北京西路3-7-52     | 83308901     | 4               | 研發部       |

| 504209       | 陳林琳    | 大專   | 1969-09-03   | 0      |            5 | 漢中路120-4-12     | 84468158     | 4               | 研發部       |

| 102201       | 劉明      | 本科   | 1972-10-18   | 1      |            3 | 虎距路100-2        | 83606608     | 5               | 市場部       |

| 102208       | 朱俊      | 碩士   | 1965-09-28   | 1      |            2 | 牌樓巷5-3-106      | 84708817     | 5               | 市場部       |

| 111006       | 張石兵    | 本科   | 1974-10-01   | 1      |            1 | 解放路34-1-203     | 84563418     | 5               | 市場部       |

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+

9 rows in set (0.00 sec)

 

 

3)查詢每個雇員的基本情況和薪水情況。

(找到兩種方法)

mysql> Select * from employees  join  salary using(員工編號);

mysql> Select * from employees e,salary s where e.員工編號=s.員工編號 ;

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+

| 員工編號     | 姓名      | 學歷   | 出生日期     | 性別   | 工作年限     | 地址               | 電話號碼     | 員工部門號      | 收入    | 支出   |

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+

| 000001       | 王林      | 大專   | 1966-01-23   | 1      |            8 | 中山路32-1-508     | 83355668     | 2               |  2100.8 | 123.09 |

| 010008       | 伍容華    | 本科   | 1976-03-28   | 1      |            3 | 北京東路100-2      | 83321321     | 1               | 1582.62 |  88.03 |

| 020010       | 王向容    | 碩士   | 1982-12-09   | 1      |            2 | 四牌樓10-0-108     | 83792361     | 1               |    2860 |    198 |

| 020018       | 李麗      | 大專   | 1960-07-30   | 0      |            6 | 中山東路102-2      | 83413301     | 1               | 2347.68 |    180 |

| 102201       | 劉明      | 本科   | 1972-10-18   | 1      |            3 | 虎距路100-2        | 83606608     | 5               | 2569.88 | 185.65 |

| 102208       | 朱俊      | 碩士   | 1965-09-28   | 1      |            2 | 牌樓巷5-3-106      | 84708817     | 5               |    1980 |    100 |

| 108991       | 鍾敏      | 碩士   | 1979-08-10   | 0      |            4 | 中山路10-3-105     | 83346722     | 3               | 3259.98 | 281.52 |

| 111006       | 張石兵    | 本科   | 1974-10-01   | 1      |            1 | 解放路34-1-203     | 84563418     | 5               | 1987.01 |  79.58 |

| 210678       | 林濤      | 大專   | 1977-04-02   | 1      |            2 | 中山北路24-35      | 83467336     | 3               |    2240 |    121 |

| 302566       | 李玉珉    | 本科   | 1968-09-20   | 1      |            3 | 熱和路209-3        | 58765991     | 4               |  2980.7 |  210.2 |

| 308759       | 葉凡      | 本科   | 1978-11-18   | 1      |            2 | 北京西路3-7-52     | 83308901     | 4               | 2531.98 | 199.08 |

| 504209       | 陳林琳    | 大專   | 1969-09-03   | 0      |            5 | 漢中路120-4-12     | 84468158     | 4               | 2066.15 |    108 | 

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+ 

12 rows in set (0.01 sec)

 

 

 

4)查詢研發部在1970年以前的員工姓名和薪水情況。

 mysql> select  e.姓名,s.收入,s.支出

 from employees e,salary s,departments d

 where e.員工部門號=d.部門編號

 and e.員工編號=s.員工編號

 and d.部門名稱="研發部"

 and e.出生日期<"1970" ;

 

+-----------+---------+--------+

 

| 姓名      | 收入    | 支出   |

 

+-----------+---------+--------+

 

| 李玉珉    |  2980.7 |  210.2 |

 

| 陳林琳    | 2066.15 |    108 |

 

+-----------+---------+--------+

 

2 rows in set, 1 warning (0.00 sec)

 

 

 

5查詢employees表中員工的姓名、住址和收入水平,要求2000元以下顯示為‘低收入’,2000-3000顯示為‘中等收入’,3000元以上顯示為‘高收入’。

 mysql> select 姓名,地址,

 case

 when 收入<2000 then "低收入"

 when 收入>3000 then "高收入"

 when 收入>2000 and 收入<3000 then "中等收入"

 end as "收入等級"  

 from employees,salary

 where employees.員工編號=salary.員工編號;

+-----------+--------------------+--------------+

 

| 姓名      | 地址               | 收入等級     |

 

+-----------+--------------------+--------------+

 

| 王林      | 中山路32-1-508     | 中等收入     |

 

| 伍容華    | 北京東路100-2      | 低收入       |

 

| 王向容    | 四牌樓10-0-108     | 中等收入     |

 

| 李麗      | 中山東路102-2      | 中等收入     |

 

| 劉明      | 虎距路100-2        | 中等收入     |

 

| 朱俊      | 牌樓巷5-3-106      | 低收入       |

 

| 鍾敏      | 中山路10-3-105     | 高收入       |

 

| 張石兵    | 解放路34-1-203     | 低收入       |

 

| 林濤      | 中山北路24-35      | 中等收入     |

 

| 李玉珉    | 熱和路209-3        | 中等收入     |

 

| 葉凡      | 北京西路3-7-52     | 中等收入     |

 

| 陳林琳    | 漢中路120-4-12     | 中等收入     |

 

+-----------+--------------------+--------------+

 

12 rows in set (0.00 sec)

 

 

 

4.分類匯總與排序

 

1按部門列出該部門的員工人數

 mysql> select  d.部門名稱, count(e.姓名) as "員工總人數"

 from employees e,departments d

 where e.員工部門號=d.部門編號 group by d.部門名稱;

 

+-----------------+-----------------+

 

| 部門名稱        | 員工總人數      |

 

+-----------------+-----------------+

 

| 人力資源部      |               1 |

 

| 市場部          |               3 |

 

| 研發部          |               3 |

 

| 經理辦公室      |               2 |

 

| 財務部          |               3 |

 

+-----------------+-----------------+

 

5 rows in set (0.00 sec)

 

 

 

 

 

2)分別統計男性員工和女性員工人數。

mysql> select count(*) as "人數",

case

when  性別=1  then ""

when  性別=0  then ""  

end as 性別

from employees group by 性別;

 

+--------+--------+

 

| 人數   | 性別   |

 

+--------+--------+

 

|      3 | 女     |

 

|      9 | 男     |

 

+--------+--------+

 

2 rows in set, 1 warning (0.00 sec)

 

 

 

3)查找雇員數超過2人的部門名稱和員工數量。

mysql> select  d.部門名稱, count(e.姓名) as "員工總人數"

from employees e,departments d

where e.員工部門號=d.部門編號

group by d.部門名稱

having count(*)>2 ;

 

+--------------+-----------------+

 

| 部門名稱     | 員工總人數      |

 

+--------------+-----------------+

 

| 市場部       |               3 |

 

| 研發部       |               3 |

 

| 財務部       |               3 |

 

+--------------+-----------------+

 

3 rows in set (0.00 sec)

 

 

 

 

 

4)按員工學歷分組統計各種學歷人數。

 mysql> select 學歷,count(*) as 人數

 from employees

 group by 學歷;

 

+--------+--------+

 

| 學歷   | 人數   |

 

+--------+--------+

 

| 大專   |      4 |

 

| 本科   |      5 |

 

| 碩士   |      3 |

 

+--------+--------+

 

3 rows in set (0.00 sec)

 

 

 

5)將員工信息按出生日期從大到小排序。 

mysql> select * from employees order by  出生日期;

 

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+

 

| 員工編號     | 姓名      | 學歷   | 出生日期     | 性別   | 工作年限     | 地址               | 電話號碼     | 員工部門號      |

 

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+

 

| 020018       | 李麗      | 大專   | 1960-07-30   | 0      |            6 | 中山東路102-2      | 83413301     | 1               |

 

| 102208       | 朱俊      | 碩士   | 1965-09-28   | 1      |            2 | 牌樓巷5-3-106      | 84708817     | 5               |

 

| 000001       | 王林      | 大專   | 1966-01-23   | 1      |            8 | 中山路32-1-508     | 83355668     | 2               |

 

| 302566       | 李玉珉    | 本科   | 1968-09-20   | 1      |            3 | 熱和路209-3        | 58765991     | 4               |

 

| 504209       | 陳林琳    | 大專   | 1969-09-03   | 0      |            5 | 漢中路120-4-12     | 84468158     | 4               |

 

| 102201       | 劉明      | 本科   | 1972-10-18   | 1      |            3 | 虎距路100-2        | 83606608     | 5               |

 

| 111006       | 張石兵    | 本科   | 1974-10-01   | 1      |            1 | 解放路34-1-203     | 84563418     | 5               |

 

| 010008       | 伍容華    | 本科   | 1976-03-28   | 1      |            3 | 北京東路100-2      | 83321321     | 1               |

 

| 210678       | 林濤      | 大專   | 1977-04-02   | 1      |            2 | 中山北路24-35      | 83467336     | 3               |

 

| 308759       | 葉凡      | 本科   | 1978-11-18   | 1      |            2 | 北京西路3-7-52     | 83308901     | 4               |

 

| 108991       | 鍾敏      | 碩士   | 1979-08-10   | 0      |            4 | 中山路10-3-105     | 83346722     | 3               |

 

| 020010       | 王向容    | 碩士   | 1982-12-09   | 1      |            2 | 四牌樓10-0-108     | 83792361     | 1               |

 

+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+

 

12 rows in set (0.01 sec)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM