MySQL作业2

题目:

 内容:

1.建库建表:

代码:
create database mydb8_worker;

use mydb8_worker;

create table t_worker(department_id int(11) not null comment '部门号', 
worker_id int(11)primary key not null comment '职工号', 
worker_date date not null comment '工作时间', 
wages float(8,2)not null comment '工资', 
politics varchar(10) not nu1l default '群众' comment '政治面貌', 
name varchar(20) not null comment '姓名', 
borth_date date not null comment '出生日期');
效果:

2.插入内容 

代码:
insert into t_worker values(101,1001,'2015-05-04',7500.00,'群众','张春燕','1990-07-01');

insert into t_worker values(101,1002,'2019-02-06',5200.00,'团员','李名博','1997-02-08');

insert into t_worker values(102,1003,'2008-01-04',10500.00,'党员','王博涵','1983-06-08');

insert into t_worker values(102,1004,'2016-10-10',5500.00,'群众','赵小军','1994-09-05');

insert into t_worker values(102,1005,'2014-04-01',8800.00,'党员','钱有财','1992-12-30');

insert into t_worker values(103,1006,'2019-05-05',5500.00,'党员','孙菲菲','1996-09-02');
效果:

3.按要求查询:

3.1显示所有员工的基本信息

代码:
select * from t_worker;
效果:

3.2查询所有员工所属部门的部门号,不显示重复的部门号

思路:先查询所有部门号,再去重
代码:
select distinct department_id from t_worker;
效果:

3.3求出所有职工的人数

思路:用count函数
代码:
select count(1) from t_worker;
效果:

3.4列出最高工资和最低工资

思路:用max和min两个函数
代码:
select max(wages) '最高工资',min(wages) '最低工资' from t_worker;
效果:

3.5列出职工的平均工资和总工资

思路:用sum和avg两个函数
代码:
select avg(wages) '平均工资',sum(wages) '总工资' from t_worker;
效果:

3.6创建一个只有职工号、姓名和参加工作的新表,名为工作日期表

代码:
create table work_date(w_id int(11), w_name varchar(20),job varchar(20));

desc work_date;
效果:

3.7显示所有党员年龄

思路:用now函数,先查询年龄,再查询党员年龄
代码:
select (year(now()) - year(borth_date)) '年龄', name '姓名' from t_worker 
where politics='党员';
效果:

3.8列出工资在4000-8000之间的所有职工姓名

思路:先查询工资,再查询姓名
代码:
select name '姓名', wages '工资' from t_worker 
where wages>=4000 and wages<=8000
order by wages desc;
效果:

3.9列出所有孙姓和李姓的职工姓名

思路:先查所有职工姓名,再查孙姓和李姓
代码:
select name '姓名' from t_worker where name like '李%' or name like '孙%';
效果:

3.10列出所有部门号为102和103且不是党员的职工号、姓名

思路:先查不是党员的职工号和姓名,再查102和103的
代码:
select name '姓名', worker_id '职工号', department_id '部门号' from t_worker 
where politics!='党员' and department_id!='101';
效果:

3.11将职工表t_worker中职工按出生的先后顺序排序

思路:先查出生日期,再排序
代码:
select name '姓名', borth_date '出生日期' from t_worker order by borth_date asc;
效果:

3.12显示工资最高的前三位职工的职工号和姓名

思路:先把工资从高到低排序,再查前三位
代码:
select worker_id '职工号', name '姓名', wages '工资' from t_worker 
order by wages desc 
limit 3;
效果:

3.13求出各部门党员的人数

思路:先查出党员人数,再查各部门的
代码:
select department_id '部门号', count(1) '人数' from t_worker 
where politics='党员' 
group by department_id;
效果:

3.14统计各部门的总工资和平均工资并保留2位小数

思路:用round函数来保留2位小数,用到sum和avg函数,先查工资,再分组查部门
代码:
select department_id '部门号', round(sum(wages),2) '总工资', round(avg(wages),2) '平均工资' from t_worker 
group by department_id;
效果:

3.15列出总人数大于等于3的部门号和总人数

思路:先查各部门的总人数,再查总人数>=3的部门号
代码:
select department_id '部门号', count(1) '总人数' from t_worker 
group by department_id 
having count(1)>=3;
效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值