数据库操作练习

一、题目要求

1、显示所有职工的基本信息。
2、查询所有职工所属部门的部门号,不显示重复的部门号。
3、求出所有职工的人数。
4、列出最高工和最低工资。
5、列出职工的平均工资和总工资。
6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
7、显示所有女职工的年龄。
8、列出所有姓刘的职工的职工号、姓名和出生日期。
9、列出1960年以前出生的职工的姓名、参加工作日期。
10、列出工资在1000-2000之间的所有职工姓名。
11、列出所有陈姓和李姓的职工姓名。
12、列出所有部门号为2和3的职工号、姓名、党员否。
13、将职工表worker中的职工按出生的先后顺序排序
14、显示工资最高的前3名职工的职工号和姓名。
15、求出各部门党员的人数。
16、统计各部门的工资和平均工资
17、列出总人数大于2的部门号和总人数。
二、创建表

mysql> create table `worker`(
    -> `部门号` int(11) not null,
    -> `职工号` int(11) not null,
    -> `工作时间` date not null,
    -> `工资` float(8,2) not null,
    -> `政治面貌` varchar(20) not null default '群众',
    -> `姓名` varchar(20) not null,
    -> `出生日期` date not null,
    -> `年龄` int not null,
    -> `性别` varchar(10) not null default '男',
    -> primary key (`职工号`)
    -> )engine=innodb default charset=utf8 row_format=dynamic;

三、插入数据

mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(101,1001,'2015-5-4',3500.00,'群众','张三','1990-7-1',33,'男');
Query OK, 1 row affected (0.02 sec)
 
mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(102,1002,'2017-2-6',3200.00,'团员','李四','1997-2-8',26,'女');
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(103,1003,'2011-1-4',8500.00,'党员','王五','1983-6-8',40,'女');
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(101,1004,'2016-10-10',5500.00,'群众','赵六','1994-9-5',29,'男');
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(102,1005,'2014-4-10',4800.00,'党员','钱七','1992-12-30',31,'男');
Query OK, 1 row affected (0.01 sec)
 
mysql> insert into `worker` (`部门号`,`职工号`,`工作时间`,`工资`,`政治面貌`,`姓名`,`出生日期`,`年龄`,`性别`) values(103,1006,'2017-5-10',4500.00,'党员','孙八','1996-9-30',31,'男');
Query OK, 1 row affected (0.01 sec)

四、查询

1、查询基本信息

mysql> select * from worker;
+--------+--------+------------+---------+----------+------+------------+------+------+
| 部门号 | 职工号 | 工作时间   | 工资    | 政治面貌 | 姓名 | 出生日期   | 年龄 | 性别 |
+--------+--------+------------+---------+----------+------+------------+------+------+
|    101 |   1001 | 2015-05-04 | 3500.00 | 群众     | 张三 | 1990-07-01 |   33 | 男   |
|    102 |   1002 | 2017-02-06 | 3200.00 | 团员     | 李四 | 1997-02-08 |   26 | 女   |
|    103 |   1003 | 2011-01-04 | 8500.00 | 党员     | 王五 | 1983-06-08 |   40 | 女   |
|    101 |   1004 | 2016-10-10 | 5500.00 | 群众     | 赵六 | 1994-09-05 |   29 | 男   |
|    102 |   1005 | 2014-04-10 | 4800.00 | 党员     | 钱七 | 1992-12-30 |   31 | 男   |
|    103 |   1006 | 2017-05-10 | 4500.00 | 党员     | 孙八 | 1996-09-30 |   31 | 男   |
+--------+--------+------------+---------+----------+------+------------+------+------+
6 rows in set (0.00 sec)

2、查询部门号

mysql> select distinct `部门号` from worker;
+--------+
| 部门号 |
+--------+
|    101 |
+--------+
1 row in set (0.00 sec)

3、员工人数

mysql> select count(`职工号`) from worker;
+-----------------+
| count(`职工号`) |
+-----------------+
|               6 |
+-----------------+
1 row in set (0.01 sec)

4、最高工资和最低工资

mysql> select max(`工资`) '最高工资',min(`工资`) '最低工资' from worker;
+----------+----------+
| 最高工资 | 最低工资 |
+----------+----------+
|  8500.00 |  3200.00 |
+----------+----------+
1 row in set (0.00 sec)

5、工资总和和平均工资

mysql> select avg(`工资`) '平均工资',sum(`工资`) '总工资' from worker;
+-------------+----------+
| 平均工资    | 总工资   |
+-------------+----------+
| 5000.000000 | 30000.00 |
+-------------+----------+
1 row in set (0.00 sec)

6、创建一个表

mysql> create table work_date select `职工号`,`姓名`,`工作时间` from worker;
Query OK, 6 rows affected (0.02 sec)
Records: 6  Duplicates: 0  Warnings: 0
 
mysql> select * from work_date;
+--------+------+------------+
| 职工号 | 姓名 | 工作时间   |
+--------+------+------------+
|   1001 | 张三 | 2015-05-04 |
|   1002 | 李四 | 2017-02-06 |
|   1003 | 王五 | 2011-01-04 |
|   1004 | 赵六 | 2016-10-10 |
|   1005 | 钱七 | 2014-04-10 |
|   1006 | 孙八 | 2017-05-10 |
+--------+------+------------+
6 rows in set (0.00 sec)

7、显示女职工年龄

mysql> select `姓名`,`性别`,`年龄` from worker where `性别` like '女';
+------+------+------+
| 姓名 | 性别 | 年龄 |
+------+------+------+
| 李四 | 女   |   26 |
| 王五 | 女   |   40 |
+------+------+------+
2 rows in set (0.00 sec)

8、显示所有姓刘的员工

mysql> select `职工号`,`姓名`,`出生日期` from worker where `姓名` like '刘%';
Empty set (0.00 sec)

9、1960年以前的员工

mysql> select `姓名`,`工作时间` from worker where `出生日期`<19600000;
Empty set, 1 warning (0.00 sec)

10、工资在1000-2000之间的

mysql> select `姓名`,`工作时间` from worker where `出生日期`<19600000;
Empty set, 1 warning (0.00 sec)

11、姓陈或者姓李的的员工

mysql> select `姓名` from worker where `姓名` regexp '^[陈 or 李]';
+------+
| 姓名 |
+------+
| 李四 |
+------+
1 row in set (0.00 sec)

12、列出所有部门号为2和3的职工号、姓名、并判断政治面貌

mysql> select `职工号`,`姓名`,`政治面貌` from worker where `部门号`=2 or 3;
+--------+------+----------+
| 职工号 | 姓名 | 政治面貌 |
+--------+------+----------+
|   1001 | 张三 | 群众     |
|   1002 | 李四 | 团员     |
|   1003 | 王五 | 党员     |
|   1004 | 赵六 | 群众     |
|   1005 | 钱七 | 党员     |
|   1006 | 孙八 | 党员     |
+--------+------+----------+
6 rows in set (0.00 sec)

13、按照出生日期排序

mysql> select * from worker order by `出生日期`;
+--------+--------+------------+---------+----------+------+------------+------+------+
| 部门号 | 职工号 | 工作时间   | 工资    | 政治面貌 | 姓名 | 出生日期   | 年龄 | 性别 |
+--------+--------+------------+---------+----------+------+------------+------+------+
|    103 |   1003 | 2011-01-04 | 8500.00 | 党员     | 王五 | 1983-06-08 |   40 | 女   |
|    101 |   1001 | 2015-05-04 | 3500.00 | 群众     | 张三 | 1990-07-01 |   33 | 男   |
|    102 |   1005 | 2014-04-10 | 4800.00 | 党员     | 钱七 | 1992-12-30 |   31 | 男   |
|    101 |   1004 | 2016-10-10 | 5500.00 | 群众     | 赵六 | 1994-09-05 |   29 | 男   |
|    103 |   1006 | 2017-05-10 | 4500.00 | 党员     | 孙八 | 1996-09-30 |   31 | 男   |
|    102 |   1002 | 2017-02-06 | 3200.00 | 团员     | 李四 | 1997-02-08 |   26 | 女   |
+--------+--------+------------+---------+----------+------+------------+------+------+
6 rows in set (0.00 sec)

14、工资前三排名

mysql> select `职工号`,`姓名` from worker order by `工资` desc limit 3;
+--------+------+
| 职工号 | 姓名 |
+--------+------+
|   1003 | 王五 |
|   1004 | 赵六 |
|   1005 | 钱七 |
+--------+------+
3 rows in set (0.00 sec)

15、求出各个部门党员人数

mysql> select `部门号`,count(`职工号`) from worker
    ->     where `政治面貌`='党员'
    ->     group by `部门号`;
+--------+-----------------+
| 部门号 | count(`职工号`) |
+--------+-----------------+
|    102 |               1 |
+--------+-----------------+
|    103 |               2 |
+--------+-----------------+
1 row in set (0.00 sec)

16、统计各个部门工资总和和平均工资

mysql> select `部门号`,sum(`工资`) '工资总和',avg(`工资`) '平均工资'
    ->     from worker
    ->     group by `部门号`;
+--------+----------+-------------+
| 部门号 | 工资总和 | 平均工资    |
+--------+----------+-------------+
|    101 | 9000.00  | 4500.000000 |
+--------+----------+-------------+
|    102 | 8000.00  | 4000.000000 |
+--------+----------+-------------+
|    103 | 13000.00 | 6500.000000 |
+--------+----------+-------------+
1 row in set (0.00 sec)

17、列出总人数大于2的部门号和总人数

mysql> select `部门号`,count(`职工号`) `总人数` from worker
    ->     group by `部门号`
    ->     having count(`职工号`)>=2;
+--------+--------+
| 部门号 | 总人数 |
+--------+--------+
|    101 |      2 |
+--------+--------+
|    102 |      2 |
+--------+--------+
|    103 |      2 |
+--------+--------+
1 row in set (0.00 sec)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值