实验四 数据库的查询和视图.docx
- 文档编号:23713351
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:33
- 大小:4.58MB
实验四 数据库的查询和视图.docx
《实验四 数据库的查询和视图.docx》由会员分享,可在线阅读,更多相关《实验四 数据库的查询和视图.docx(33页珍藏版)》请在冰豆网上搜索。
实验四数据库的查询和视图
测试过程:
(实验中出现的问题、错误、解决方法)
问题一:
新建查询,调试过程中出现提示无效行或列
问题二:
新建查询,调试过程中出现第几行出现错误
解决办法:
检查新建的查询,标点符号,英文字母必须是在英文编辑的模式下,检查表结构中列名与查询中的列名是否相同
实验总结:
通过实验知道select语句的基本语法,子查询的表示,连接查询的表示,掌握select语句的groupby子句的作用和使用方法,掌握select语句的orderby子句的作用和使用方法:
关于视图的使用
知道了视图的概念和作用;掌握视图的创建方法;掌握如何让查询和修改视图。
通过理论与实践相结合,对于我们学习数据库有很大帮助
签名姚玉龙
2014年5月8日
评语与成绩:
教师签名:
年月日
洛阳师范学院信息技术学院
软件实验报告
专业:
电子商务课程:
___SQLserver实用教程___________
学号:
_121144063__姓名:
__姚玉龙____班级:
___12级电子商务________
实验名称
数据库的查询和视图
实验类型
验证型
实验时间
2014-5-8
实验环境
Windows2003MicrosoftSQLServer
实验目的与要求:
数据库的查询
(1)掌握select语句的基本语法;
(2)掌握子查询的表示
(3)掌握连接查询的表示
(4)掌握select语句的groupby子句的作用和使用方法
(5)掌握select语句的orderby子句的作用和使用方法
视图的使用
(1)熟悉视图的概念和作用;
(2)掌握视图的创建方法;
(3)掌握如何让查询和修改视图。
实验内容:
4.1数据库的查询
1实验准备
(1)了解SELECT语句的基本语法格式;
(2)了解SELECT语句的执行方法;
(3)了解子查询的表示方法;
(4)了解连接查询的表示;
(5)了解SELECT语句的GROUPBY子句的作用和使用方法;
(6)了解SELECT语句的ORDER BY子句的作用;
2实验内容
(1)SELECT语句的基本使用。
①对于实验2给出的数据库表结构,查询每个雇员的所有数据。
新建一个查询,在查询分析器中输入如下语句并执行:
USE YGGL
GO
SELECT*
FROMEmployees\
②用SELECT语句查询Employees表中每个雇员的地址和电话。
新建一个查询,在查询分析器中输入如下语句并执行:
UseYGGL
GO
SELECTAddressPhoneNumber
FROMEmployees
③查询EmployeeID为000001的雇员的地址和电话。
UseYGGL
GO
SELECTAddressPhoneNumber
FROMEmployees
WHEREEmployeeID=’000001’
④查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
USEYGGL
GO
SELECTAddressAS地址,PhoneNumberAS电话
FROMEmployees
WHERESex=0
⑤查询Employees表中员工的姓名和性别,要求SEX值为时显示为“男”,为0时显示为“女”。
SELECT Name AS姓名,
CASE
WHENSex=1THEN 男
WHENSex=1THEN 女
ENDAS 性别
FROMEmployees
⑥计算每个雇员的实际收入
USEYGGL
GO
SELECTEployeeID,实际收入=income-OutCome
FROMSalary
⑦获得员工总数。
SELECT COUNT(*)
FROM Salary
⑧找出所有姓王的雇员的部门号。
USEYGGL
GO
SELECT DepartmentID
FROM Employees
WHERE Name LIKE 王%
⑨找出所有收入在2000-3000元之间的员工号码。
SELECTEmployeeID
fromSalary
whereInComebetween2000and3000
⑩使用into子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入
USEYGGL
GO
selectEmployeeIDas编号,Incomeas收入
into收入在1500元以上的员工
fromSalary
whereInCome>1500
(2)子查询的使用。
①查找在财务部工作的雇员的情况
USEYGGL
GO
select*
fromEmployees
whereDepartmentID=
(
selectDepartmentIDfromDepartments
whereDepartmentName='财务部'
)
②②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。
USEYGGL
GO
selectName
fromEmployees
whereDepartmentIDin
(selectDepartmentID
fromDepartments
whereDepartmentName='财务部'
)
and
Birthday!
>all
(selectBirthday
fromEmployees
whereDepartmentIDin
(
selectDepartmentIDfromDepartments
whereDepartmentName='研发部'
)
)
③查找比所有财务部的雇员收入都高的雇员的姓名。
USEYGGL
GO
SelectNamefromEmployees
whereEmployeeIDin
(selectEmployeeIDfromSalary
whereInCome>all
(selectInComefromSalary
whereEmployeeIDin
(selectEmployeeIDfromEmployees
whereDepartmentID=
(selectDepartmentIDfromDepartments
whereDepartmentName='财务部'
)
)
)
)
(3)连接查询的使用。
①查询每个雇员的情况及其薪水的情况。
USEYGGL
GO
selectEmployees.*,Salary.*
fromEmployees,Salary
whereEmployees.EmployeeID=Salary.EmployeeID
②②使用内连接的方法查询名字为“王林”的员工所在的部门
selectDepartmentNamefromDepartments
JoinEmployeesonDepartments.DepartmentID=Employees.DepartmentID
whereEmployees.Name='王林'
③查找财务部收入在2000元以上的雇员姓名及其薪水详情。
新建一个查询,在查询分析器中输入如下语句并执行。
selectName,Income,Outcome
fromEmployees,Salary,Departments
whereEmployees.EmployeeID=Salary.EmployeeID
andEmployees.DepartmentID=Departments.DepartmentID
andDepartmentName='财务部'
andIncome>2000
(4)聚合函数的使用。
1.求财务部雇员的平均收入
新建一个查询,在查询分析器中输入如下语句并执行。
USEYGGL
GO
selectAVG(Income)as'财务部平均收入'
fromSalary
whereEmployeeIDin
(
selectEmployeeID
fromEmployees
whereDepartmentID=
(
selectDepartmentID
fromDepartments
whereDepartmentName='财务部'
)
)
3.②求财务部的平均实际收入
新建一个查询,在查询分析其中输入如下语句并执行。
USEYGGL
GO
selectavg(Income-Outcome)as'财务部平均实际收入'
fromSalary
whereEmployeeIDin
(
selectEmployeeID
fromEmployees
whereDepartmentID=
(selectDepartmentID
fromDepartments
whereDepartmentName='财务部'
)
)
③求财务部雇员的总人数
selectCOUNT(EmployeeID)fromEmployees
whereDepartmentID=
(selectDepartmentIDfromDepartments
whereDepartmentName='财务部'
)
(5)GROUPBY、ORDERBY子句的使用:
①查找Employees表中男性和女性的人数
selectSex,COUNT(Sex)
fromEmployees
groupbySex;
②②查找员工数超过2的部门名称和员工数量。
selectEmployees.DepartmentID,COUNT(*)as'人数'
fromEmployees,Departments
WHEREEmployees.DepartmentID=Departments.DepartmentID
groupbyEmployees.DepartmentID
havingCOUNT(*)>2
③将各雇员的情况按收入由低到高排列。
selectEmployees.*,Salary.*
fromEmployees,Salary
whereEmployees.EmployeeID=Salary.EmployeeID
orderbyInCome
4.2视图的使用
1实验准备
(1)了解视图的概念;
(2)了解创建视图的方法;
(3)了解并掌握对视图的操作。
2.实验内容
(1)创建视图。
(2)①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。
CREATEVIEWDS_VIEW
ASSELECT*FROMDepartments
②创建YGGL数据库上的视图Employees-view,视图包含“员工号码”、“姓名”、“实际收入”三列。
使用如下SQL语句:
CREATEVIEWEmployees_view(EmployeeID,Name,realIncome)
AS
SELECTEmployees.EmployeeID,,Name,Income-OutCome
FROMEmployees,salary
WHEREEmployees.EmployeeID=salary.EmployeeID
(2)查询视图:
①从视图DS_VIEW中查询出部门号为3的部门名称。
selectDepartmentNamefromDS_view
whereDepartmentID='3'
②从视图Employees_view中查询出姓名为“王林”的员工的实际收入
selectRealIncomefromEmployees_view
whereName='王林'
(3)更新视图。
在更新视图前需要了解可更新视图的概念,了解什么视图是不可以进行修改的。
更新视图真正更新的是和视图关联的表。
①向视图DS_VIEW中插入一行数据“6,广告部,广告业务”
insertintoDS_VIEWvalues('6','广告部','广告业务')
②修改视图DS_VIEW,将部门号为5的部门名称修改为“生产车间”
updateDS_VIEW
setDepartmentName='生产车间'
whereDepartmentID='5'
③将视图Employees_view中员工号为“000001”的员工的姓名修改为“王浩”
updateEmployees_view
setName='王浩'
whereEmployeeID='000001'
④删除视图DS_VIEW中部门号为“1”的一行数据
delectfromDS_VIEW
whereDepartmentID='1'
(4)删除视图
删除视图DS_VIEW.
dropVIEWDS_VIEW
(5)在界面工具中操作视图
①创建视图:
启动SQLServerManagementStudio,在对象资源管理器中展开“数据库→YGGL”选择其中的视图项,右击鼠标,在弹出的快捷菜单上选择“新建视图”菜单项,在随后出现的“添加表”窗口中,添加所需关联的基本表。
在视图窗口中的关系图窗口显示基表的全部信息。
根据需要在窗口中选择创建视图所需的字段。
完成后单击“保存”按钮保存。
②查询视图:
新建一个查询,输入T-SQL查询命令即可像查询表一样查询视图。
③删除视图:
展开YGGL数据库→“视图”,选择要删除的视图,右击选择“删除”选项,确认即可。
实验步骤:
(算法描述、源程序、操作步骤和方法)
实验步骤:
(算法描述、源程序、操作步骤和方法)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验四 数据库的查询和视图 实验 数据库 查询 视图