sql课后题Word下载.docx

上传人:b****2 文档编号:14796705 上传时间:2022-10-24 格式:DOCX 页数:42 大小:2.07MB
下载 相关 举报
sql课后题Word下载.docx_第1页
第1页 / 共42页
sql课后题Word下载.docx_第2页
第2页 / 共42页
sql课后题Word下载.docx_第3页
第3页 / 共42页
sql课后题Word下载.docx_第4页
第4页 / 共42页
sql课后题Word下载.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

sql课后题Word下载.docx

《sql课后题Word下载.docx》由会员分享,可在线阅读,更多相关《sql课后题Word下载.docx(42页珍藏版)》请在冰豆网上搜索。

sql课后题Word下载.docx

 

3作业

以下练习题使用hr用户登录

1.查询所有员工及对应部门的记录,包括没有对应部门编号(department_id)的员工记录

a.XXX=b.XXX(+)等价于aleftouterjoinbon(a.XXX=b.XXX);

左外连接。

2.查询所有员工及对应部门的记录,包括没有任何员工的部门记录。

a.XXX(+)=b.XXX等价于arightouterjoinbon(a.XXX=b.XXX);

右外连接。

3.查询所有员工及对应部门的记录,包括没有对应部门编号(department_id)的员工记录和没有任何员工的部门记录。

全外连接只有一种写法:

aallouterjoinbon(a.XXX=b.XXX);

4.

写一个查询来查询出雇员的名字,部门号,部门名称。

5.输出30号部门的所有工作的列表,以及部门名称。

6.

写一个查询,来查询出挣到佣金(comm)的雇员姓名,部门名称,和部门所处的位置。

7.

写一个查询,查出在名字里面有一个"

A"

的所有雇员姓名和其所在的部门的名称。

或者:

8.

写出一个查询,查出工作在DALLAS的所有员工的姓名、工作、部门号、部门名称。

9.

查出每个雇员的编号、姓名、其管理者的编号和姓名。

各个列分别命名为:

Emp#,EmpName,EmpM#,EmpName.

注意看下面的语句:

上述表是没有管理者的命名的,我们可以用自连接:

如果a.id=b.上司号,那么这时,a的信息就是当领导的人的信息(不管管几个人)。

也就是a表中的哥们是b表中哥们儿的的领导。

这时a表中有king,而且显示出了该领导管理的人员名单。

如果a.上司号=b.id,那么这时,a的信息就是有上司的人的信息(也就是有领导的人的信息)。

也就是b表中的哥们儿是a表中哥们的领导。

9题结果:

10.修改第9题的查询,使得没有管理者的员工的信息也可以显示出来。

4作业

1.查询出入职超过一年的员工信息

2查询出每个员工从工龄有多少个周

3今年公司准备给职位为ANALYST工资涨10%,CLERK工资涨15%,MANAGER涨20%,其它职位不变,请使用一个select语句模拟工资涨之后的各个员工工资

或写成:

4.写一个查询,选择出当前的日期。

5.查询出雇员表(emp)表中的雇员号、姓名、新的薪水(是原先薪水的1.25倍),并将该列标记为newsalary。

将该脚本保存到p3q2.sql中。

6.运行文件p3q2中的查询。

7.查询出雇员表中所有员工的姓名;

雇佣日期;

和工资调整日期(工作6个月后的第一个星期一)。

其格式要求是类似于:

“1981-09-23”。

查出每个员工的名字(ename)、雇佣日期到现在的日期间隔的月数(要求为整数),该列命名为MONTHS_WORKED,并以该列的降序排序

9.写一个查询,查询出雇员的姓名,以及姓名的长度。

要求其姓名的第一个字母为大写,其它的字母为小写。

5作业

1.统计每个部门的平均工资,和最高工资,最低工资,并按照部门号排序

我表里有两个没部门的人,所以你的结果可能和我不同,是正常的。

2.查询出平均工资高于2000的部门以及其平均工资

6作业

创建多列的子查询。

在基于未知值的查询中运用子查询。

使用子查询,查询在一个数据集中存在,而在另一个数据集中不存在的数据。

1.查询出部门位置为“DALLAS”的员工号,姓名,工资,职位,部门号

2查询出部门位置为“DALLAS””,“NEWYORK”的员工号,姓名,工资,职位,部门号

3.查询出与员工号为7788的job和sal相匹配的员工信息

4.查询出与员工号为7788的job或者sal相匹配的员工信息

5.查询出其经理不是10部门经理的员工信息

注意10部门经理可以有空值的。

6.查出与BLACK在同一个部门的所有雇员的姓名和雇佣日期。

7.查出工资高于平均工资的所有员工的编号和姓名,其结果按照工资的降序排列。

如果是高于本部门的员工:

8.查出所有名字中包含一个"

T"

的员工所在的部门号,和这些部门所包含的所有员工编号和姓名。

9.查出所有工作在Dallas的员工的姓名、部门编号、工作。

10.查出由King直接管辖的所有员工的姓名和工资。

11.查询销售部(Sales)的编号,所有员工的名字和工作。

12.写出与任何一个能挣到佣金的雇员的部门号、薪水相匹配的所有雇员的名字、部门号。

13.查询出与在Dallas的任何一个雇员的薪水和佣金相匹配的所有雇员的姓名、部门名称和工资。

14.查询出所有工资和佣金与Scott相同的雇员的姓名、雇佣日期和工资。

注意:

结果中不包括Scott

应该nvl一下,否则:

15去除重复数据:

这两条数据没有什么不同,除了rowid。

这些是原先的数据。

这些是新的数据。

道理很简单,如果没有重复数据,那这条数据的rowid既是最大的,也是最小的。

如果有重复的数据,那么一般而言rowid小的是老数据,rowid大的是新数据(不是绝对的,请注意),在此只要保留一个就行了。

deletefrom就可以删除新的数据:

7作业

创建使用替换变量的查询。

创建包含变量的命令文件。

使用ACCEPT命令

1.使用替换变量,提示用户输入职位名称,查询出员工号,姓名,工资,部门号

2.预定义一个职位名称的一个变量,并在查询出员工号,姓名,工资,部门号

注意define最好给个初值。

或:

3.设置sqlplus环境的linesize为100,并让这个变量永久生效

4.写一个脚本,要求显示某个雇佣时间范围内,所有雇员的姓名、工作和雇佣日期的信息。

要求:

将名字和工作连接起来,中间用“,”隔开,将列命名为EMPLOYEES和HIREDATE。

并使用ACCEPT提示客户输入两个时间范围。

头标题为:

employeeandhiredateinfo

其输出结果应当类似下面:

Pleaseenterthelowdaterange('

MM/DD/YYYY'

):

01/01/1981

Pleaseenterthehighdaterange('

01/01/1982

EMPLOYEESHIREDATE

--------------------------------

KING,PRESIDENT17-NOV-81

BLAKE,MANAGER01-MAY-81

CLARK,MANAGER09-JUN-81

JONES,MANAGER02-APR-81

MARTIN,SALESMAN28-SEP-81

ALLEN,SALESMAN20-FEB-81

TURNER,SALESMAN08-SEP-81

JAMES,CLERK03-DEC-81

WARD,SALESMAN22-FEB-81

FORD,ANALYST03-DEC-81

10rowsselected.

首先拼出所要的语句:

然后替换需要的值:

再写出提示:

注意引号需要转义。

实验一下:

最后形成报表:

最后看一下结果:

8作业

(1)向表中插入数据行

(2)修改和删除表中的数据行

(3)控制事务

1.将员工信息表的部门号为10的员工备份到emp01表,emp01的表结构与emp表结构保持一致

2.更改7698号雇员变更到与7499号雇员相同的部门,并且职位也一样

3.做一个保持点的实例

4.在dept表中插入两行数据:

5.将上面的数据删除。

6.定义一个事务:

7.将60号部门的位置改为“TIANJIIN”

9作业

(1)使用CREATETABLEAS语句来创建一个新表

(2)更改列定义

(3)验证这个表是存在的

(4)为该表增加注释

(5)更改tables结构

(6)废弃该表

1.使用子查询创建一个dept10表,结构与dept表一致

2.从数据字典中查询,验证dept10表是否创建

3.将表dept10的列“DNAME”的数据类型改为“VARCHAR2(20)”

4.给表dept10添加注释为“thisisdeptInformation”

5.仿照dept表的格式创建表department并将dept中的数据插入。

6.为dept增加一个新的列,该列的名字为descript,类型为varchar2(100)。

缺省值为'

newcolumn'

7.创建如下结构的EMPLOYEE表:

NameNull?

Type

--------------------------------

IDNUMBER(7)

LAST_NAMEVARCHAR2(50)

FIRST_NAMEVARCHAR2(25)

DEPT_IDNUMBER(7)

8.查询数据字典表或者使用describe命令确认上表的存在。

并将它改名为:

EMPLOYEE_BAK

9.为表EMPLOYEE_BAK增加一条注释:

“thisisaduplicatedtable”.

duplicated意思是复制的。

10作业

1.创建一个结构与EMP表相同结构的EMPLOYEE表,使用ALTERTABLE语句为该表的empno列增加一个表级的主键约束,并命名该约束。

2.创建一个结构与DEPT表相同结构的DEPARTMENT表,在创建表时为该表的deptno列增加一个表级的主键约束,并命名该约束。

3.为EMPLOYEE表增加一个外键约束,保证雇员不能安排到一个不存在的系。

4.从数据字典视图USER_CONSTRAINTS中查询出所添加约束的名称、类型。

11作业

1.创建一个叫做EMP_VU的视图,它的列分别来自于EMP表的empno,ename,deptno;

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

当前位置:首页 > PPT模板 > 其它模板

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

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