实验四 数据库的查询和视图
T4.1 数据库的查询
1.目的与要求
(1)掌握select语句的基本语法; (2)掌握子查询的表示 (3)掌握连接查询的表示
(4)掌握select语句的group by子句的作用和使用方法 (5)掌握select语句的order by子句的作用和使用方法 2 实验准备
(1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示;
(5)了解SELECT语句的GROUPBY子句的作用和使用方法; (6)了解SELECT语句的ORDER BY子句的作用; 3实验内容
SELECT语句的基本使用。
①对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在查询分析器中输入如下语句并执行: USE YGGL GO SELECT *
FROM Employees
【思考与练习】 用SELECT语句查询Departments和Salary表中所有的数据信息。
用SELECT语句查询Employees表中每个雇员的地址和电话。 新建一个查询,在查询分析器中输入如下语句并执行:
Use YGGL GO
SELECT Address PhoneNumber
FROM Employees 【思考与练习】
a. 用SELECT语句查询Deparments和Salary表的一列或若干列。
b. 查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。 c. 查询EmployeeID为000001的雇员的地址和电话。
Use YGGL GO
SELECT Address PhoneNumber FROM Employees
WHERE EmployeeID=’000001’ 【思考与练习】
a. 查询月收入高于2000元的员工号码。 b. 查询1970年以后出生的员工的姓名和住址。 c. 查询所有财务部的员工的号码和姓名。
查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
USE YGGL GO
SELECT Address AS 地址,PhoneNumber AS 电话 FROM Employees WHERE Sex=0
【思考与练习】查询Employees表中男员工的姓名和出生日期,要求将各列标题用中文标示。
⑤查询Employees表中员工的姓名和性别,要求SEX值为时显示为“男”,为0时显示为“女”。
SELECT Name AS姓名, CASE
WHENSex=1 THEN 男 WHENSex=1 THEN 女 END AS 性别 FROM Employees
【思考与练习】 查询Employees员工的姓名、住址和收入水平,2000元以下显示低收入,2000-3000元显示为中等收入,3000元以上显示为高收入。 ⑥ 计算每个雇员的实际收入
USE YGGL GO
SELECT EployeeID,实际收入=income-OutCome FROMSalary
【思考与练习】使用SELECT语句进行简单的计算。
⑦获得员工总数。
SELECT COUNT(*) FROM Salary 【思考与练习】
a.计算salary表中员工月收入的平均数。 b.获得Employees表中最大员工号码。 c.计算Salary表中所有员工的总支出。 d.查询财务部雇员的最高和最低实际收入。 ⑧找出所有姓王的雇员的部门号。 USE YGGL GO
SELECT DepartmentID FROM Employees WHERE Name LIKE 王% 【思考与练习】
a.找出所有其地址中含有“中山”的雇员的号码及部门.
b.查找员工号码倒数第二个数字为0的员工的姓名、地址和学历。 ⑨找出所有收入在2000-3000元之间的员工号码。
SELECT EmployeeID from Salary
where InCome between 2000 and 3000
【思考与练习】找出所有在部门“1”或“2”工作的雇员的号码。
注意:了解在SELECT语句中LIKE、BETWEEN…AND、IN、NOT以及CONTAIN谓词的作用。
⑩使用into子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入
USE YGGL GO
select EmployeeID as 编号,Income as 收入 into 收入在1500元以上的员工 from Salary
where InCome>1500
【思考与练习】使用Into子句,由表Employees创建“男员工”表,包括编号和姓名。
(1) 子查询的使用。
①查找在财务部工作的雇员的情况
USE YGGL GO select * from Employees where DepartmentID= (
select DepartmentID from Departments where DepartmentName='财务部' )
【思考与练习】用子查询的方法查找所有收入在2500元以下的雇员的情况 ②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。
USE YGGL GO
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='研发部' ) )
【思考与练习】用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。
③查找比所有财务部的雇员收入都高的雇员的姓名。
USE YGGL GO
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='财务部' ) ) ) )
【思考与练习】用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库SQL_Server实用教程(第三版)实验4_数据库的查询和视图在线全文阅读。
相关推荐: