学习MySQL过程中做的练习题,感觉是不错的例子就记录下来。
练习要使用到的表:
表一:员工表–> yg
y_id | y_name | y_sex | y_age | y_address | b_id |
---|---|---|---|---|---|
1 | 赵老大 | 男 | 19 | 天津 | 3 |
2 | 钱老二 | 女 | 25 | 北京 | 1 |
3 | 孙老四 | 男 | 61 | 上海 | 2 |
4 | 李老四 | 女 | 23 | 广州 | 3 |
5 | 周老五 | 男 | 22 | 福建 | 1 |
6 | 吴老六 | 女 | 33 | 深圳 | 3 |
7 | 郑老七 | 男 | 31 | 天津 | 1 |
8 | 王老八 | 女 | 45 | 不详 | 2 |
表二:部门表–>bumen
b_id | b_name |
---|---|
1 | 财务部 |
2 | 后勤部 |
3 | 人事部 |
1、查询年龄在25至30岁之间的男员工的姓名和住址。
SELECT y_name, y_address
FROM yg
WHERE(
y_age BETWEEN 18 AND 25
AND
y_sex = '男');
2、查询财务部所有40岁以下男员工的所有信息
SELECT *
FROM yg
WHERE(
y_sex = '男'
AND
y_age < 40
AND
b_id = (
SELECT b_id
FROM bumen
WHERE b_name = '财务部'));
3、查询人事部年龄最大的女员工姓名
SELECT y_name, MAX(y_age)
FROM yg
WHERE
(y_sex = '女'
AND
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '人事部'));
4、新到一名员工,已知姓名,性别,年龄,将此员工加入到员工表
INSERT INTO yg
(y_name, y_sex, y_age)
VALUES
('小明','男',18);
5、在员工表中,将人事部年龄大于30岁的女同事,调到后勤部
UPDATE yg
SET
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '后勤部')
WHERE
(y_age >40
AND
y_sex = '女'
AND
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '人事部'));
6:查询每个部门年龄最大的员工,显示部门名字和年龄。
SELECT yg.y_name, bumen.b_name
FROM yg, bumen
WHERE yg.b_id = bumen.b_id
GROUP BY yg.b_id
HAVING MAX(y_age);
7:查询每个部门各有多少人,显示部门名字和人数,按人数倒序,如果人数相同,按部门编号正序。
SELECT bumen.b_name, COUNT(yg.y_name)
FROM bumen, yg
WHERE bumen.b_id = yg.b_id
GROUP BY yg.b_id
ORDER BY COUNT(yg.y_name) DESC,bumen.b_id;
8:将孙老三的的名字改为孙老四,并调到财务部。
UPDATE yg
SET
y_name = '孙老四',
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '财务部')
WHERE y_name = '孙老三';
9:将后勤部年龄大于60岁的员工删除。
DELETE
FROM yg
WHERE
(y_age > 60
AND
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '后勤部'));
10:查询财务部年龄不在20-30之间的男生信息。
SELECT *
FROM yg
WHERE
(y_sex = '男'
AND
y_age NOT BETWEEN 20 AND 30
AND
b_id =
(SELECT b_id
FROM bumen
WHERE b_name = '财务部'));