oracle教程(第二版)》部分习题参考答案

合集下载

oracle练习题及答案

oracle练习题及答案

oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。

为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。

1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。

它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。

2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。

3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。

Oracle第二章习题及答案

Oracle第二章习题及答案

一、基于自己创建表的操作1:创建一张学生表student,拥有stuid,stuname,sex,三个字段,其中stuid为主键。

create table student(stuid int primary key,stuname VARCHAR(20),sex VARCHAR(20))2:为该表增加一个新列score。

alter table student add(score varchar(10));3:修改该表score列名为stuscore。

alter table student rename column score to stuscoree;4:为student表插入5条记录。

insert into student values(1,'张三丰','男',80);insert into student values(2,'阿悄','女',70);insert into student values(3,'陈龙','男',90);insert into student values(4,'章子怡','女',50);insert into student values(5,'张卫健','男',60);5:查询student表中的全部数据,其中列名为中文。

select STUID as 学号,STUNAME as 姓名,SEX as 性别,STUSCOREE as 分数from student;6:查询学生姓名和分数,并是查询结果按照学生成绩降序排列。

select STUNAME,STUSCOREE from student order by STUSCOREE desc;7:修改所有性别为“男”的学生信息为性别为“male”。

update student set SEX='male' where SEX='男';8:删除所有记录。

oracle习题答案

oracle习题答案

oracle习题答案Oracle习题答案Oracle数据库是全球领先的企业级关系型数据库管理系统,被广泛应用于各种企业和组织中。

学习Oracle数据库管理是IT从业人员必备的技能之一,因此掌握Oracle习题答案对于提升自己的技能水平至关重要。

在学习Oracle数据库管理的过程中,经常会遇到各种习题和练习题,通过解答这些习题可以加深对Oracle数据库的理解和掌握。

下面我们就来看一些常见的Oracle习题以及它们的答案。

1. 什么是Oracle数据库?答:Oracle数据库是由美国Oracle公司开发的一款关系型数据库管理系统,它是一种高性能、可靠性强的数据库系统,被广泛应用于企业级应用中。

2. 如何创建一个新的数据库用户?答:可以使用CREATE USER语句来创建一个新的数据库用户,例如:CREATE USER new_user IDENTIFIED BY password;3. 如何查询表中的数据?答:可以使用SELECT语句来查询表中的数据,例如:SELECT * FROM table_name;4. 如何删除数据库中的数据表?答:可以使用DROP TABLE语句来删除数据库中的数据表,例如:DROP TABLE table_name;5. 如何备份Oracle数据库?答:可以使用RMAN工具来备份Oracle数据库,例如:RMAN> BACKUP DATABASE;通过解答这些习题,我们可以加深对Oracle数据库管理的理解和掌握,提升自己的技能水平。

希望以上Oracle习题答案对大家有所帮助,也希望大家在学习Oracle数据库管理的过程中能够不断提升自己的技能,成为一名优秀的数据库管理人员。

oracle 10g数据库基础教程(第2版)孙风栋主编 课后实训答案

oracle 10g数据库基础教程(第2版)孙风栋主编 课后实训答案

1.为USERS表空间添加一个数据文件,文件名为USERS03.DBF,大小为50MB。

alter tablespace users add datafile 'd:\users03.dbf' size 50m;2.为EXAMPLE表空间添加一个数据文件,文件名为example02.dbf,大小为20MB。

alter tablespace example add datafile 'd:\example02.dbf' size 20m;3.修改USERS表空间中的userdata03.dbf为自动扩展方式,每次扩展5MB,最大为100MB。

alter database datafile 'd:\userdata03.dbf' autoextend on next 5m maxsize 100m;4.修改EXAMPLE表空间中的example02.dbf文件的大小为40MB。

alter database datafile 'd:\example02.dbf' resize 40m;5.将表空间USERS中的数据文件USERS03.DBF更名为userdata04.dbf,将表空间EXAMPLE中的数据文件example03.dbf更名为example04.dbf。

alter tablespace users offline;在磁盘d:\手动更改users03.dbf为userdata04.dbfalter tablespace users rename datafile 'd:\users03.dbf' to 'd:\userdata04.dbf';alter tablespace example offline;在磁盘d:\手动更改example03.dbf为example04.dbfalter tablespace example rename datafile 'd:\example03.dbf' to 'd:\example04.dbf';7.为数据库添加一个重做日志文件组,组内包含两个成员文件,分别为redo4a.log和redo4b.log,大小分别为5MB。

oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案【篇一:oracle 11g(钱慎一)课后习题答案】若关系的某一属性组的值能唯一地标识一个元组,我们称之为( b )。

a、主码b、候选码c、外码d、联系2. 以下不属于数据库模型的三要素的是( c )。

a、数据结构b、数据操作c、数据控制d、完整性约束3. 以下对关系性质的描述中,哪个是错误的?( b )a、关系中每个属性值都是不可分解的b、关系中允许出现相同的元组c、定义关系模式时可随意指定属性的排列次序d、关系中元组的排列次序可以任意交换二、填空题1. 数据管理发展的三个阶段是人工管理、文件管理和数据库管理。

2. 数据库系统的三级模式包括逻辑数据模型(逻辑模型)、逻辑数据模型(概念模型)、物理数据模型(物理模型)。

三、思考题1. 数据库管理系统的主要功能有哪些?1)数据定义功能。

dbms提供相应数据语言来定义(ddl)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。

2)数据存取功能。

dbms提供数据操纵语言(dml),实现对数据库数据的基本存取操作:检索,插入,修改和删除。

3)数据库运行管理功能。

dbms提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。

4)数据库的建立和维护功能。

包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。

5)数据库的传输。

dbms提供处理数据的传输,实现用户程序与dbms之间的通信,通常与操作系统协调完成。

2. 思考关系规范化的过程。

答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。

3. 思考数据库设计的步骤。

答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

Oracle 11g数据库基础教程(第2版)参考答案

Oracle 11g数据库基础教程(第2版)参考答案

Oracle 11g数据库基础教程(第2版)参考答案第1章Oracle 11g数据库安装与配置1.简答题(1)企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。

(2)常用数据库类型包括事务处理类、数据仓库类以通用类型。

其中事务处理类型主要针对具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。

事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。

对于需要较高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的对某个主题进行复杂查询的应用环境。

数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。

对于需要对大量数据进行快速访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。

既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。

(3)数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。

在单机环境中,可以不设置域名,域名长度不能超过128个字符。

Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。

(4)● OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启动的基础,只有该服务启动,Oracle数据库才能正常启动。

oracle课后习题答案

oracle课后习题答案

第一章一选择题D D C A D D B二填空题1 视图2 索引3 簇4 DB_Block_size5 system6 数据文件日志文件控制文件7系统全局区SGA 程序全局区PGA三简答题1 P3——P52 P7——P83 P94 P13第二章一选择题B D B二填空题1 orcl2 oracle_sid3 OracleOraDb10g_home1TNSListener第三章一选择题D B B二填空题1 emctl start dbconsole2 主目录性能管理维护3 Oracle Net4 v$database第四章一选择题D C C A二填空题1 shutdown immediate2 startup force3 alter database4 spfile5 db_block_size6 alter system set7 数据库管理员安全官员网络管理员应用程序开发员应用程序管理员数据库用户三操作题4 P635 P65第五章一选择题B C D二填空题1 v$tablespace2 create tablespace3 bigfile4 alter tablespace5 offline6 alter logfile member2 P75——P763 P764 P77——P785 P816 P83第六章一选择题B A A B D二填空题1 grant2 v$pwfile_users3 create user4 password expire5 account lock6 alter role三操作题3 P95第七章一选择题B BC C二填空题1 primary key2 rename column…to3 where4 like5 inner join三操作题2 create table departments(depid number primary key,Depname varchar2(40) not null,Descr varchar(400),Upperid number check(upperid>0));注意:书上的desc是保留字,不能作为表名。

oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案oracle数据库实用教程第二版答案【篇一:oracle 11g(钱慎一)课后习题答案】若关系的某一属性组的值能唯一地标识一个元组,我们称之为( b )。

a、主码b、候选码c、外码d、联系2. 以下不属于数据库模型的三要素的是( c )。

a、数据结构b、数据操作c、数据控制d、完整性约束3. 以下对关系性质的描述中,哪个是错误的?( b )a、关系中每个属性值都是不可分解的b、关系中允许出现相同的元组c、定义关系模式时可随意指定属性的排列次序d、关系中元组的排列次序可以任意交换二、填空题1. 数据管理发展的三个阶段是人工管理、文件管理和数据库管理。

2. 数据库系统的三级模式包括逻辑数据模型(逻辑模型)、逻辑数据模型(概念模型)、物理数据模型(物理模型)。

三、思考题1. 数据库管理系统的主要功能有哪些?1)数据定义功能。

dbms提供相应数据语言来定义(ddl)数据库结构,它们是刻画数据库框架,并被保存在数据字典中。

2)数据存取功能。

dbms提供数据操纵语言(dml),实现对数据库数据的基本存取操作:检索,插入,修改和删除。

3)数据库运行管理功能。

dbms提供数据控制功能,即是数据的安全性、完整性和并发控制等对数据库运行进行有效地控制和管理,以确保数据正确有效。

4)数据库的建立和维护功能。

包括数据库初始数据的装入,数据库的转储、恢复、重组织,系统性能监视、分析等功能。

5)数据库的传输。

dbms提供处理数据的传输,实现用户程序与dbms之间的通信,通常与操作系统协调完成。

2. 思考关系规范化的过程。

答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。

3. 思考数据库设计的步骤。

答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

ORACLE习题参考答案

ORACLE习题参考答案

第1章案例数据库设计【简答题】1.简要说明数据库设计的基本流程,并结合实例说明数据库设计各阶段的主要任务。

数据库设计的基本流程:按照规范的设计方法,将数据库设计分为六个阶段:(1)需求分析;(2)概念结构设计;(3)逻辑结构设计;(4)物理结构设计;(5)数据库实施;(6)数据库的运行和维护。

需要说明的是,数据库设计还包含了应用系统的设计过程。

每个阶段的主要任务是:(1)需求分析:通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户需求,确定新系统的功能。

(2)概念结构设计:应用E-R模型真实地反映现实世界,包括事物和相互之间的了解,能满足用户对数据的处理要求,是现实世界的一个真实模型;易于理解、易于更改、易于向关系、网状、层次等各种数据模型转换。

概念结构设计有以下四种方法:①自顶向下;②自底向上;③逐步扩张;④混合策略。

(3)逻辑结构设计:逻辑结构设计的目的是把概念设计阶段的基本E—R图转换成与选用的具体机器上DBMS所支持的数据模型相符合的逻辑结构(包括数据库模式和外模式)。

逻辑结构设计有如下三个步骤:①将概念模型(E—R图)转换为一般的关系、网状、层次模型;②将关系、网状、层次模型向特定的DBMS支持下的数据模型转换;③对数据模型进行优化。

(4)物理结构设计:对于一个给定的逻辑数据模式选取一个最适合应用环境的物理结构的过程,称为数据库的物理设计。

(5)数据库实施:建立实际数据库结构;试运行;装入数据;同时进行数据库的重新组织设计;故障恢复方案设计;安全性考虑;事务控制;(6)数据库的运行和维护:数据库的日常维护(安全性、完整性控制,数据库的转储和恢复);性能的监督、分析与改进;扩充新功能;修改错误。

2.依据你对数据库管理员和程序员职业岗位的了解,说明这两个岗位对数据库知识和能力的需求。

要求学生通过前程无忧(bbb://aaa51jobaaa)等人才招聘网站进行了解。

oracle练习题及答案

oracle练习题及答案

o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。

Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。

请按下列要求分别晨SQL*PLUS下编程。

Oracle11g数据库基础教程第2版习题答案作者张凤荔王瑛李晓黎等2..

Oracle11g数据库基础教程第2版习题答案作者张凤荔王瑛李晓黎等2..

第1章Oracle11g简介一、选择题1.D2.D3.C4.A5.D6.D7.B二、填空题1.视图2.索引3.簇4.DB_BLOCK_SIZE 5.SYSTEM6.数据文件7.日志文件8.控制文件9.系统全局区(System Global Area,SGA)10.程序全局区(Program Global Area,PGA)11.数据库管理员12.安全官员13.网络管理员14.应用程序开发员15.应用程序管理员16.数据库用户。

三、简答题1.答:数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段组成,段由区组成,区则由数据块组成。

2.答:物理结构由构成数据库的操作系统文件所决定。

每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。

Oracle数据库有一个或多个物理的数据文件。

数据库的数据文件包含全部数据库数据。

逻辑数据物理地存储在数据文件中。

每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。

日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改记录在日志中。

在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到修改记录,从而保证已经发生的操作成果不会丢失。

每个Oracle数据库有一个控制文件,记录数据库的物理结构。

控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息。

3.答:SGA是一组共享内存结构,其中包含一个Oracle数据库例程数据及控制信息。

如果有多个用户同时连接到同一个例程,则此例程的SGA数据由这些用户共享。

因此,SGA也称为共享全局区(Shared Global Area)。

SGA包含以下数据结构。

∙数据库缓冲区:SGA用来保存从数据文件中读取的数据块。

∙重做日志缓冲区:SGA中的循环缓冲区,用于记录数据库发生改变的信息。

∙共享池:用于保存用户程序。

∙Java池:为Java命令提供语法分析。

Oracle第二章习题及答案

Oracle第二章习题及答案

一、基于自己创建表的操作1:创建一张学生表student,拥有stuid,stuname,sex,三个字段,其中stuid为主键。

create table student(stuid int primary key,stuname VARCHAR(20),sex VARCHAR(20))2:为该表增加一个新列score。

alter table student add(score varchar(10));3:修改该表score列名为stuscore。

alter table student rename column score to stuscoree;4:为student表插入5条记录。

insert into student values(1,'张三丰','男',80);insert into student values(2,'阿悄','女',70);insert into student values(3,'陈龙','男',90);insert into student values(4,'章子怡','女',50);insert into student values(5,'张卫健','男',60);5:查询student表中的全部数据,其中列名为中文。

select STUID as 学号,STUNAME as 姓名,SEX as 性别,STUSCOREE as 分数from student;6:查询学生姓名和分数,并是查询结果按照学生成绩降序排列。

select STUNAME,STUSCOREE from student order by STUSCOREE desc;7:修改所有性别为“男”的学生信息为性别为“male”。

update student set SEX='male' where SEX='男';8:删除所有记录。

Oracle习题答案(课后题)

Oracle习题答案(课后题)

/articles/330494.html 第一章略第二章5、已知一个关系数据库的模式如下:S (SNO,SNAME,SCITY)P (PNO,PNAME,COLOR,WEIGHT)J (JNO,JNAME,JCITY)SPJ (SNO,PNO,JNO,QTY)供应商S由供应商代码SNO、供应商姓名SNAME、供应商所在城市SCITY组成;零件P由零件代码PNO、零件名PNAME、颜色COLOR 、重量WEIGHT 组成;工程项目J 由工程项目代码JNO、工程项目名JNAME、和所在城市JCITY组成;供应情况SPJ由供应商代码SNO、零件代码PNO、工程项目代码JNO、供应数量QTY 组成。

用关系代数表达式表示下面的查询要求:(1)求供应工程J1 零件的供应商代码SNO(2)求供应工程J1 零件P1 的供应上代码SNO(3)求供应工程J1 零件为红色的供应商代码SNO(4)求没有使用天津供应商生产的红色零件的工程项目代码JNO(5)求至少用了供应商S1 所供应的全部零件的工程项目代码JNO(4)JNO (J )— JNO (「CITY-天津'(S) SPJ 「COLOR-红色'(P))(5) PNO,JNO (SPJ) 71PNO e SN0='S1' (SPJ))第三章 22 .建立一个关于系、学生、班级、学会等诸信息的关系数据库。

学生:学号、姓名、出生年月、系名、班号、宿舍区。

班级:班号、专业名、系名、人数、入校年份。

系:系名、系号、系办公地点、人数。

学会:学会名、成立年份、办公地点、人数。

语义如下:一个系有若干专业,每个专业每年只招一个班, 每个班有若干学生。

一个系的学生住在同一宿舍区。

每个学生可 参加若干学会,每个学会有若干学生。

学生参加某学会有一个入 会年份。

请给出关系模式,写出每个关系模式的极小函数依赖集, 指 出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨答: (1)SNOI JI⑵SNO (3) n (\ SNO\JNO'JI' (SPJ))JNO'JI' PNO'PI' (SPJ)) JNO (JT COLORS 红色’(P SPJ)) 71 CJ论函数依赖是完全函数依赖,还是部分函数依赖。

oracle 10g 第二版 sql语言基础第一题答案

oracle 10g 第二版 sql语言基础第一题答案

1)查询20号部门的所有员工信息Select * from emp where deptno=20;2)查询所有工种为CLERK的员工的员工号、员工名和部门号Select empno, ename, deptno from emp where job=’CLERK’;3)查询奖金(COMM)高于工资(SAL)的员工信息Select * from emp where comm>sal;4)查询奖金高于工资的20%的员工信息Select * from emp where comm>sal*0.2;5)查询10号部门中工种为MANAGER 和20号部门中工种为CLERK的员工的信息Select * from emp where deptno=20 and job=’MANAGER’UnionSelect * from emp where deptno=10 and job=’CLERK’;Select * from emp where (job=’Manager’ and deptno=10) or (deptno=10 and job=’CLERK’);6)查询所有工种不是MANAGER 和CLERK ,且工资大于或等于2000 的员工地详细信息select * from emp where job not in ('MANAGER','CLERK') AND sal>=2000;7)查询有奖金的员工的不同工种select distinct job from emp where comm>0;8)查询所有员工工资与奖金的和Select sum(nvl(sal,0)+nvl(comm,0)) from emp;9)查询没有奖金或奖金低于100的员工信息Select * from emp where comm.<100 or comm Is null;10)查询各月到数第2天入职的员工信息Alter session set NLS_DATE_FORMAT=’yyyy-mm-dd’;select * from emp where last_day(hiredate)-1=hiredate;11)查询工龄大于或等于10年的员工信息Select * from emp trunk(months_between(sysdate,hiredate)/12)>10;select * from emp where ( (sysdate-hiredate)/365) >10;12)查询员工信息,要求以首字母大写的方式显示所有员工的姓名Select initcap(ename) from emp;select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename))) from emp;13)查询员工名正好为6个字符的员工的信息select * from emp where length(ename)=6;14)查询员工名字中不包含字母“S”的员工select * from emp where ename not like '%S%' ;15)查询员工姓名的第2个字母为“M”的员工信息select * from emp where ename not like '_M%' ;16)查询所有员工姓名的前3个字符Select substr(ename,1,3) from emp;17)查询所有员工的姓名,如果包含字母“s”,则用“S”替换select replace(ename,'s','S') from emp ;18)查询员工的姓名和入职日期,并按入职日期从先到后进行排序select ename,hiredate from emp order by hiredate;19)显示所有员工的姓名、工种、工资和奖金,按工种降序排序,若工种相同则按工资升序排序select ename,job,sal,comm from emp group by job , sal, ename, comm;20)显示所有员工的姓名、入职的年份和月份,按入职日期所在的月份排序,若月份相同则按入职的年份排序select empno, extract(month from hiredate), extract(year from hiredate) from emp group by empno,extract(month fromdate), extract(year from hiredate) ;select ename, to_char(hiredatem,’yyyymm’) from emp order by to_char(hiredate,’mm’), to_char(hiredate,’yyyy’);21)查询在2月份入职的所有员工信息select * from emp where extract(month from hiredate)=2;select * from emp where to_char(hiredate,’mm’)=2;22)查询至少有一个员工的部门信息select * from dept where exists( select count(*) from emp group by job having count(*) >1 );select * from dept where deptno in ( select deptno from emp);23)查询工资比SMITH员工工资高的所有员工信息select * from emp where sal> (select sal from emp where ename='SMITH');24)查询所有员工的姓名及直接上级的姓名select first.ename manager,second.ename employee from emp first, emp second where first.empno=second.mgr;25)查询入职日期早于其直接上级领导的所有员工信息select first.* ,second.* from emp first, emp second where first.empno=second.mgr andfirst.hiredate>second.hiredate;26)查询所有部门及部门信息, 包括那些没有员工的部门Select * from dept;27)查询所有员工及部门信息, 包括那些还不属于任何部门的员工select * from emp , dept where emp.deptno= dept.deptno(+);28)查询所有工种为CLERK的员工的姓名及部门名称Select ename, deptno from emp where job=’CLERK’;29)查询最低工资大于2500 的各种工作select job, min(sal) from emp group by job having min(sal)>2500;30)查询平均工资低于2000的部门及其员工信息select deptno,ename,avg(sal) from emp group by rollup(deptno,ename) having avg(sal)< 2000;31)查询在SALES部门工作的员工的姓名信息Select ename from emp where job=’SALESMAN’;32)查询工资高于公司平均工资的所有员工信息select ename,sal from emp where sal > (select avg(sal) from emp) ;33)查询与SMITH员工从事相同工作的所有员工信息select ename,job from emp where job= (select job from emp where ename='SMITH') ; 34)列出工资等于30号部门中某个员工工资的所有员工的姓名和工资select ename, sal from emp where sal=any(select sal from emp where deptno=30) ;35)查询工资高于30号部门中工作的所有员工的工资的员工姓名和工资select ename, sal from emp where sal>all (select sal from emp where deptno=30) ;36)查询每个部门中员工数量,平均工资和平均工作年限select deptno, count(*), avg(sal), avg(extract(year from sysdate)- extract(year from hiredate)) from emp group by deptno;select deptno, count(empno), avg(sal),avg(trunc((sysdate-hiredate)/365)) from emp group by deptno;37)查询各个部门的详细信息以及部门人数,部门平均工资select deptno,dname,loc,count(*), avg(sal) from ( select emp.sal, dept.* from emp , dept where dept.deptno=emp.deptno) TT group by TT.deptno, TT.dname, TT.loc;select deptno, avg(sal), count(*) from emp group by (deptno);38)查询各个部门中不同工种的最高工资select deptno,job,max(sal) from emp group by deptno,job;39)查询10号部门员工及其领导的信息select m.ename manager, e.ename employee from emp e, emp m where e.mgr=m.empno and e.deptno=10;40)查询工资为某个部门平均工资的员工信息select emp.ename from emp , (select deptno,avg(sal) avgsal from emp group by deptno) avgT where emp.deptno=avgT.deptno and emp.sal=avgT.avgsal;41)查询工资高于本部门平均工资的员工信息select emp.ename from emp , (select deptno,avg(sal) avgsal from emp group by deptno)avgT where emp.deptno=avgT.deptno and emp.sal>avgT.avgsal;42)查询工资高于本部门平均工资的员工信息及其部门的平均工资select emp.ename,avgT.avgsal from emp , (select deptno,avg(sal) avgsal from emp group by deptno) avgT where emp.deptno=avgT.deptno and emp.sal>avgT.avgsal;43)查询工资高于20号部门某个员工工资的员工的信息select ename, sal from emp where sal=any(select sal from emp where deptno=20) ;44)统计各个工种的员工人数与平均工资select job,count(*),avg(sal) from emp group by job45)统计每个部门中各工种的人数与平均工资select deptno,job,count(*),avg(sal) from emp group by deptno,job46)查询工资、奖金与10号部门某员工工资、奖金都相同的员工的信息select emp.ename from emp, (select sal, comm from emp where deptno=10) deptT where emp.sal=deptT.sal and m=m and emp.deptno!=1047)查询部门人数大于5的部门的员工信息select * from emp where deptno in (select deptno from emp group by deptno having count(*) >5);48)查询所有员工工资都大于2000 的部门的信息select * from dept where deptno in (select deptno from emp group by deptno having min(sal)>=2000);49)查询所有员工工资都大于2000 的部门的信息及其员工的信息select * from emp where deptno in (select deptno from emp group by deptno having min(sal)>=2000);50)查询所有员工工资都在2000~3000 之间的员工所在部门的员工信息select * from emp where deptno in ( select deptno from dept minus select deptno from emp where sal<2000 and sal>3000 group by deptno ) ;set autotrace on ;51)查询所有工资在2000~3000 之间的员工所在部门的员工信息select * from emp where deptno in (select deptno from emp where sal between 2000 and 3000) ;52)查询人数最多的部门信息( explain plan)select * from dept where deptno in (select deptno from (select count(*) cnt, deptno from emp group by deptno order by cnt desc) where rownum=1 );SELECT * FROM deptWHERE deptno IN ( SELECT deptno FROM emp GROUP BY deptnoHAVING count(*)>=ALL(SELECT count(*) FROM emp GROUP BY deptno));53)查询30号部门中工资排序前3名的员工信息select * from (select * from emp where deptno=30 order by sal desc) where rownum in ( 1,2,3);54)查询所有员工中工资排序在5~10名之间的员工信息( rownum)select * from ( select rownum orderID, emp.* from order by sal desc) where orderID between 5 and 10;55)向EMP表中插入一条记录,员工号为1357,员工名字为oracle,工资为2050,部门号为20,入职日期为2002年5月10日insert into emp(empno,ename,sal,deptno,hiredate) values(1357,'oracle', 2050, 20, to_date('2002-05-10','yyyy-mm-dd');56)向EMP表中插入一条记录,员工名位FAN,员工号为8000,其他信息与SMITH员工的信息相同insert into emp select 8000, 'FAN', job, mgr, hiredate, sal, comm, deptno from emp where ename='SMITH';57)将各部门员工的工资修改为该员工所在部门平均工资加1000update emp e1 set sal=(select avg(sal)+1000 from emp e2 where e1.deptno=e2.deptno group by deptno);。

oracle习题及答案

oracle习题及答案

1.查询工资大于12000的员工姓名和工资Select last_name||' '||first_name,salary from employees where salary >12000;2.查询员工号为176的员工的姓名和部门号Select last_name||' '||first_name,department_id from employees where employee_id=176;3.选择工资不在5000到12000的员工的姓名和工资Select last_name||' '||first_name,salary from employees where salary not between 5000 and 12000;4.选择雇用时间在1998-02-01到1998-05-01之间的员工姓名,job_id和雇用时间Select last_name||' '||first_name,job_id,hire_date from employees where hire_date between '1-2月-98' and '1-5月-98';5.选择在20或50号部门工作的员工姓名和部门号Select last_name||' '||first_name,department_id from employees where department_id in (20,50);6.选择在1994年雇用的员工的姓名和雇用时间Select last_name||' '||first_name,hire_date from employees where hire_date like '%94';7.选择公司中没有管理者的员工姓名及job_idSelect last_name||' '||first_name,job_id from employees where Manger_id is null;8.选择公司中有奖金的员工姓名,工资和奖金Select last_name||' '||first_name,salary,commission_pct from employees where commission_pct is not null;9.选择员工姓名的第三个字母是a的员工姓名Select last_name||' '||first_name from employees where last_name||' '||first_name like '___a%';10.选择姓名中有字母a和e的员工姓名Select last_name||' '||first_name from employees where last_name||first_name like '%a%e%' or last_name||first_name like '%e%a%';多表查询11.显示所有员工的姓名,部门号和部门名称。

oracle教程(第二版)》部分习题参考答案

oracle教程(第二版)》部分习题参考答案

文字性习题答案参见相应章节内容第1章习题1D A C C第2章习题1执行edit命令打开文本编辑器;使用column命令设置列显示宽度习题2CONN scott/tiger@orclSELECT * FROM tab; --本题严谨一些的答案是查询ALL_OBJECTS视图,带条件查询习题3@d:\init_data\init_data.sql习题4SET PAGESIZE 24SET LINESIZE 100COLUMN sal FORMA T $99,990.00第3章习题1D B习题2CONN stu01/stu01pwd@orclCOLUMN USERNAME FORMA T A10SELECT username,granted_role FROM user_role_privs;习题5CREA TE SESSION 系统权限习题11CONN scott/tiger@orclCOLUMN GRANTEE FORMA T A10SELECT grantee,table_name,grantor,privilege,grantableFROM user_tab_privs_made;习题12CONN system/systempwd@orclCOLUMN GRANTEE FORMA T A22SELECT grantee,privilege,admin_option FROM dba_sys_privsORDER BY grantee,privilege;SELECT grantee,granted_role FROM dba_role_privs;使用REVOKE命令回收不必要的系统权限和角色。

\第4章习题8CONN /@cemerp AS SYSDBAALTER USER scott QUOTA 10M ON USERS;习题9CONN system/systempwd@orclCREA TE TABLESPACE data_ts1DA TAFILE '%ORACLE_BASE%\oradata\orcl\data_ts1.dbf' SIZE 10000M REUSE; CREA TE TEMPORARY TABLESPACE temp_ts1TEMPFILE '%ORACLE_BASE%\oradata\orcl\temp_ts1.dbf' SIZE 200M REUSE; CREA TE USER surtec IDENTIFIED BY surtecpwdDEFAULT TABLESPACE data_ts1 TEMPORARY TABLESPACE temp_ts1; GRANT CREA TE SESSION TO surtec;GRANT RESOURCE TO surtec;CONN surtec/surtecpwd@orcl--创建该用户的表emp……--授权给SIBGRANT SELECT ON emp TO sib;GRANT UPDA TE(flag) ON endowment_insurance TO sib;习题10CONN system/systempwd@orclCREA TE USER test01 IDENTIFIED BY test1234;GRANT CREA TE SESSION TO test01;GRANT CREA TE TABLESPACE TO test01;CONN test01/test1234@orclCREA TE TABLESPACE test_tsDA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts.dbf' SIZE 100KAUTOEXTEND ON NEXT 50K MAXSIZE 5M UNIFORM SIZE 50K;ALTER TABLESPACE test_tsADD DA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts2.dbf' SIZE 10M; ALTER DA TABASEDA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts2.dbf' RESIZE 15M ;习题11CONN system/systempwd@orclALTER TABLESPACE pur_tsADD DA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' SIZE 800M; ALTER DA TABASEDA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' RESIZE 2000M ; ALTER DA TABASE DA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' AUTOEXTEND ON NEXT 30M;第5章习题1B A习题8(1)撤销表空间中不允许建立永久方案对象;将方案对象建立在数据表空间即可。

oracle课后习题答案

oracle课后习题答案

oracle课后习题答案Oracle课后习题答案在学习Oracle数据库时,完成课后习题是巩固知识的重要方式。

本文将为大家提供一些常见Oracle课后习题的答案,帮助读者更好地理解和应用数据库知识。

一、基本概念题1. 什么是数据库?答:数据库是一个组织和存储数据的系统。

它是一个结构化的集合,用于存储、管理和操纵数据,并提供对数据的安全性和完整性的保证。

2. 什么是表?答:表是数据库中的一个基本组成部分,用于存储数据。

它由行和列组成,行表示记录,列表示记录中的字段。

3. 什么是SQL?答:SQL(Structured Query Language)是一种用于访问和管理关系型数据库的语言。

它可以用于查询、插入、更新和删除数据,以及创建和管理数据库对象。

二、SQL查询题1. 查询员工表中所有员工的姓名和工资。

答:SELECT 姓名, 工资 FROM 员工表;2. 查询订单表中订单金额大于1000的订单号和金额。

答:SELECT 订单号, 订单金额 FROM 订单表 WHERE 订单金额 > 1000;3. 查询客户表中所有客户的姓名和地址,按照地址降序排列。

答:SELECT 姓名, 地址 FROM 客户表 ORDER BY 地址 DESC;三、SQL插入题1. 向员工表中插入一条记录,姓名为"张三",工资为5000。

答:INSERT INTO 员工表 (姓名, 工资) VALUES ('张三', 5000);2. 向订单表中插入一条记录,订单号为"2021001",金额为2000。

答:INSERT INTO 订单表 (订单号, 订单金额) VALUES ('2021001', 2000);四、SQL更新题1. 将员工表中工资低于3000的员工工资增加1000。

答:UPDATE 员工表 SET 工资 = 工资 + 1000 WHERE 工资 < 3000;2. 将客户表中地址为"北京市"的客户地址改为"上海市"。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文字性习题答案参见相应章节内容第1章习题1D A C C第2章习题1执行edit命令打开文本编辑器;使用column命令设置列显示宽度习题2CONN scott/tiger@orclSELECT * FROM tab; --本题严谨一些的答案是查询ALL_OBJECTS视图,带条件查询习题3@d:\init_data\init_data.sql习题4SET PAGESIZE 24SET LINESIZE 100COLUMN sal FORMA T $99,990.00第3章习题1D B习题2CONN stu01/stu01pwd@orclCOLUMN USERNAME FORMA T A10SELECT username,granted_role FROM user_role_privs;习题5CREA TE SESSION 系统权限习题11CONN scott/tiger@orclCOLUMN GRANTEE FORMA T A10SELECT grantee,table_name,grantor,privilege,grantableFROM user_tab_privs_made;习题12CONN system/systempwd@orclCOLUMN GRANTEE FORMA T A22SELECT grantee,privilege,admin_option FROM dba_sys_privsORDER BY grantee,privilege;SELECT grantee,granted_role FROM dba_role_privs;使用REVOKE命令回收不必要的系统权限和角色。

\第4章习题8CONN /@cemerp AS SYSDBAALTER USER scott QUOTA 10M ON USERS;习题9CONN system/systempwd@orclCREA TE TABLESPACE data_ts1DA TAFILE '%ORACLE_BASE%\oradata\orcl\data_ts1.dbf' SIZE 10000M REUSE; CREA TE TEMPORARY TABLESPACE temp_ts1TEMPFILE '%ORACLE_BASE%\oradata\orcl\temp_ts1.dbf' SIZE 200M REUSE; CREA TE USER surtec IDENTIFIED BY surtecpwdDEFAULT TABLESPACE data_ts1 TEMPORARY TABLESPACE temp_ts1; GRANT CREA TE SESSION TO surtec;GRANT RESOURCE TO surtec;CONN surtec/surtecpwd@orcl--创建该用户的表emp……--授权给SIBGRANT SELECT ON emp TO sib;GRANT UPDA TE(flag) ON endowment_insurance TO sib;习题10CONN system/systempwd@orclCREA TE USER test01 IDENTIFIED BY test1234;GRANT CREA TE SESSION TO test01;GRANT CREA TE TABLESPACE TO test01;CONN test01/test1234@orclCREA TE TABLESPACE test_tsDA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts.dbf' SIZE 100KAUTOEXTEND ON NEXT 50K MAXSIZE 5M UNIFORM SIZE 50K;ALTER TABLESPACE test_tsADD DA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts2.dbf' SIZE 10M; ALTER DA TABASEDA TAFILE '%ORACLE_BASE%\oradata\orcl\test_ts2.dbf' RESIZE 15M ;习题11CONN system/systempwd@orclALTER TABLESPACE pur_tsADD DA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' SIZE 800M; ALTER DA TABASEDA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' RESIZE 2000M ; ALTER DA TABASE DA TAFILE '%ORACLE_BASE%\oradata\orcl\pur_data.dbf' AUTOEXTEND ON NEXT 30M;第5章习题1B A习题8(1)撤销表空间中不允许建立永久方案对象;将方案对象建立在数据表空间即可。

(2)在脱机表空间上不允许执行创建方案对象操作;将该表空间联机即可。

(3)使用ALTER USER修改用户在USERS表空间上的限额即可。

(4)使用ALTER USER修改用户,扩大在USERS表空间上的限额即可。

习题9CONN hr/hrpwd@orclCREA TE TABLE employees2 ASSELECT employee_id id, first_name, last_name, salary,department_id dept_idFROM employees;习题10CONN scott/tiger@orclALTER TABLE empADD (dept_id NUMBER(7));ALTER TABLE empADD CONSTRAINT emp_dept_id_fkFOREIGN KEY (dept_id) REFERENCES dept(deptno);习题11假定数据库用户为hr(1)CONN hr/hrpwd@orclCREA TE TABLE g_emp(EMPNO NUMBER(4) NOT NULL,ENAME V ARCHAR2(10),JOB V ARCHAR2(10),MGR NUMBER(4),HIREDA TE DA TE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(3))PARTITION BY RANGE (sal)(PARTITION SAL_1000 V ALUES LESS THAN (1000) tablespace users,PARTITION SAL_2000 V ALUES LESS THAN (2000) tablespace users,PARTITION SAL_3000 V ALUES LESS THAN (3000) tablespace users,PARTITION SAL_4000 V ALUES LESS THAN (4000) tablespace users,PARTITION SAL_5000 V ALUES LESS THAN (5000) tablespace users,PARTITION SAL_max V ALUES LESS THAN (MAXV ALUE) tablespace users);(2)DESC g_emp(3)--创建表空间CONN system/systempwd@orclCREA TE TABLESPACE hiredate_tsDA TAFILE '%ORACLE_BASE%\oradata\orcl\hiredate_ts1.dbf' SIZE 1M REUSE; --创建表CONN hr/hrpwd@orclCREA TE INDEX emp_hiredate_indexON g_emp(HIREDA TE DESC)TABLESPACE hiredate_ts;(4)ALTER TABLE g_emp DROP (COMM);ALTER TABLE g_emp ADD(bonus NUMBER(7,2));第6章略第7章习题1(1)CONN scott/tiger@orclCREA TE SEQUENCE id_seqINCREMENT BY 1START WITH 1MAXV ALUE 99999NOCACHENOCYCLE;(2)可以修改序列的定义;或者修改产品表主键的定义。

习题2参见例7.1。

习题4使用数据字典DBA_DB_LINKS习题5在总部建立指向各分店的数据库链接,然后在分店服务器建立实体化视图日志,在总店建立各分店个表的实体化视图。

第8章习题1A DBC B习题4(1)SELECT worker.ename ename, manager.ename managerFROM emp worker, emp managerWHERE worker.mgr=manager.empno;(2)SELECT worker.ename, worker.empno, worker.deptno, manager.enameFROM emp worker, emp managerWHERE worker.mgr=manager.empno AND worker.hiredate< manager.hiredate;(3)SELECT e.enameFROM emp e,dept dWHERE e.deptno=d.deptno AND upper(d.dname)='IT';(4)SELECT ename,empno,deptno, job, salFROM empWHERE sal>(SELECT avg(sal)FROM emp );(5)SELECT d.deptno, count(e.ename), avg(e.sal),avg(months_between(sysdate,e.hiredate))FROM emp e, dept dWHERE e.deptno(+)= d.deptnoGROUP BY d.deptno;(6)SELECT d.deptno,d.dname,d.loc,e.numFROM (SELECT deptno,count(ename) numFROM empGROUP BY deptno) e, dept dWHERE e.deptno(+)= d.deptno;(7)SELECT job,min(sal+nvl(comm,0)) FROM emp GROUP BY job;(8)SELECT ename,deptno,minsalFROM emp,(SELECT min(sal) minsal FROM empWHERE job=upper('manager')) bWHERE emp.job=upper('manager') AND emp.sal=b.minsal;或者用内嵌视图,执行Top-N查询(9)SELECT ename , sal*12 Annual_salFROM empORDER BY Annual_sal ASC;习题5SELECT last_name, ROUND(MONTHS_BETWEEN(SYSDA TE, hire_date)) MONTHS_WORKEDFROM employeesORDER BY MONTHS_BETWEEN(SYSDA TE, hire_date);习题6SELECT st_name, e.hire_dateFROM employees e, employees daviesWHERE st_name = 'Davies'AND davies.hire_date < e.hire_date;习题8SELECT last_name,department_id,TO_CHAR(null)FROM employeesUNIONSELECT TO_CHAR(null),department_id,department_nameFROM departments;习题9创建表的语句如下CREATE TABLE T_PRTSTRUDEF(PRTNO Varchar2(24), --物料号PRTPNO varchar2(24), --父件号PRTPQTY number(20,7), --需求数量PRTDESC Varchar2(30), --物料名称PRTTYPE Varchar2(1), --物料类型PRTPRC Number(18,3), --单价,下一字段是计量单位PRTUM Varchar2(8));--插入示例数据,P-表示产品 D-表示部件 M-表示零件(仅为了举例)INSERT INTO T_PRTSTRUDEF VALUES('WD01','',0,'床','P',850,'张');INSERT INTO T_PRTSTRUDEF VALUES('WD0101','WD01',1,'床头','D',100,'套'); INSERT INTO T_PRTSTRUDEF VALUES('WD0102','WD01',2,'床头柜','D',80,'个'); INSERT INTO T_PRTSTRUDEFVALUES('WD010201','WD0102',1,'柜门','D',15,'扇');INSERT INTO T_PRTSTRUDEFVALUES('WD010202','WD0102',1,'床头柜身','D',65,'个');INSERT INTO T_PRTSTRUDEFVALUES('WD01020101','WD010201',1,'柜门板','M',13,'张'); INSERT INTO T_PRTSTRUDEFVALUES('WD01020102','WD010201',1,'拉手','M',2,'个'); COMMIT;--查询整个产品SELECT LEVEL 部件层次,SUBSTRB(LPAD(' ',2*(LEVEL-1))||PRTDESC,1,30) 产品结构, PRTPQTY 需求数量, PRTPRC 单价FROM T_PRTSTRUDEFSTART WITH PRTPNO IS NULLCONNECT BY PRIOR PRTNO = PRTPNO;执行结果如下:部件层次产品结构需求数量单价-------- ------------------------ ---------- ---------1 床 0 8502 床头 1 1002 床头柜 2 803 柜门 1 154 柜门板 1 134 拉手 1 23 床头柜身 1 65--查询柜门的子件SELECT LEVEL 部件层次,SUBSTRB(LPAD(' ',2*(LEVEL-1))||PRTDESC,1,30) 产品结构, PRTPQTY 需求数量, PRTPRC 单价FROM T_PRTSTRUDEFSTART WITH PRTNO='WD010201'CONNECT BY PRIOR PRTNO = PRTPNO;执行结果如下:部件层次产品结构需求数量单价-------- -------------------------- -------- --------1 柜门 1 152 柜门板 1 132 拉手 1 2--查询柜门的父件(反查)SELECT LEVEL 部件层次,SUBSTRB(LPAD(' ',2*(LEVEL-1))||PRTDESC,1,30) 产品结构, PRTPQTY 需求数量, PRTPRC 单价FROM T_PRTSTRUDEFSTART WITH PRTNO='WD010201'CONNECT BY PRIOR PRTPNO = PRTNO;执行结果如下:部件层次产品结构需求数量单价-------- ------------------------ ---------- --------1 柜门 1 152 床头柜 2 803 床 0 850第9章习题1A C习题2CONN scott/tiger@orclSET serveroutput ONCREATE OR REPLACE PROCEDURE check_salISCURSOR emp_cursor IS SELECT empno,ename,deptno,sal,job FROM emp;BEGINFOR emp_rec IN emp_cursor LOOPIF emp_rec.job = 'CLERK' AND emp_rec.sal NOT BETWEEN 1500 AND 2500 THENDBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':'||emp_rec.e mpno||':'||emp_rec.ename| |':'||emp_rec.sal);ELSIF emp_rec.job = 'SALESMAN' AND emp_rec.sal NOT BETWEEN 800 AND 5000 THENDBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':'||emp_rec.empno||':'||emp_rec.ename| |':'||emp_rec.sal);ELSIF emp_rec.job = 'MANAGER' AND emp_rec.sal NOT BETWEEN 3000 AND 4500 THENDBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':'||emp_rec.empno||':'||emp_rec.ename| |':'||emp_rec.sal);ELSIF emp_rec.job = 'ANALYST' AND emp_rec.sal NOT BETWEEN 2500 AND 3500 THENDBMS_OUTPUT.PUT_LINE(emp_rec.deptno||':'||emp_rec.empno||':'||emp_rec.ename| |':'||emp_rec.sal);END IF;END LOOP;END;/EXECUTE check_sal习题3SET ECHO OFFSET VERIFY OFFDEFINE low_date = 01/01/1998DEFINE high_date = 01/01/1999SELECT last_name ||', '|| job_id 雇员职位, hire_dateFROM employeesWHERE hire_date BETWEEN TO_DATE('&low_date', 'MM/DD/YYYY')AND TO_DATE('&high_date', 'MM/DD/YYYY')/UNDEFINE low_dateUNDEFINE high_dateSET VERIFY ONSET ECHO ON习题4--创建表CREATE TABLE messages(results VARCHAR2(100));--本题答案DECLAREv_ename st_name%TYPE;v_sal employees.salary%TYPE := &p_sal;BEGINSELECT last_nameINTO v_enameFROM employeesWHERE salary = v_sal;INSERT INTO messages (results)VALUES (v_ename || ' - ' || v_sal);EXCEPTIONWHEN no_data_found THENINSERT INTO messages (results)VALUES ('No employee with a salary of '|| TO_CHAR(v_sal)); WHEN too_many_rows THENINSERT INTO messages (results)VALUES ('More than one employee with a salary of '||TO_CHAR(v_sal));WHEN others THENINSERT INTO messages (results)VALUES ('Some other error occurred.');END;/习题5--创建相关表CREATE TABLE call_fee_account(telno VARCHAR2(20),pay_date DATE,charge NUMBER(7,2),late_fee NUMBER(7,2));--创建函数CREATE OR REPLACE FUNCTION fee(p_date DATE) RETURN NUMBER ISv_fee NUMBER;BEGINSELECT SUM(charge+NVL(late_fee,0))INTO v_feeFROM call_fee_accountWHERE pay_date = p_date;RETURN v_fee;END;/习题6可参考例9.20,该例子是删除(delete),本题中为修改(update)。

相关文档
最新文档