发布时间 : 星期六 文章查询综合更新完毕开始阅读
实验6 数据库的查询
目的与要求
(1)掌握SELECT语句的基本语法。 (2)掌握子查询的表示。 (3)掌握连接查询的表示。 (4)掌握数据汇总的方法。
(5)掌握SELECT语句的GROUP BY子句的作用和使用方法。 (6)掌握SELECT语句的ORDER BY子句的作用和使用方法。
实验准备
(1)了解SELECT语句的基本语法格式。 (2)了解SELECT语句的执行方法。 (3)了解子查询的表示方法。 (4)了解连接查询的表示。 (5)了解数据汇总的方法。
(6)了解SELECT语句的GROUP BY子句的作用和使用方法。 (7)了解SELECT语句的ORDER BY子句的作用。
实验内容
1.SELECT语句的基本使用
(1)对于实验2给出的数据库表结构,查询每个雇员的所有数据。 在查询分析器的窗口输入如下的语句并执行: USE YGGL SELECT *
FROM Employees GO
【思考与练习】
用SELECT语句查询Departments和Salary表的所有记录。 (2)查询每个雇员的地址和电话。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Address,PhoneNumber
FROM Employees GO
【思考与练习】
用SELECT语句查询Departments和Salary表的一列或若干列。 (3)查询EmployeeID为000001的雇员的地址和电话。 在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Address,PhoneNumber
FROM Employees
WHERE EmployeeID=’000001’
GO
【思考与练习】
用SELECT语句查询Departments和Salary表中满足指定条件的1列或若干列。
(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Address AS 地址,PhoneNumber AS 电话
FROM Employees WHERE Sex=0 GO
注意:使用AS子句可指定目标列的位置。 (5)计算每个雇员的实际收入。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT EmployeeID,实际收入=Income-Outcome
FROM Salary GO
(6)找出所有姓王的雇员的部门号。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT DepartmentID
FROM Employees
WHERE name LIKE ’王%’ GO
【思考与练习】
找出所有其地址中含有“中山”的雇员的号码及部门号。 (7)找出所有收入在2000~3000之间的雇员号码。 在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT EmployeeID
FROM Salary
WHERE Income BETWEEN 2000 AND 3000 GO
【思考与练习】
找出所有在部门“1”或“2”工作的雇员的号码。
注意:在SELECT语句中LIKE、BETWEEN…AND,IN,NOT及CONTAIN谓词的作用。
2.子查询的使用
(1)查找在财务部工作的雇员的情况。
在查询分析器的窗口输入如下的语句并执行: USE YGGL SELECT *
FROM Employees
WHERE DepartmentID= (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’财务部’)
GO
【思考与练习】
用子查询的方法查找所有收入在2500元以下的雇员的情况。 (2)查找财务部年龄不低于研发部雇员年龄的雇员的姓名。 在查询分析器的窗口输入如下的语句并执行: USE YGGL SELECT Name
FROM Employees
WHERE DepartmentID IN (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’财务部’) AND
Birthday!>ALL (SELECT Birthday
FROM Employees
WHERE DepartmentID IN (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’研发部’)) GO
【思考与练习】
用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。 (3)查找比所有财务部的雇员收入都高的雇员的姓名。 在查询分析器的窗口输入如下的语句并执行: USE YGGL SELECT Name
FROM Employees
WHERE EmployeeID IN (SELECT EmployeeID FROM Salary WHERE Income>
ALL (SELECT Income
FROM Salary
WHERE EmployeeID IN (SELECT EmployeeID FROM Employees
WHERE DepartmentID= (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’财务部’))))
GO
【思考与练习】
用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名。
3.连接查询的使用
(1)查询每个雇员的情况以及薪水的情况。 在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Employees.*,Salary.*
FROM Employees,Salary
WHERE Employees.EmployeeID=Salary.EmployeeID GO
【思考与练习】
查询每个雇员的情况以及其工作部门的情况。
(2)查找财务部收入在2200元以上的雇员姓名及其薪水详情。 在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Name,Income,Outcome
FROM Employees,Salary,Deparments
WHERE Employees.EmployeeID=Salary.EmployeeID AND Employees.DepartmentID= Departments.DepartmentID AND DepartmentName=’财务部’ AND Income>2000 GO
【思考与练习】
查询研发部在1966年以前出生的雇员姓氏及其薪水详情(使用inner join …on…)。
4.数据汇总
(1)求财务部雇员的平均收入。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT AVG(Income) AS ‘财务部平均收入’
FROM Salary
WHERE EmployeeID IN (SELECT EmployeeID FROM Employees
WHERE DepartmentID= (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’财务部’)) GO
【思考与练习】
不使用子查询实现上述查询功能(可以考虑使用连接查询); 查询财务部雇员的最高和最低实际收入。
(2)求财务部雇员的总人数。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT COUNT(EmployeeID)
FROM Employees
WHERE DepartmentID= (SELECT DepartmentID FROM Departments
WHERE DepartmentName=’财务部’) GO
【思考与练习】
使用连接查询实现上述查询功能;
统计财务部收入在2500元以上的雇员的人数。
5.GROUP BY,ORDER BY子句的使用
(1)求各部门的雇员数。
在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT COUNT(EmployeeID)
FROM Employees
GROUP BY DepartmentID GO
【思考与练习】
统计各部门收入在2000元以上雇员的人数。 (2)将各雇员的收入情况按收入由低到高排列。 在查询分析器的窗口输入如下的语句并执行: USE YGGL
SELECT Employees.*,Salary.*
FROM Employees,Salary
WHERE Employees.EmployeeID=Salary.EmployeeID ORDER BY Income GO
【思考与练习】
将各雇员的情况按出生时间先后排列。