SQLSERVER实用教程实验参考答案实验4Word文件下载.docx

上传人:b****5 文档编号:21332064 上传时间:2023-01-29 格式:DOCX 页数:14 大小:20.98KB
下载 相关 举报
SQLSERVER实用教程实验参考答案实验4Word文件下载.docx_第1页
第1页 / 共14页
SQLSERVER实用教程实验参考答案实验4Word文件下载.docx_第2页
第2页 / 共14页
SQLSERVER实用教程实验参考答案实验4Word文件下载.docx_第3页
第3页 / 共14页
SQLSERVER实用教程实验参考答案实验4Word文件下载.docx_第4页
第4页 / 共14页
SQLSERVER实用教程实验参考答案实验4Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

SQLSERVER实用教程实验参考答案实验4Word文件下载.docx

《SQLSERVER实用教程实验参考答案实验4Word文件下载.docx》由会员分享,可在线阅读,更多相关《SQLSERVER实用教程实验参考答案实验4Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

SQLSERVER实用教程实验参考答案实验4Word文件下载.docx

9.模糊查询

找出所有姓王的雇员的部门号

找出所有地址中含有“中山”的雇员的号码及部门号

找出员工号码中倒数第二个数字为0的员工的姓名、地址和学历

10.Between…And…和Or的使用

找出收入在2000~3000元之间的雇员编号

找出部门为“1”或“2”的雇员的编号

11.使用INTO子句,由源表创建新表

由表Salary创建“SalaryNew”表,要求包括编号和收入,选择收入在1500元以上的雇员

由表Employees创建“EmployeesNew”表,要求包括编号和姓名,选择所有男员工

二、子查询的使用

1.查找在财务部工作的雇员情况

2.用子查询的方法查找所有收入在2500以下的雇员的情况

3.查找财务部年龄不低于研发部雇员年龄的雇员姓名

4.用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名

5.查找比所有财务部的雇员收入都高的雇员的姓名

6.用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名

三、连接查询的使用

1.查询每个雇员的情况及薪水的情况

2.查询每个雇员的情况及其工作部门的情况

3.使用内连接的方法查询名字为“王林”的雇员所在的部门

4.使用内连接的方法查找出不在财务部工作的所有雇员信息

5.使用外连接方法查找出所有员工的月收入

6.查找财务部收入在2000元以上的雇员姓名及其薪水详情

7.查询研发部在1976年以前出生的雇员姓名及其薪水详请

四、聚合函数的使用

1.求财务部雇员的平均收入

2.查询财务部雇员的最高和最低收入

3.求财务部雇员的平均实际收入

4.查询财务部雇员的最高和最低实际收入

5.求财务部雇员的总人数

6.统计财务部收入在2500元以上的雇员人数

五、GROUPBY、ORDERBY子句的使用

1.查找Employees表中男性和女性的人数

2.按部门列出在该部门工作的员工的人数

3.按员工的学历分组,排列出本科、大专、硕士的人数

4.查找员工数超过2的部门名称和雇员数量

5.按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人

6.将雇员的情况按收入由低到高排列

7.将员工信息按出生时间从小到大排列

8.在ORDERBY子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列

六、视图的使用

1.创建视图

(1)在数据库YGGL上创建视图Departments_View,视图包含Department表的全部列

(2)创建视图Employees_Departments_View,视图包含员工号码、姓名、所在部门名称

(3)创建视图Employees_Salary_View,视图包含员工号码、姓名和实际收入三列

2.查询视图

从视图Employees_Salary_View中查询出姓名为“王林”的员工的实际收入

3.更新视图

(1)向视图Departments_View中添加一条记录(‘6’,‘广告部’,‘广告业务’)

执行完命令后,分别查看Departments_View和Department表中发生的变化

(2)尝试向Employees_Departments_View中添加一条记录,看看会发生什么情况

(3)尝试向Employees_Salary_View中添加一条记录,看看会发生什么情况

(4)将视图Departments_View中,部门号为‘6’的部门名称修改为‘生产车间’

(5)删除视图Departments_View中最新增加的的一条记录

4.删除视图Employees_Departments_View

5.在界面工具中操作视图

SELECT*FROMEmployees;

SELECTEmployeeID,Name,DepartmentIDFROMEmployees;

SELECTDistinctDepartmentID,SexFROMEmployees;

SelectAddress,PhoneNumberFROMEmployeesWHEREEmployeeID='

000001'

;

SELECTEmployeeIDFROMSalaryWHEREInCome>

2000;

SELECTName,AddressFROMEmployeesWHEREYEAR(Birthday)>

'

1970'

SELECTName,AddressFROMEmployeesWHEREBirthday>

SELECTAddressAS地址,PhoneNumberAS电话FROMEmployees;

SELECTNameAS姓名,BirthdayAS出生日期FROMEmployeesWHERESex=1;

SELECTNameAS姓名,

CASE

WHENSex=1THEN'

男'

WHENSex=0THEN'

女'

END

AS性别

FROMEmployees;

SELECT

a.NameAS姓名,a.Addressas住址,

WHENb.InCome<

2000THEN'

低收入'

WHENb.InComeBETWEEN2000AND3000THEN'

中等收入'

WHENb.InCome>

3000THEN'

高收入'

AS收入水平

FROMEmployeesa,Salaryb

WHEREa.EmployeeID=b.EmployeeID;

在Salary表中,计算每个雇员的实际收入,并显示雇员编号和实际收入

SELECTEmployeeIDAS雇员编号,InCome-OutComeAS实际收入FROMSalary;

8.使用聚合函数

SELECTCOUNT(*)FROMEmployees;

SELECTAVG(InCome)AS平均收入FROMSalary;

SELECTMAX(EmployeeID)AS雇员编号FROMEmployees;

SELECTSUM(OutCome)AS总支出FROMSalary;

SELECTMAX(InCome-OutCome)AS最高收入,MIN(InCome-OutCome)AS最低收入FROMSalary;

SELECTDepartmentIDAS部门号FROMEmployeesWHERENamelike'

王%'

找出所有地址中含有“中山”的雇员的编号及部门号

SELECTEmployeeIDAS雇员编号,DepartmentIDAS部门号FROMEmployeesWHEREAddresslike'

%中山%'

找出雇员编号中倒数第二个数字为0雇员的编号的姓名、地址和学历

SELECTEmployeeIDAS雇员编号,NameAS姓名,AddressAS地址,EducationAS学历FROMEmployeesWHERESUBSTRING(EmployeeID,5,1)='

0'

SELECTEmployeeID,InComeFROMSalaryWHEREInComeBETWEEN2000AND3000;

SELECTEmployeeID,DepartmentIDFROMEmployeesWHEREDepartmentID='

1'

ORDepartmentID='

2'

SELECTEmployeeID,InCome

INTOSalaryNew

FROMSalary

WHEREInCome>

1500;

SELECTEmployeeID,Name

INTOEmployeesNew

FROMEmployees

WHERESex=1;

--分析:

雇员表和部门表通过DepartmentID进行关联

--1)在Departments表中查找财务部的编号

--2)在Employees表中查找部门的雇员情况

SELECT*FROMEmployeesWHEREDepartmentID=(

SELECTDepartmentIDFROMDepartmentsWHEREDepartmentName='

财务部'

);

员工表和收入表通过EmployeeID进行关联

SELECT*FROMEmployeesWHEREEmployeeIDIN(

SELECTEmployeeIDFROMSalaryWHEREInCome<

2500);

--1)先找到研发部的部门编号

--2)再通过部门编号找到研发部的雇员年龄

--3)再找到财务部的部门编号,并通过部门编号查找雇员姓名,条件是年龄不低于所有研发部雇员年龄

SELECTNameFROMEmployeesWHEREDepartmentIDin(

ANDBirthday!

>

ALL(

SELECTBirthdayFROMEmployeesWHEREDepartmentIDin(

研发部'

));

--1)查找财务部雇员的收入

--2)查找研发部雇员的编号,条件是收入比所有财务部雇员收入都高

--3)通过编号找到雇员姓名

SELECTNameFROMEmployeesWHEREEmployeeIDIN(

SELECTEmployeeIDFROMSalaryWHEREEmployeeIDIN(

SELECTEmployeeIDFROMEmployeesWHEREDepartmentID=(

))

ANDInCome>

SELECTInComeFROMSalaryWHEREEmployeeIDIN(

))));

1)查找所有财务部的雇员收入

--2)查找其他雇员编号,条件是收入比所有财务部的雇员收入都高

--3)通过编号找到姓名

SELECTNameFROMEmployeesWHEREEmployeeIDIN(

ALL(

SELECTInComeFROMSalaryWhereEmployeeIDIN(

SELECTEmployeeIDFROMEmployeesWhereDepartmentID=(

年龄都大等价于生日都小

--1)找到所有研发部雇员的生日

--2)找到其他部门雇员的姓名,条件是生日比研发部的所有雇员的生日都小

SELECTNameFROMEmployeesWHEREBirthday<

ALL(

SELECTBirthdayFROMEmployeesWHEREDepartmentIDIN(

SELECTDepartmentIDFROMDepartmentsWHEREDepartmentName='

SELECTa.*,b.*

FROMEmployeesa,Departmentsb

WHEREa.DepartmentID=b.DepartmentID;

SELECTb.DepartmentNameFROMDepartmentsb

INNERJOINEmployeesa

ONa.DepartmentID=b.DepartmentID

Wherea.Name='

王林'

SELECTa.*FROMEmployeesa

INNERJOINDepartmentsb

ONa.DepartmentID=b.DepartmentID

WHEREb.DepartmentName!

='

SELECT*FROMEmployeesa

LEFTOUTERJOINSalarybON

a.EmployeeID=b.EmployeeID;

SELECTa.*,b.InComeFROMEmployeesa

INNERJOINSalaryb

ONa.EmployeeID=b.EmployeeID

INNERJOINDepartmentsc

ONa.DepartmentID=c.DepartmentID

WHEREb.InCome>

2000ANDc.DepartmentName='

INNERJOINSalaryb

WHEREc.DepartmentName='

ANDa.Birthday>

1976'

SELECTAVG(a.InCome)FROMSalarya

INNERJOINEmployeesb

ONc.DepartmentID=b.DepartmentID

SELECTMIN(a.InCome),MAX(a.InCome)FROMSalarya

SELECTAVG(a.InCome-a.OutCome)FROMSalarya

SELECTMIN(a.InCome-a.OutCome),MAX(a.InCome-a.OutCome)FROMSalarya

SELECTCOUNT(a.EmployeeID)FROMEmployeesa

WHEREb.DepartmentName='

INNERJOINSalaryc

ONc.EmployeeID=A.EmployeeID

WHEREc.InCome>

2500ANDb.DepartmentName='

SELECTSex,COUNT(Sex)FROMEmployeesGROUPBYSex;

--使用内连接的方法

SELECTb.DepartmentName,COUNT(a.EmployeeID)FROMEmployeesa

GROUPBYb.DepartmentName;

--使用多表查询方法,GROUPBY后面的字段,必须出现在SELECT语句要查询的字段中。

SELECTb.DepartmentName,COUNT(a.EmployeeID)FROMEmployeesa,Departmentsb

WHEREa.DepartmentID=b.DepartmentID

SELECTa.Education,COUNT(a.EmployeeID)FROMEmployeesa

GROUPBYa.Education;

GROUPBYb.DepartmentName

HAVINGCOUNT(a.EmployeeID)>

2;

SELECTa.WorkYear,COUNT(a.EmployeeID)FROMEmployeesa

GROUPBYa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1