mysql_对于DQL 的简单举例

本文深入探讨了SQL语言中各种复杂查询的实现方法,包括数据排序、条件筛选、多表联接、聚合函数运用以及子查询技巧。通过具体实例,如按收入排序、查找特定条件的员工信息、计算部门平均工资等,全面展示了如何高效地从数据库中提取所需信息。

写这个对于前面的 博客的DQL 的举例说明

表中的结构

在这里插入图片描述在这里插入图片描述在这里插入图片描述## 表中的数据

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

实验任务

  1. 将雇员的工资情况按 Income 由高到低排列。(提示:由高到低排列使用 ORDER BY…DESC
  2. 求所有姓刘雇员的姓名、地址和电话号码
  3. 求收入 3500 到 4000 并且支出为 1500 的雇员编号
  4. 查询各个部门雇员的最低收入
  5. 查询各个部门雇员的平均收入
  6. 查询所有部门详细信息和部门人数
  7. 查询所有和‘张立’ 在同一部门的雇员姓名
  8. 查询所有部门的名称及在该部门雇员的姓名
  9. 查询所有收入为 3800 的雇员的姓名及所在部门名称
  10. 查询最低收入大于 3700 的部门信息
  11. 查询在’财务部’的所有雇员的个人信息
  12. 查询在’财务部’的所有雇员的收入
  13. 查询所有雇员的姓名、部门名称和收入
  14. 查询收入比’刘晨’高的所有雇员的个人信息
  15. 查询实际收入(Income-Outcome)大于 2300 的所有雇员的个人信息
  16. 查询所有实际收入比人力资源部所有雇员实际收入大的雇员姓名
  17. 查询所有实际收入比人力资源部某个雇员实际收入大的雇员姓名
  18. 查询收入大于平均收入的所有雇员的个人信息

MySQL语句

-- 1) 将雇员的工资情况按 Income 由高到低排列。(提示:由高到低排列使用 ORDER BY…DESC

select Salary.Income 
from Salary
order by Income DESC ;

-- 2) 求所有姓刘雇员的姓名、地址和电话号码
select Employee.Name , Employee.Address , Employee.PhoneNumber
from Employee
where Employee.Name like '刘%';

--3) 求收入 3500 到 4000 并且支出为 1500 的雇员编号
select Employee.EmployeeID
from Employee , Salary
where Income >= 3500 and Income <= 4000 and OutCome = 1500;

--4) 查询各个部门雇员的最低收入

select DepartmentID, MIN(Income)
from Employee,Salary
where Employee.EmployeeID = Salary.EmployeeID
group by DepartmentID;

--5) 查询各个部门雇员的平均收入
select DepartmentID,AVG(Income) 平均工资
from Employee,Salary
where Employee.EmployeeID = Salary.EmployeeID
group by DepartmentID;

--6) 查询所有部门详细信息和部门人数
select d.DepartmentID,DepartmentName,Note ,部门人数
from Department d
right join (select e.DepartmentID, COUNT(*)'部门人数' from Employee e group by DepartmentID) d1
on d.DepartmentID = d1.DepartmentID;


--7) 查询所有和‘张立’ 在同一部门的雇员姓名
 select Employee.Name
 from Employee
 where  DepartmentID  in (select DepartmentID from Employee where Name = '张立' );

--8) 查询所有部门的名称及在该部门雇员的姓名
select DepartmentName,Name
from Department d
left join (select Name,DepartmentID from Employee ) e
on  d.DepartmentID = e.DepartmentID;

--9) 查询所有收入为 3800 的雇员的姓名及所在部门名称
select Name , DepartmentName
from Employee,Department
where Employee.DepartmentID = Department.DepartmentID and 
EmployeeID in (select EmployeeID from Salary where Income = 3800 );

--10) 查询最低收入大于 3700 的部门信息
select *
from Department
where DepartmentID in (select DepartmentID from Employee where EmployeeID in (
								select EmployeeID from Salary where Income > 3700 and Income in (
										select MIN(Income) from Employee,Salary where Employee.EmployeeID = Salary.EmployeeID 
										group by DepartmentID) ) );


--11) 查询在'财务部'的所有雇员的个人信息
select * 
from Employee
where DepartmentID in (select DepartmentID from Department where DepartmentName='财务部')


--12) 查询在'财务部'的所有雇员的收入
select EmployeeID,Income
from Salary
where EmployeeID in (select EmployeeID from Employee where DepartmentID in (
							select DepartmentID from Department where DepartmentName ='财务部'))

--13) 查询所有雇员的姓名、部门名称和收入
select Name,DepartmentName,Income
from Employee e
left join (select Departmentid,DepartmentName from Department )d
on e.DepartmentID = d.DepartmentID
left join (select EmployeeID,Income from Salary )s
on e.EmployeeID = s.EmployeeID;


-- 14) 查询收入比'刘晨'高的所有雇员的个人信息
select * 
from Employee
where EmployeeID in (select EmployeeID
from Salary
where Income > (select Income from Salary where EmployeeID = (select EmployeeID from Employee where Name = '刘晨')))

-- 15) 查询实际收入(Income-Outcome)大于 2300 的所有雇员的个人信息
select *
from Employee
where EmployeeID in (select EmployeeID
from Salary
where (Income-OutCome) > 2300)


-- 16) 查询所有实际收入比人力资源部所有雇员实际收入大的雇员姓名
select Name
from Employee
where EmployeeID in(select EmployeeID from Salary where (Income-OutCome) > (
						select MAX(Income-Outcome)from Salary where EmployeeId in (
								select EmployeeID from Employee where DepartmentID in (
										select DepartmentID from Department where DepartmentName='人力资源部'))))


--17) 查询所有实际收入比人力资源部某个雇员实际收入大的雇员姓名

-- 重点是 某个雇员,,就是 你只要比那个部的最小的实际收入最大就可以了,,
select Name
from Employee
where EmployeeID in(select EmployeeID from Salary where (Income-OutCome) > (
						select Min(Income-Outcome)from Salary where EmployeeId in (
								select EmployeeID from Employee where DepartmentID in (
										select DepartmentID from Department where DepartmentName='人力资源部'))))


--18) 查询收入大于平均收入的所有雇员的个人信息

-- 1. 查出平均收入


-- 2. 比较 显示employeeID

-- 3. 显示个人信息

select *
from Employee
where EmployeeID in (select EmployeeID
from Salary
where income > (select AVG(Income)
from Salary))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值