SQL实验四数据库的查询和视图.docx
- 文档编号:5626959
- 上传时间:2022-12-29
- 格式:DOCX
- 页数:16
- 大小:167.79KB
SQL实验四数据库的查询和视图.docx
《SQL实验四数据库的查询和视图.docx》由会员分享,可在线阅读,更多相关《SQL实验四数据库的查询和视图.docx(16页珍藏版)》请在冰豆网上搜索。
SQL实验四数据库的查询和视图
《数据库原理及应用》实验报告
题目:
数据库的查询和视图
学生姓名:
孙跃
学院:
理学院
系别:
数学系
专业:
信息与计算科学
班级:
信计12-2
任课教师:
侯睿
二〇一五年四月
一、练习目的
1、数据库的查询
(1)掌握SELECT语句的基本语法;
(2)掌握子查询的表示;
(3)掌握连接查询的表示;
(4)掌握SELECT语句的GROUPBY子句的作用与使用方法;
(5)掌握SELECT语句的ORDERBY子句的作用与使用方法;
2、视图的使用
(1)熟悉视图的概念和作用;
(2)熟悉视图的创建方法;
(3)熟悉如何查询和修改视图。
二、练习准备
1、数据库的查询
(1)了解SELECT语句的基本语法格式;
(2)了解SELECT语句的执行方法;
(3)了解子查询的表示方法;
(4)了解连接查询的表示;
(5)了解SELECT语句的GROUPBY子句的作用与使用方法;
(6)了解SELECT语句的ORDERBY子句的作用;
2、视图的使用
(1)了解视图的概念;
(2)了解创建视图的方法;
(3)了解并掌握对视图的操作。
三、实验程序
实验4.1数据库的查询
1、
(1)对于实验2给出的数据库结构,查询每个雇员的所有数据.
USEYGGL
GO
SELECT*
FROMEmployees
(2)用SELECT语句查询Employees表中每个雇员的地址和电话.
SELECTAddress,PhoneNumber
FROMEmployees
(3)查询EmployeeID为000001的雇员的地址和电话.
SELECTAddress,PhoneNumber
FROMEmployees
WHEREEmployeeID='000001'
GO
(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话.
SELECTAddressAS地址,PhoneNumberAS电话
FROMEmployees
WHERESex=0
(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”.
SELECTNameAS姓名,
CASE
WHENSex=1THEN'男'
WHENSex=0THEN'女'
ENDAS性别
FROMEmployees
(6)计算每个员工的实际收入.
SELECTEmployeeID,实际收入=InCome-OutCome
FROMSalary
(7)获得员工总数.
SELECTCOUNT(*)
FROMEmployees
(8)找出所有姓王的雇员的部门号.
SELECTDepartmentID
FROMEmployees
WHERENameLIKE'王%'
(9)找出所有收入在2000~3000之间的员工号码.
SELECTEmployeeID
FROMSalary
WHEREInComeBETWEEN2000AND3000
(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入.
SELECTEmployeeIDas编号,InComeas收入
INTO收入在以上的员工
FROMSalary
WHEREInCome>1500
2、子查询的使用.
(1)查询在财务部工作的雇员的情况.
SELECT*
FROMEmployees
WHEREDepartmentID=
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='财务部'
)
(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.
SELECTName
FROMEmployees
WHEREDepartmentIDIN
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='财务部'
)
AND
Birthday!
>ALL
(
SELECTBirthday
FROMEmployees
WHEREDepartmentIDIN
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='研发部'
)
)
(3)查找比所有财务部的雇员收入都高的雇员的姓名.
SELECTName
FROMEmployees
WHEREEmployeeIDIN
(
SELECTEmployeeID
FROMSalary
WHEREInCome>ALL
(
SELECTInCome
FROMSalary
WHEREEmployeeIDIN
(
SELECTEmployeeID
FROMEmployees
WHEREDepartmentID=
(
SELECTEmployeeID
FROMDepartments
WHEREDepartmentName='财务部')
)
)
)
)
3、连接查询的使用
(1)查询每个雇员的情况及其薪水的情况
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHEREEmployees.EmployeeID=Salary.EmployeeID
(2)使用内连接的方法查询名字为“王林”的员工所在的部门
SELECTDepartmentName
FROMDepartmentsJOINEmployees
ONDepartments.DepartmentID=Employees.DepartmentID
WHEREEmployees.Name='王林'
(3)查询财务部收入在2000以上的雇员姓名及其薪水详情.
SELECTName,InCome,OutCome
FROMEmployees,Salary,Departments
WHEREEmployees.EmployeeID=Salary.EmployeeID
ANDEmployees.DepartmentID=Departments.DepartmentID
ANDDepartmentName='财务部'
ANDInCome>2000
4、聚合函数的使用.
(1)求财务部雇员的平均收入.
SELECTAVG(InCome)AS'财务部平均收入'
FROMSalary
WHEREEmployeeIDIN
(
SELECTEmployeeID
FROMEmployees
WHEREDepartmentID=
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='财务部'
)
)
(2)财务部雇员的平均实际收入.
SELECTAVG(InCome-OutCome)AS'财务部平均实际收入'
FROMSalary
WHEREEmployeeIDIN
(
SELECTEmployeeID
FROMEmployees
WHEREDepartmentID=
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='财务部'
)
)
(3)求财务部雇员的总人数
SELECTCOUNT(EmployeeID)
FROMEmployees
WHEREDepartmentID=
(
SELECTDepartmentID
FROMDepartments
WHEREDepartmentName='财务部'
)
5、GROUPBY\ORDERBY子句的使用.
(1)Emyees表中的男性和女性的人数
SELECTSex,COUNT(Sex)
FROMEmployees
GROUPBYSex;
(2)查找员工数超过2人的部门名称和员工数量.
SELECT(Employees.DepartmentID),COUNT(*)AS人数
FROMEmployees,Departments
WHEREEmployees.DepartmentID=Department.DepartmentID
GROUPBYEmployees.DepartmentID
HAVINGCOUNT(*)>2
(3)将各雇员的情况按收入由低到高排列.
SELECTEmployees.*,Salary.*
FROMEmployees,Salary
WHEREEmployees.EmployeeID=Salary.EmployeeID
ORDERBYInCome
实验4.2视图的使用
1、创建视图
1 创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。
2 创建YGGL数据库上的视图Employees_view,视图包含员工号码、姓名和实际收入三列。
2、查询视图
(1)从视图DS_VIEW,中查询出部门号为3的部门名称。
(2)从视图Employees_view查询出姓名为“王林”的员工的实际收入。
CREATE VIEW Employees_view(EmployeeID,Name,RealIncome)
AS
SELECT Employees.EmployeeID,Name,InCome-OutCome
FROM Employees,Salary
WHERE Employees.EmployeeID=Salary.EmployeeID
3、更新视图
在更新视图前需要了解可更新视图的概念,了解什么视图时不可以进行修改的。
更新视图真正更新的是和视图关联的表。
(1)向视图DS_VIEW中插入一行数据:
“6,广告部,广告业务”。
(2)修改视图DS_VIEW,将部门号为5的部门名称修改为“生产车间”。
(3)修改视图Employees_view中员工号为“000001”的员工姓名为“王浩”。
(4)删除视图DS_VIEW中部门号为“1”的一行数据。
SELECTDepartmentName
FROMDS_VIEW
WHEREDepartmentID='3'
SELECTRealIncome
FROMEmployees_view
WHEREName='王林'
INSERT INTO DS_VIEW VALUES('6','广告部','广告业务部')
UPDATE DS_VIEW
SET DepartmentName='生产车间'
WHERE DepartmentID='5'
DELETE FROM DS_VIEW
WHERE DepartmentID='1'
4、删除视图
删除视图DS_VIEW。
DROPVIEWDS_VIEW
在界面工具中操作视图。
(1)创建视图:
启动“SQLServerManagementStudio”然后在“对象资源管理器”中展开“数据库”,在”PXSCJ”中选择其中的“视图”项,右击鼠标,在弹出的的快捷菜单上选择“新建视图”菜单项。
在随后出现的添加表窗口中,添加需要关联的基本表。
在视图窗口的关系图窗口显示基表的全部列信息。
根据需要在窗口中选择创建视图所需的字段。
完成后单击“保存”按钮保存。
(2)查询视图:
新建一个查询,输入T-SQL查询命令即可和查询表一样查询视图。
删除视图:
展开YGGL数据库->“视图”->选择要删除的视图->右击选择“删除”选项,确认即可。
四、实验结果
一、
(1)对于实验2给出的数据库结构,查询每个雇员的所有数据.
(2)用SELECT语句查询Employees表中每个雇员的地址和电话.
(3)查询EmployeeID为000001的雇员的地址和电话.
(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话
(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”.
(6)计算每个员工的实际收入.
(7)获得员工总数.
(8)找出所有姓王的雇员的部门号.
(9)找出所有收入在2000~3000之间的员工号码.
(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入.
二、子查询的使用.
(1)查询在财务部工作的雇员的情况.
(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.
(3)查找比所有财务部的雇员收入都高的雇员的姓名.
三、连接查询的使用.
(1)查询每个雇员的情况及其薪水的情况
(2)使用内连接的方法查询名字为“王林”的员工所在的部门
(3)查询财务部收入在2000以上的雇员姓名及其薪水详情.
四、聚合函数的使用.
(1)求财务部雇员的平均收入.
(2)财务部雇员的平均实际收入.
(3)求财务部雇员的总人数
五、GROUPBY\ORDERBY子句的使用.
(1)Emoyees表中的男性和女性的人数
(2)查找员工数超过2人的部门名称和员工数量.
(3)将各雇员的情况按收入由低到高排列.
实验2.2视图的使用的结果
五、实验总结
通本次实验,我对数据库的查询和视图进行了上机练习,对课堂上所学的知识进行了重新巩固,对不明白的地方重新进行了复习,在上机操作方面自己也有了很大的提高,掌握了SELECE语句的基本语法、GROUPBY、ORDERBY语句的作用和使用方法,子查询的表示,连接查询的表示,熟悉了视图的概念和作用,掌握了视图的创建、查询和修改,通过实验我也体会到上机操作一定要谨慎认真,否则会导致意外的麻烦。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 实验 数据库 查询 视图