实验3 数据库的查询和视图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验3 数据库的查询和视图
实验目的
(1)掌握SELECT语句的基本语法
(2)掌握子查询的表示
(3)掌握连接查询的表示
(4)掌握数据汇总的方法
(5)掌握SELECT语句的GROUP BY子句的作用和使用方法
(6)掌握SELECT语句的ORDER BY子句的作用和使用方法
(7)掌握视图的使用方法
实验准备
(1)了解SELECT语句的基本语法格式和执行方法
(2)了解子查询的表示方法,连接查询和数据汇总的方法
(3)了解SELECT语句的GROUP BY子句的作用和使用方法
(4)了解SELECT语句的ORDER BY子句的作用
(5)了解视图的作用和创建视图的方法
(6)了解视图的使用方法
实验内容
一.SELECT语句的基本使用
1.对于实验2给出的数据库表结构,查询每个雇员的所有数据。在SQL*PLUS 窗口中输入下面语句并执行:
Select * from employees
思考与练习:用SELECT语句查询Departments和Salary中的所有记录
2.查询每个雇员的地址和电话。在SQL*PLUS窗口中输入下面语句并执行:Select address,phonenumber from employees;
思考与练习:用SELECT语句查询Departments和Salary表的一列或若干列3.查询employeeID为000001的雇员的地址和电话。在SQL*PLUS窗口中输入如下语句并执行:
Select address, phonenumber from employees where employeeID=’000001’
思考与练习:用SELECT语句查询Departments和Salary表中满足条件的一列或若干列
4.查询employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址,电话。在SQL*PLUS窗口中输入下面语句并执行:Select address as 地址, phonenumber as 电话号码from employees where sex=0;
注意:使用AS子句可指定目标列的标题。
5.计算每个雇员的实际收入。在SQL*PLUS窗口中输入下面语句并执行:Select employeeid,income-outcome as 实际收入from salary
6.找出所有姓王的雇员的部门号。在SQL*PLUS窗口中输入下面语句并执行:
Select departmentID from employees where name like ‘王%’
思考与练习:找出所有地址中含有“中山”的雇员的号码及部门号
7.找出所有收入在2000-3000元之间的雇员号码。在SQL*PLUS窗口中输入下面语句并执行:
Select employeeId from salary where income between 2000 and 3000
思考与练习:找出所在部门1或2工作的雇员的号码
注意:在SELECT语句中LIK、E BETWEEN AND、IN、NOT谓语词的作用
二、子查询的使用
1.查找财务部工作的雇员的情况。在SQL*PLUS窗口中输入下面语句并执行:Select * from employees
Where departmentid=(
Select departmentID from departments
Where departmentname=’财务部’)
思考与练习:用子查询的方法查找所有收入在2500元以下的雇员的情况。
2.查找财务部门年龄不低于研发部雇员年龄的雇员姓名。在SQL*PLUS窗口中输入下面语句并执行:
Select neme 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=’研发部’)
思考与练习:用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。
3.查找比所有财务部收入都高的雇员的姓名。在SQL*PLUS窗口中输入下面语句并执行:
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=’财务部’))));
思考与练习:用子查询的方法查找所有年龄比研发部年龄都大的雇员的姓名
三、连接查询的使用
1.查询每个雇员的基本信息及薪水的情况。在SQL*PLUS窗口中输入下面语句并执行:
Select employees.*,salary.* from employees,salary
Where employees.employeeid=salary.employeeid;
思考与练习:查询每个雇员的基本信息及其工作的部门的情况
2.查找财务部收入在2200元以上的雇员姓名及其薪水详情。在SQL*PLUS 窗口中输入下面语句并执行:
Select name,income,outcome from employees,salary,departments
Where employees.employeeid=salary.employeeid and employees.departmentid=departments.departmentid and departmentname=’财务部’and income>2200;
思考与练习:查询研发部在1966年以前出生的雇员姓名及其薪水详情。四、数据汇总
1.求财务部雇员的平均收入。在SQL*PLUS窗口中输入下面语句并执行: