数据库课后习题

创建数据表格

insert into employees values
              ('000001','王琳','大专','1966-01-23','男',7,'中山路32-1-508',83355668,2),
              ('010008','吴荣华','本科','1976-3-28','男',3,'北京东路100-2',83321321,1),
              ('020010','王向荣','硕士','1982-12-9','女',2,'四牌楼10-0-108',83792361,1),
              ('020018','李丽','大专','11960-7-30','女',6,'中三东路102-2',83413301,1),
              ('102201','刘明','本科','1972-10-18','女',3,'虎踞路100-2',83606608,5),
              ('102208','朱骏','硕士','1965-9-28','男',2,'派娄祥5-3-106',84708817,5),
              ('108991','钟敏','硕士','1979-8-10','女',4,'中山东路10-3-105',83346722,3),
              ('111006','张世兵','本科','1974-10-4','男',1,'解放路34-1-203',84563418,5),
              ('210678','林涛','大专','1977-4-2','男',2,'中山北路24-35',83467736,3),
              ('302566','李玉铭','本科','1968-9-20','男',3,'热河路209-3',58765991,4),                  
              ('308759','叶凡','本科','1978-11-18','女',2,'北京西路3-7-52',83308901,4),
              ('504209','程琳琳','大专','1969-9-3','女',5,'汉中路120-4-12',84468158,4);
insert into Salary values('000001',2100.8,123.09),
                                             ('010008',1582.62,88.03),
                                             ('020010',2860,198),
                                             ('020018',2347.68,180),
                                             ('102201',2569.88,185.65),
                                             ('102208',1980,100),
                                             ('108991',3259.98,281.52),
                                             ('111006',1987.01,79.58),
                                             ('210678',2240,121),
                                             ('302566',2980.7,210.2),
                                             ('308759',2351.98,199.08),
                                             ('504209',2100.8,123.09);
insert into Departments values (1,'财务部',null),
                                                (2,'人力资源部',null),
                                                (3,'经理办公室',null),
                                                (4,'研发部',null),
                                                (5,'市场部',null);

1、SELECT 语句的基本使用

1.1、查询Employees表的员工部门号和性别,要求消除重复行。

select distinct 员工部门号,性别
from  employees;

数据库课后习题_第1张图片 

1.2、计算每个雇员的实际收入(实际收入=收入-支出)。

select 员工编号,收入-支出 as '实际收入'
from salary;

数据库课后习题_第2张图片 

1.3、查询Employees表中员工的 姓名和性别,要求性别值为男时 显示1,为女 时显示0

select 姓名,
case
when 性别='男' then '1'
when 性别='女' then '0'
end as sex
from employees;

数据库课后习题_第3张图片

1.4、查询每个雇员的地址和电话号码,显示列的标题为address、telephone。

select 地址 as 'address',电话号码 as  'telephone'
from employees;

数据库课后习题_第4张图片

1.5、计算Salary表中 员工月收入的平均数

select avg(收入),sum(收入)
from salary;

数据库课后习题_第5张图片

1.6、计算所有 员工的总支出。

select  sum(支出)  from salary;

数据库课后习题_第6张图片

1.7、显示 女雇员的地址和电话号码。

select 地址,电话号码
from employees
where 性别='女';

数据库课后习题_第7张图片

1.8、计算员工总数 。

select count(*) as '员工总数'
from employees;

数据库课后习题_第8张图片

1.9、显示最高收入和最低 收入的员工的员工编号。

select  员工编号
from salary
where 收入 in(select max(收入)  from salary);

数据库课后习题_第9张图片

select  员工编号
from salary
where 收入 in(select min(收入)  from salary);

 数据库课后习题_第10张图片

2、条件查询

2.1、显示月收入高于2000元的员工编号。

select 员工编号
from salary
where 收入>2000;

数据库课后习题_第11张图片

2.2、查询1970年以后出生的员工 的姓名和地址。

select 姓名,地址
from employees
where 出生日期>'1970-1-1';

数据库课后习题_第12张图片

2.3、显示工作年限3年以上(含3年)、学历在本科以上(含本科)的男性员工的信息。

select * from employees
where  工作年限>=3 and (学历='本科' or 学历='硕士') and 性别='男';

数据库课后习题_第13张图片

2.4、查找员工编号中倒数第 2个数字为0的 姓名、地址和学历。

select 姓名,地址,学历
from employees
where  员工编号 like '%0_';

数据库课后习题_第14张图片

2.5、查询月收入在2000~3000元的员工编号。

select 员工编号
from salary
where 收入>2000 and 收入<3000;

数据库课后习题_第15张图片

3、多表查询

3.1、查询 “王琳”的基本情况和 所工作的部门名称。

select employees.*,departments.部门名称
from employees join departments on employees.员工部门号=departments.部门编号
where employees.姓名='王琳';

数据库课后习题_第16张图片

3.2、查询财务部、研发部 、市场部的员工信息。

select employees.*,departments.部门名称
from employees join departments
on employees.员工部门号=departments.部门编号
where departments.部门名称 in ('财务部','研发部','市场部');

数据库课后习题_第17张图片

select employees.*,departments.部门名称
from employees join departments
on employees.员工部门号=departments.部门编号
where departments.部门名称='财务部' or departments.部门名称='研发部'or departments.部门名称='市场部';

数据库课后习题_第18张图片

3.3、查询每个雇员的基本情况和薪水情况。

select employees.*,salary.*
from employees join salary on salary.员工编号=employees.员工编号;

数据库课后习题_第19张图片

3.4、查询研发部在1970年以前出生的员工姓名和薪水情况。

select employees.姓名,salary.*
from employees,departments,salary
where employees.出生日期<'1970-1-1' and departments.部门名称='研发部'
and departments.部门编号=employees.员工部门号 and employees.员工编号=salary.员工编号;

 数据库课后习题_第20张图片

SELECT e.姓名,s.* FROM employees e,salary s,departments d
WHERE e.员工编号=s.员工编号 AND e.员工部门号=d.部门编号
AND e.出生日期 < '1970' AND 部门名称='研发部';

数据库课后习题_第21张图片

3.5、查询员工的姓名、住址和收入水平,要求2000元以下显示为 低收入,2000~3000元显示为 中等收入,3000元以上时显示为 高收入。

select 姓名,地址,salary.收入,
case
    when salary.收入 <2000 then '低收入'
    when salary.收入 >2000 and salary.收入<3000 then '中等收入'
    when salary.收入 >3000 then '高收入'
end as '收入水平'
from employees,salary
where salary.员工编号=employees.员工编号;

数据库课后习题_第22张图片

4、分类汇总与排序

4.1、按部门列出该部门工作的员工人数。

select departments.部门名称,count(*) as '人数'
from departments,employees
where employees.员工部门号=departments.部门编号
group by 部门名称;

数据库课后习题_第23张图片

4.2、分别统计男性员工和女性员工人数。

select count(*),
       case
           when 性别='男' then '男'
           when 性别='女' then '女'
end as '性别'
from employees group by 性别;

数据库课后习题_第24张图片

4.3、查找雇员数超过2人的部门名称和员工数量。

select departments.部门名称,count(*)
from employees join departments on employees.员工部门号=departments.部门编号
group by 员工部门号 having count(employees.员工部门号)>2;

数据库课后习题_第25张图片

4.4、按员工学历分组统计各种学历人数。

select employees.学历,count(*) as '人数'
from employees
group by 学历;

数据库课后习题_第26张图片

4.5、将员工信息按出生日期从大到小排序。

select *
from employees
order by 出生日期 desc ;

数据库课后习题_第27张图片

4.6、将员工薪水按收入多少从小到大排序。

select salary.收入
from salary
order by 收入 asc;

数据库课后习题_第28张图片

4.7、按员工的工作年限分组,统计各个工作年限的人数,并按人数从小到大排序。

select employees.工作年限,count(*) as '人数'
from employees
group by 工作年限
order by count(*) asc ;

数据库课后习题_第29张图片

 

你可能感兴趣的:(SQL,数据库,数据库)