
一:創建一個新的數據庫(companydb),并查看數據庫。

二:使用該數據庫,并創建表worker。
mysql> use companydb;
mysql> CREATE TABLE worker(-> 部門號 INT(11) NOT NULL,-> 職工號 INT(11) NOT NULL,-> 工作時間 DATE NOT NULL,-> 工資 FLOAT(8,2) NOT NULL,-> 政治面貌 VARCHAR(10) NOT NULL DEFAULT '群眾',-> 姓名 VARCHAR(20) NOT NULL,-> 出生日期 DATE NOT NULL,-> PRIMARY KEY(職工號)-> )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;



三:插入其他數據內容。
mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (101, 1001, '2015-05-04', 3500.00, '群眾', '張三', '1990-07-01');mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (101, 1002, '2017-02-06', 3200.00, '團員', '李四', '1997-02-08');mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (102, 1003, '2011-01-04', 8500.00, '黨員', '王亮', '1983-06-08');mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (102, 1004, '2016-10-10', 5500.00, '群眾', '趙六', '1994-09-05');mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (102, 1005, '2014-04-01', 4800.00, '黨員', '錢七', '1992-12-30');mysql> INSERT INTO worker (部門號,職工號,工作時間,工資,政治面貌,姓名,出生日期)-> VALUES (102, 1006, '2017-05-05', 4500.00, '黨員', '孫八', '1996-09-12');

四:按要求完成。
1.顯示所有職工的基本信息。
SELECT * FROM worker;

2.查詢所有職工所屬部門的部門號,不顯示重復的部門號。
SELECT DISTINCT 部門號 FROM worker;

3.求出所有職工的人數。
SELECT COUNT(*) AS 總人數 FROM worker;

4.列出最高工資和最低工資。
SELECT MAX(工資) AS 最高工資, MIN(工資) AS 最低工資 FROM worker;

5.列出職工的平均工資和總工資。
SELECT AVG(工資) AS 平均工資, SUM(工資) AS 總工資 FROM worker;

6.創建一個只有職工號、姓名和工作時間的新表,名為工作日期表。
mysql> CREATE TABLE 工作日期表 AS-> SELECT 職工號, 姓名, 工作時間 FROM worker;

7.顯示所有女職工的年齡。
SELECT 職工號, 姓名, CASE WHEN YEAR(出生日期) % 2 = 0 THEN '女' ELSE '男' END AS 性別 FROM worker;

8、列出所有姓劉的職工的職工號、姓名和出生日期。
mysql> SELECT 職工號, 姓名, 出生日期-> FROM worker-> WHERE 姓名 LIKE '劉%';

9、列出1960年以前出生的職工的姓名、參加工作日期。
mysql> SELECT 姓名, 工作時間-> FROM worker-> WHERE YEAR(出生日期) < 1960;

10、列出工資在1000-2000之間的所有職工姓名。
mysql> SELECT 姓名-> FROM worker-> WHERE 工資 BETWEEN 1000 AND 2000;

11、列出所有陳姓和李姓的職工姓名。
mysql> SELECT 姓名-> FROM worker-> WHERE 姓名 LIKE '陳%' OR 姓名 LIKE '李%';

12、列出所有部門號為2和3的職工號、姓名、黨員否。
mysql> SELECT 職工號, 姓名, 政治面貌 AS 黨員否-> FROM worker-> WHERE 部門號 IN (2, 3);

13、將職工表worker中的職工按出生的先后順序排序。
mysql> SELECT *-> FROM worker-> ORDER BY 出生日期 ASC;

14、顯示工資最高的前3名職工的職工號和姓名。
mysql> SELECT 職工號, 姓名-> FROM worker-> ORDER BY 工資 DESC-> LIMIT 3;

15、求出各部門黨員的人數。
mysql> SELECT 部門號, COUNT(*) AS 黨員人數-> FROM worker-> WHERE 政治面貌 = '黨員'-> GROUP BY 部門號;

16、統計各部門的工資和平均工資。
mysql> SELECT 部門號, SUM(工資) AS 總工資, AVG(工資) AS 平均工資-> FROM worker-> GROUP BY 部門號;

17、列出總人數大于4的部門號和總人數。
mysql> SELECT 部門號, COUNT(*) AS 總人數-> FROM worker-> GROUP BY 部門號-> HAVING COUNT(*) > 4;
