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=utf8 ROW_FORMAT=DYNAMIC;
?
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、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
CREATE TABLE `工作日期表` AS SELECT `职工号`, `姓名` `工作时间`
FROM worker;
7、显示所有女职工的年龄。
SELECT `职工号`, `姓名`, YEAR(CURDATE()) - YEAR(出生日期) AS "年龄"
FROM worker
WHERE gender = 0;
8、列出所有姓刘的职工的职工号、姓名和出生日期。
SELECT `职工号`, `姓名`, `出生日期`
FROM worker
WHERE `姓名` LIKE '刘%';
9、列出1960年以前出生的职工的姓名、参加工作日期。
SELECT `姓名`, `工作时间`
FROM worker
WHERE `出生日期` < 1960;
10、列出工资在1000-2000之间的所有职工姓名。
SELECT `姓名`
FROM worker
WHERE `工资` BETWEEN 1000 AND 2000;
11、列出所有陈姓和李姓的职工姓名。
SELECT `姓名`
FROM worker
WHERE `姓名` LIKE `陈%` OR `李%`;
12、列出所有部门号为2和3的职工号、姓名、党员否。
SELECT `职工号`, `姓名`, `政治面貌`
FROM worker
WHERE `部门号` = 2 OR `部门号` = 3;
13、将职工表worker中的职工按出生的先后顺序排序。
SELECT *
FROM worker
ORDER BY `出生日期`;
14、显示工资最高的前3名职工的职工号和姓名。
SELECT `职工号`, `姓名`
FROM worker
ORDER BY `工资` DESC
LIMIT 0, 3;
15、求出各部门党员的人数。
SELECT `部门号`, COUNT(*) AS "党员人数"
FROM worker
WHERE `政治面貌` = '党员'
GROUP BY `部门号`;
16、统计各部门的工资和平均工资
SELECT `部门号`, SUM(`工资`) AS "总工资", AVG(`工资`) AS "平均工资"
FROM worker
GROUP BY `部门号`;
17、列出总人数大于4的部门号和总人数。
SELECT `部门号`, COUNT(*) AS "总人数"
FROM worker
GROUP BY `部门号`
HAVING 总人数 > 4;