- 实验目的
- 熟练掌握对象资源管理器(界面)方式表数据的查询方法。
- 熟练掌握命令方式表数据的查询方法。
- 实验内容
1.子查询
根据教材案例练习子查询、连接查询、聚合函数查询、查询结果分组和排序的方法。
例1查找在财务部工作的雇员的情况。
SELECT * FROM Employees
WHERE DepartmentID =
(
SELECT DepartmentID
FROM Departments
WHERE DepartmentName = '财务部'
)
例2查找财务部年龄不低于研发部所有雇员年龄的雇员的姓名。
SELECT Name FROM Employees
WHERE DepartmentID =
(
SELECT DepartmentID
FROM Departments
WHERE DepartmentName = '财务部'
)
AND
Birthday!>ALL
(
SELECT Birthday
FROM Employees
WHERE DepartmentID IN
(
SELECT DepartmentID
FROM Departments
WHERE DepartmentName = '研发部'
)
)
2.连接查询
例3查询每个雇员的情况及其薪水情况。
SELECT Employees.*,Salary.*
FROM Employees,Salary
WHERE Employees.EmployeesID = Salary.EmployeesID
例4使用内连接的方法查询名字为“王林”的员工所在的部门。
SELECT DepartmentName
FROM Departments JOIN Employees ON Departments.DepartmentID=Employees.DepartmentID
WHERE Employees.Name='王林'
例5查找财务部收入在2000元以上的雇员姓名及其薪水详情。
SELECT Name,InCome,OutCome
FROM Employees,Salary,Departments
WHERE Employees.EmployeesID = Salary.EmployeesID
AND Employees.DepartmentID=Departments.DepartmentID
AND DepartmentName='财务部'
AND InCome>2000
3.使用聚合函数查询
例6求财务部雇员的平均收入。
SELECT AVG(InCome) AS '财务部平均收入'
FROM Salary
WHERE EmployeesID IN
(
SELECT EmployeesID
FROM Employees
WHERE DepartmentID=
(
SELECT DepartmentID
FROM Departments
WHERE DepartmentName='财务部'
)
)
例7求财务部雇员的平均实际收入。
SELECT AVG(InCome-OutCome) AS '财务部平均实际收入'
FROM Salary
WHERE EmployeesID IN
(
SELECT EmployeesID
FROM Employees
WHERE DepartmentID=
(
SELECT DepartmentID
FROM Departments
WHERE DepartmentName='财务部'
)
)
4.查询结果分组和排序
例8查找Employees表中男性和女性的人数。
SELECT Sex,COUNT(Sex)
FROM Employees
GROUP BY Sex
例9将各雇员的情况按收入由低到高排序。
SELECT Employees.*,Salary.*
FROM Employees,Salary
WHERE Employees.EmployeesID=Salary.EmployeesID
ORDER BY InCome
三、思考与练习
(1)用子查询的方法查找所有收入在2500元以下的雇员的情况。
(2)用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。
(3)查询每个雇员的情况及其工作部门的情况。
(4)使用内连接方法查找出不在财务部工作的所有员工信息。
(5)使用外链接方法查找所有员工的月收入。
(6)查询研发部在1976年以前出生的雇员姓名及其薪水详情。
(7)查询财务部雇员的最高和最低收入。
(8)统计财务部收入在2500元以上的雇员人数。
(9)按部门列出该部门工作的员工的人数。
(10)将员工信息按出生时间从小到大排列。
(11)按员工的学历分组,排列出本科、大专和硕士的人数。