SQLSERVER2008实用教程实验参考答案(实验4)
更新时间:2024-06-07 10:19:01 阅读量: 综合文库 文档下载
实验4 数据库的查询和视图 一、SELECT语句的基本使用
1. 查询Employees表中所有数据 2. 查询Employees表中指定字段数据
3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行 4. 使用WHERE子句查询表中指定的数据 查询编号为’000001’的雇员的地址和电话 查询月收入高于2000元的员工号码
查询1970年以后出生的员工的姓名和住址 5. 使用AS子句为表中字段指定别名
查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话
查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期 6. 使用使用CASE子句
查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女” 查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。 7. 使用SELECT语句进行简单计算 计算每个雇员的实际收入 8. 使用内置函数 获得员工总数
计算Salary表中员工月收入的平均数 获得Employees表中最大的员工号码 计算Salary表中所有员工的总支出
查询财务部雇员的最高和最低实际收入 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元以上的雇员人数
五、GROUP BY、ORDER BY子句的使用 1. 查找Employees表中男性和女性的人数 2. 按部门列出在该部门工作的员工的人数
3. 按员工的学历分组,排列出本科、大专、硕士的人数 4. 查找员工数超过2的部门名称和雇员数量
5. 按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人
6. 将雇员的情况按收入由低到高排列 7. 将员工信息按出生时间从小到大排列
8. 在ORDER BY 子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列
六、视图的使用 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语句的基本使用
1. 查询Employees表中所有数据 SELECT * FROM Employees; 2. 查询Employees表中指定字段数据
SELECT EmployeeID,Name,DepartmentID FROM Employees;
3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行 SELECT Distinct DepartmentID,Sex FROM Employees; 4. 使用WHERE子句查询表中指定的数据 查询编号为’000001’的雇员的地址和电话
Select Address,PhoneNumber FROM Employees WHERE EmployeeID='000001';
查询月收入高于2000元的员工号码
SELECT EmployeeID FROM Salary WHERE InCome>2000;
查询1970年以后出生的员工的姓名和住址
SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970'; SELECT Name,Address FROM Employees WHERE Birthday>'1970';
5. 使用AS子句为表中字段指定别名
查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话 SELECT Address AS 地址,PhoneNumber AS 电话 FROM Employees; 查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期
SELECT Name AS 姓名,Birthday AS 出生日期 FROM Employees WHERE Sex=1;
6. 使用使用CASE子句
查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女”
SELECT Name AS 姓名, CASE
WHEN Sex=1 THEN '男' WHEN Sex=0 THEN '女' END
AS 性别
FROM Employees;
查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
SELECT
a.Name AS 姓名,a.Address as 住址, CASE
WHEN b.InCome<2000 THEN '低收入'
WHEN b.InCome BETWEEN 2000 AND 3000 THEN '中等收入'
WHEN b.InCome >3000 THEN '高收入' END
AS 收入水平
FROM Employees a,Salary b
WHERE a.EmployeeID=b.EmployeeID;
7. 使用SELECT语句进行简单计算
在Salary表中,计算每个雇员的实际收入,并显示雇员编号和实际收入
SELECT EmployeeID AS 雇员编号,InCome-OutCome AS 实际收入 FROM Salary;
8. 使用聚合函数 获得员工总数
SELECT COUNT(*) FROM Employees;
计算Salary表中员工月收入的平均数
SELECT AVG(InCome) AS 平均收入 FROM Salary;
获得Employees表中最大的员工号码
SELECT MAX(EmployeeID) AS 雇员编号 FROM Employees;
计算Salary表中所有员工的总支出
SELECT SUM(OutCome) AS 总支出 FROM Salary;
查询财务部雇员的最高和最低实际收入
SELECT MAX(InCome-OutCome) AS 最高收入,MIN(InCome-OutCome) AS 最低收入 FROM Salary;
9. 模糊查询
找出所有姓王的雇员的部门号
SELECT DepartmentID AS 部门号 FROM Employees WHERE Name like '王%';
找出所有地址中含有“中山”的雇员的编号及部门号
SELECT EmployeeID AS 雇员编号,DepartmentID AS 部门号 FROM Employees WHERE Address like '%中山%'
找出雇员编号中倒数第二个数字为0雇员的编号的姓名、地址和学历
SELECT EmployeeID AS 雇员编号,Name AS 姓名,Address AS 地址,Education AS 学历 FROM Employees WHERE SUBSTRING(EmployeeID,5,1)='0';
10. Between…And…和Or的使用
找出收入在2000~3000元之间的雇员编号
SELECT EmployeeID,InCome FROM Salary WHERE InCome BETWEEN 2000 AND 3000;
找出部门为“1”或“2”的雇员的编号
SELECT EmployeeID,DepartmentID FROM Employees WHERE DepartmentID='1' OR DepartmentID='2';
11. 使用INTO子句,由源表创建新表
由表Salary创建“SalaryNew”表,要求包括编号和收入,选择收入在1500元以上的雇员
SELECT EmployeeID,InCome INTO SalaryNew FROM Salary WHERE InCome>1500;
由表Employees创建“EmployeesNew”表,要求包括编号和姓名,选择所有男员工
SELECT EmployeeID,Name INTO EmployeesNew FROM Employees WHERE Sex=1;
二、子查询的使用
1. 查找在财务部工作的雇员情况
--分析:雇员表和部门表通过DepartmentID进行关联 --1)在Departments表中查找财务部的编号 --2)在Employees表中查找部门的雇员情况
SELECT * FROM Employees WHERE DepartmentID =(
SELECT DepartmentID FROM Departments WHERE DepartmentName='财务部');
2. 用子查询的方法查找所有收入在2500以下的雇员的情况
--分析:员工表和收入表通过EmployeeID进行关联
SELECT * FROM Employees WHERE EmployeeID IN ( SELECT EmployeeID FROM Salary WHERE InCome<2500);
3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名
--分析:雇员表和部门表通过DepartmentID进行关联 --1)先找到研发部的部门编号
--2)再通过部门编号找到研发部的雇员年龄
--3)再找到财务部的部门编号,并通过部门编号查找雇员姓名,条件是年龄不低于所有研发部雇员年龄
SELECT Name 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='研发部'));
4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名
--1)查找财务部雇员的收入
--2)查找研发部雇员的编号,条件是收入比所有财务部雇员收入都高 --3)通过编号找到雇员姓名
SELECT Name FROM Employees WHERE EmployeeID IN ( SELECT EmployeeID FROM Salary WHERE EmployeeID IN( SELECT EmployeeID FROM Employees WHERE DepartmentID =(
SELECT DepartmentID FROM Departments WHERE DepartmentName='研发部')) AND InCome > ALL(
SELECT InCome FROM Salary WHERE EmployeeID IN(
SELECT EmployeeID FROM Employees WHERE DepartmentID =(
SELECT DepartmentID FROM Departments WHERE DepartmentName='财务部'))));
5. 查找比所有财务部的雇员收入都高的雇员的姓名
--分析:1)查找所有财务部的雇员收入
--2)查找其他雇员编号,条件是收入比所有财务部的雇员收入都高 --3)通过编号找到姓名
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='财务部'))));
6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名
--分析:年龄都大等价于生日都小 --1)找到所有研发部雇员的生日
--2)找到其他部门雇员的姓名,条件是生日比研发部的所有雇员的生日都小 SELECT Name FROM Employees WHERE Birthday < ALL ( SELECT Birthday FROM Employees WHERE DepartmentID IN (
正在阅读:
SQLSERVER2008实用教程实验参考答案(实验4)06-07
2022年辽宁师范大学六盘水师范学院联合培养项目843普通生物学[专04-15
七年级思想品德下学期期中考试卷02-22
普通话考试_60篇朗读文章05-08
七彩下雨天作文300字07-08
红头文件范文08-15
教师招聘结构化面试试题全集90页05-03
骂贱男人的话02-06
穗劳福〔1999〕3号 关于解答《广州市职工患病或非因工负伤医疗期02-27
ubuntu上CVSNT的搭建04-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- SQLSERVER2008
- 答案
- 参考
- 实用
- 教程
- 柳州两面针牙膏面临困境的原因和对策分析
- 汉译英段落翻译题
- win7安装网络打印机出现“无法加载标准TCP IP端口向导”问题解决
- 论语十二则词语解释练习卷答案
- 浅析变电站综自系统的结构与功能
- 数列总复习和测试题目
- 2012年初三年级下学期沈阳市第20中学中考数学仿真模拟及答案(1)
- 2011至2015河南大学专项学分学术报告
- 四下《普罗米修斯的故事》 学案设计
- 2018春夏新疆家庭教育知识培训答案
- 青岛港口章程
- 2012年芜湖十二中八年级数学竞赛试题
- 微机原理复习
- 注浆加固施工组织设计(2#斜井左线第二循环)终稿
- 危急值报告记录本
- 会计实习日志30篇
- 2018华医网继续教育项目学习《急诊常见影像学的判读和诊断(放射
- 心字底-书法教案
- 智能交通灯单片机课程设计报告
- 中考英语总复习第一部分教材知识研究七下Units13试题