数据库实验报告.docx
- 文档编号:25793804
- 上传时间:2023-06-14
- 格式:DOCX
- 页数:11
- 大小:438.71KB
数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(11页珍藏版)》请在冰豆网上搜索。
数据库实验报告
实验3T-SQL基础
【实验目的】
1、掌握在SQLSERVER2005下进行数据还原的方法。
2、掌握SQL语句的查询功能和数据更改功能。
【实验内容】
1.还原factory数据库。
2.在实验2建立的factory数据库上,完成如下各题。
(1)显示所有职工的年龄,并按职工号递增排序。
(2)求出各部门的党员人数。
(3)显示所有职工的姓名和2004年1月份的工资。
(4)显示所有职工的职工号、姓名和平均工资。
(5)显示所有职工的职工号、姓名、部门名和2004年2月份的工资,并按部门名的顺序排列。
(6)显示各部门名和该部门的所有职工平均工资。
(7)显示所有平均工资高于1200的部门名和对应的平均工资。
(8)显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属于管理部门,市场部属于市场部门。
(9)*若存在职工号为10的职工,则显示其工作部门名称,否则显示相应提示信息。
(10)**求出男女职工的平均工资,若男职工平均工资高出女职工平均工资50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”的信息;否则显示“女职工比男职工的工资高多了”的信息。
【实验报告要求】
写出实现各题要求的命令/程序,并列出执行结果。
例如:
(1)显示所有职工的年龄,并按职工号递增排序。
对应的程序如下:
USEfactory
GO
SELECT姓名,YEAR(GETDATE())-YEAR(出生日期)AS'年龄'
FROMworker
ORDERBY职工号
GO
执行结果如下:
姓名年龄
---------------------
孙华56
陈涛50
刘欣56
李涵43
王小燕44
李艺45
魏君38
孙天奇43
陈明63
李华52
余慧28
欧阳少兵37
程西28
张旗28
刘夫文66
操作步骤:
1.
还原数据库如下图
2.
(1)显示所有职工的年龄,并按职工号递增排序。
USEfactory
GO
SELECT姓名,YEAR(GETDATE())-YEAR(出生日期)AS'年龄'
FROMworker
ORDERBY职工号
GO
2.
(2)求出各部门的党员人数。
SELECTdepart.部门名,
COUNT(*)AS‘党员人数’
FROMworker,depart
WHEREworker.党员否=1ANDworker.部门号=depart.部门号
GROUPBYdepart.部门号
(3)显示所有职工的姓名和2004年1月份的工资。
SELECTworker.姓名,salary.工资
FROMworker,salary
WHEREworker.职工号=salary.职工号
ANDYEAR(salary.日期)=2004ANDMONTH(salary.日期)=1
(4)显示所有职工的职工号、姓名和平均工资.
SELECTworker.职工号,worker.姓名,AVG(salary.工资)AS’平均工资’
FROMworker,salary
WHEREworker.职工号=salary.职工号
GROUPBYworker.职工号,worker.姓名
(5)显示所有职工的职工号、姓名、部门名和2004年2月份的工资,并按部门名的顺序排列。
SELECTworker.职工号,worker.姓名,depart.部门名,salary.工资
AS'2004年月工资'
FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号ANDYEAR(salary.日期)=2004
ANDMONTH(salary.日期)=2
ORDERBYworker.部门号
(6)显示各部门名和该部门的所有职工平均工资。
SELECTdepart.部门名,AVG(salary.工资)AS'平均工资'
FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBYdepart.部门名
(7)显示所有平均工资高于1200的部门名和对应的平均工资。
SELECTdepart.部门名,AVG(salary.工资)AS'平均工资'
FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBYdepart.部门名
HAVINGAVG(salary.工资)>1200
(8)显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属于管理部门,市场部属于市场部门。
SELECTworker.职工号,worker.姓名,
CASEdepart.部门名
WHEN'财务部'THEN'管理部门'
WHEN'人事部'THEN'管理部门'
WHEN'市场部'THEN'市场部门'
ENDAS'部门类型'
FROMworker,depart
WHEREworker.部门号=depart.部门号
(9)*若存在职工号为10的职工,则显示其工作部门名称,否则显示相应提示信息。
DECLARE@noint,@depchar(10)
SET@no=10
IFEXISTS(SELECT*FROMworkerWHERE职工号=@no)
BEGIN
SELECT@dep=depart.部门名
FROMworker,depart
WHEREworker.职工号=@noANDworker.部门号=depart.部门号
PRINT'职工号为'+CAST(@noASCHAR
(2))+'的职工在'+CAST(@depASchar(6))+'工作'
ENDELSE
PRINT'不存在该职工号的记录'
(10)**求出男女职工的平均工资,若男职工平均工资高出女职工平均工资50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”的信息;否则显示“女职工比男职工的工资高多了”的信息。
DECLARE@avg1float,@avg2float,@ratiofloat
--计算男职工平均工资
SELECT@avg1=AVG(salary.工资)
FROMworker,salary
WHEREworker.职工号=salary.职工号ANDworker.性别='男'
--计算女职工平均工资
SELECT@avg2=AVG(salary.工资)
FROMworker,salary
WHEREworker.职工号=salary.职工号ANDworker.性别='女'
SET@ratio=@avg1/@avg2
IF@ratio>1.5
PRINT'男职工比女职工的工资高多了'
ELSE
IF@ratio>=0.8
PRINT'男职工跟女职工的工资差不多'
ELSE
PRINT'女职工比男职工的工资高多了'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告