oracle数据库数据处理习题

1
一、单项选择题
1.( A )是Oracle服务器在启动期间用来标识物理文件和数据库结构的二进制文件。
A.控制文件 B.参数文件 C.数据文件 D.日志文件
2.( B )进程主要职责是监控服务器进程和注册数据库服务。
A.SMON B.PMON C.CHKT D.LGWR
3.( C ) 代表了数据库中最小粒度的逻辑数据存储层次。
A.盘区 B.表空间 C.数据块 D.数据文件
4.用于在启动实例时配置数据库,确定 Oracle 11g 的运行环境文件是( A )
A.参数文件 B.数据文件 C. 可执行文件 D. 控制文件
5.下列选项中,哪一部分不是 Oracle实例的组成部分?( C )
A.系统全局区 SGA B.PMON后台进程 C.控制文件 D.Dnnn 调度进程
6.在全局存储区 SGA中,哪部分内存区域是循环使用的 ?( B )
A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池
7.解析后的 SQL语句在SGA的哪个区域中进行缓存?( C )
A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池
8.如果服务器进程无法在数据缓冲区中找到空闲缓存块, 以添加从数据文件中读取的数据块,
则将启动如下哪个进程?( A )
A.DBWR B.LGWR C.SMON D.PMON
9.如果服务器进程非正常终止, Oracle 系统将使用下列哪一个进程以释放它所占用的资源?
( D )
A.DBWR B.LGWR C.SMON D.PMON
10.下列哪个进程用于将修改过的数据从内存保存到磁盘数据文件中?( A )
A.DBWR B.LGWR C.RECO D.ARCH
11.当数据库运行在归档模式下时,如果发生日志切换,为了保证不覆盖旧的日志信息,系统
将启动哪个进程?( D )
A.DBWR B.LGWR C.SMON D.ARCH
2
12.下面哪个描述是正确的?( A )
A.表空间由段组成,段由盘区组成,盘区由数据块组成。
B.段由表空间组成,表空间由盘区组成,盘区由数据块组成。
C.盘区由数据块组成 ,数据块由段组成,段由表空间组成。
D.数据块由段组成,段由盘区组成,盘区由表空间组成。
13.下列哪个部分不是 oracle 实例的组成部分?( C )
A.系统全局区域 B. 服务器进程 C.数据库作者 D.系统监控器
14.你用DBCA建立了一个数据库而没有保存模版定义。现在你打算用 DBCA拷贝整个数据库和
数据,下列哪个是首先要做的?( D )
A.使用脚本建立新的数据库,使用 DBCA导入数据
B.用DBCA模版管理从现有数据库建立一个新的数据库,数据也如此导入
C.从模版列表中选择先前建立的数据库模版并建立数据库
D.从现有数据库中拷贝数据文件建立新的数据库,然后利用 DBCA拷贝数据
15. 你正在你的组织紧急事件处置演习中。几乎没有时间通报用户,你就需要尽快地停止数
据库进程。下列命令哪个是你需要要执行的?( D )
A. shutdown abort  B. shutdown transactional
C. shutdown  D. shutdown immediate
16. 你正在用共享服务器管理一个数据库。 Large_pool_size 是 50M。你执行命令 :alter
system set  Large_pool_size=100M  scope=memory后然后关闭并重启数据库。现在
Large_pool_size 是多少?( A )
A. 50M B.  默认Large_pool_size 大小
C. 100M  D. 和使用中的 oracle SPfile 设置的一样
17. 你使用下列命令连接数据库: sqlplus scott/trigger@abc.com:1522/orcl. 目标数据库
是哪一个?( A )
A.abc.com  B.tiger  C.orcl  D.scott  E. 以上都不是
18. 下列哪个不是有效的数据库状态?( A )
A. 开机 B. 关闭 C. 启动 D. 装载 E. 不装载
19. 如果一个数据库举例 (instance) 失败,但是没有停止运行,你必须使用哪个命令使实例
恢复能被执行? ( B )
A.startup nomount  B.shutdown immediate; start force
C.startup mount  D.shutdown abort; startup
3
20. Oracle 数据库由一个或多个称为()的逻辑存储单元组成。 ( B )
A.表 B. 表空间 C. 行 D. 单元
21. 对于系统表的空间, Oracle建议的大小是( D )
A.100M B. 200M C.300M D.400M E.500M
22. 下列动态视图中,( C )是从控制文件中得到的所有表空间的名称和数量。
A.V$INSTANCE B.V$DATABASE C.V$TABLESPACE D.V$DATAFILES
23. 如果一个表空间脱机在哪里查看?( B )
A. dba_tablespaces  B. v$ tablespaces  C. v$database  D. dba_datafile_status
24.下面哪个参数不能在 STORAGE子句中进行设置( B )
A. INITIAL  B. PCTUSED C. MINEXTENTS D. NEXT
25.Oracle 数据库的最小 I/O单位是( D )
A. 表空间 B. 段 C. 盘区 D. 数据块
26.在设置自动撤消管理时,下列( B  )参数用于设置所使用的撤消表空间
A.UNDO_MANAGEMENT  B.UNDO_TABLESPACE
C.UNDO_RETENTION D.ROLLBACK_SEGMENTS
27.把一个表空间切换到 OFFLINE状态时,可以使用4个参数,不包括下列哪个选项? ( D )
A.IMMEDIATE B.NORMAL C.TEMPORARY D.FORCE
28.在设置撤消表空间的自动管理功能时, DBA通过使用相关的初始化参数对自动撤消表空间
进行配置。下面的 4个参数中,哪一个不是与自动撤消管理功能相关的参数? ( D )
A.UNDO_MANAGEMENT  B.UNDO_TABLESPACE
C.UNDO_RETENTION D.TRANSACTIONS
29.Oracle 表的唯一键约束与主键约束的一个区别是( A )
A.唯一键标识的列可以为空 B. 主键标识的列可以为空
C.唯一键标识的列只可以为单列 D. 主键标识的列只可以为单列
30.下列哪个是无效的列名?( A )
A.1ST_ID  B.CUST#  C.ADDRESS1  D.EXCEPTION
4
31.如果希望在激活约束时不验证表中已有的数据是否满足约束的定义,那么可以使用下列哪
个关键字?( D )
A.disactive B.validate C.active D.novalidate
32.SQL语言中,删除一个表的命令是( B )
A. DELETE B. DROP C.CLEAR D. REMORE
33.你定义了一个对象类型 myOBJ,要基于该类型来创建表 tab1,语句为( C )。
A.CREATE TABLE tab1 OF myOBJ;
B.CREATE TABLE myOBJ OF tab1;
C.CREATE TABLE tab1 AS myOBJ;
D.CREATE TABLE tab1 TYPE OF myOBJ;
34.下列函数不属于集函数的是( D )
A.max B.avg C.count D.substring
35.( C )函数不能用于日期 /时间类型。
A.MAX B.MIN C.COUNT D.TO_CHAR
36.HAVING子句的作用是( A )
A.查询结果的分组条件 B. 组的筛选条件
C.限定返回的行的判断条件 D. 对结果集进行排序
37.查询一个表的总记录数,可以采用( C )统计函数。
A.AVG(*) B.SUM(*) C.COUNT(*) D.MAX(*)
38.下列涉及空值的操作,不正确的是 ( C )
A. AGE IS NULL B. AGE IS NOT NULL
C. AGE = NULL D. NOT (AGE IS NULL)
39. 下列中哪个不是 DML命令?( B )
A.Insert  B.Create  C.Update  D.Delete
40.用于删除表中所有数据行的命令是( B )
A. DELETE TABLE B. TRUNCATE TABLE C. DROP TABLE D. ALTER TABLE
41.( C ) 权限可以允许被授权者置数据库于 noarchivelog 模式?
A. sysdba  B. root  C. dba  D.operator
5
42.下列哪个表述将用户 brent和他的模型实体一起从数据库中移动? ( D )
A.drop user brent;
B.delete from dba_uesrs where username= ’brent’;
C.alter system remove user brent cascade;
D.drop user brent cascade;
43.下列权限中,哪一个不是数据库的访问权限 ?( D )
A. Read权限 B. Resource 权限 C. Update 权限 D.Lock 权限
44.假设用户 USER1的默认表空间为 USERS,他在该空间的配额为 10MB,则USER1在USERS表
空间创建基本表时,他应具有( A )权限
A.CREATE TABLE B.CREATE USER C.UNLIMITED TABLESPACE D.LIMITED TABLESPACE
45.下列哪一项资源不能在用户配置文件中限定?( A )
A.各个会话的用户数 B.登录失败的次数 C.使用CPU时间 D.使用SGA区的大小
46.下面哪一个不是系统权限?( D )
A.SELECT TABLE B.CREATE TABLE C.SYSDBA D.CREATE INDEX
47.想在另一个模式中创建表,用户至少该具有( B )系统权限
A.CREATE TABLE B.CREATE ANY TABLE C.RESOURCE D.DBA
48.用户查询下列( C )数据字典视图可以查看他向其他用户授予的对象权限。
A.DBA_SYS_PRIVS B.USER_TAB_PRIVS_MADE C.USER_TAB_PRIVS D.USER_OBJ_PRIVS
49.下面( B )角色允许一个用户创建其他用户
A.CONNECT B.DBA C.RESOURCE D.SYSDBA
50.如果要启用所有角色,则应该使用( B )命令
A.SET ROLE ALL B.SET ROLE ENABLE ALL C.ALTER SESSION ALL D.ALTER USER ROLE ALL
51.如果一个用户不慎删除了一个表,这将被认为是什么故障? ( B )
A.实例 B.用户错误 C. 表述 D.用户进程
52.下列哪个不是有效的数据泵导出模式? ( A )
A.JAVA  B. SCHEMA C. TABLE  D. TABLESPACE
6
53.进行数据库闪回时,必须确保数据库是处于( C )模式。
A.正常启动模式 B.用户交互模式
C.归档模式 D.调试维护模式
54.Oracle 支持多种类型的不完全备份,下列 ( B ) 不是Oracle所支持的不完全备份?
A.基于时间的不完全备份 B. 基于拥护的不完全备份
C.基于撤消的不完全备份 D. 基于更改的不完全备份
55.在对恢复目录进行 CROSSCHECK 检验时,如果 RMAN不能找到物理存储的备份文件,则备份
文件的信息将被标记为 ( A ) 。
A.EXPIRED B.DELETE
C.ACAILABLE D.UNAVAILABLE
56.下列哪个命令可以用来确认恢复目录中记录的备份数据文件是否存在? ( D )
A.CROSS CHECK BACKUP OF DATABASE
B.CROSS CHECK COPY OF DATABASE
C.CROSSCHECK COPY
D.CROSSCHECK BACKUP OF ARCHIVELOG ALL
57.下面哪一种不完全恢复需要使用 SCN号作为参数?( C )
A.基于时间的不完全备份
B.基于撤消的不完全备份
C.基于更改的不完全备份
D.基于顺序的不完全备份
58.执行不完全恢复时,数据库必须处于什么状态? ( D )
A.关闭 B. 卸载 C. 打开 D. 装载
59.下列哪一个命令可以将一个文件的备份还原到数据库原目录中? ( D )
A.RECOVER B.BACKUP C.COPY D.RESTORE
60.使用RMAN进行介质恢复时,执行命令的顺序是什么? ( A )
A.RESTORE、RECOVER B.RECOVER 、RESTORE
C.COPY、BACKUP D.COPY、RECOVER
61.下列哪一个操作可以用来为一个备份操作手动分配通道? ( A )
A.ALLOCATE CHANNEL B.CREATE CHANNEL
C.CHANNEL ALLOCATE D.CREATE LINK
7
62.下列哪一个命令用来显示 RMAN通道的配置信息? ( A )
A.LIST B.DISPLAY C.SHOW D. 都可以
63.下列哪一个命令可以用来执行不完全恢复? ( B )
A.RESTORE DATABASE UNTIL
B.RECOVER DATABASE UNTIL
C.RECOVER DATA UNTIL
D.RESTORE DATA UNTIL
64.weblogic 调优过程中不涉及的方面( D)。
A.JVM内存
B.线程数量
C.操作系统共享内存大小
D.文件系统大小
65.如下什么是标准的 BEA错误号?(C)。
A.Error-0001
B.WLS-00002
C.BEA-12345
D.ORA-10101
66.proxy plug-in 的作用是?( C)。
A.使得web server 提供静态内容服务
B.使得weblogic 提供动态内容服务
C.负载均衡请求
D.以上都不是
67.若WebLogic域所在服务器地址为 85.16.16.201, 域的端口为 8001,则登录控制台的地址
为:(B)。
A.http://85.16.16.201:8001
B.http://85.16.16.201:8001/console/
C.http://85.16.16.201:8001/login
D.以上都不是
8
二、填空题
1.在Oracle 11g的文件系统中包含多种类型的文件, 这些文件是 数据文件 、 控制文件 、
日志文件 、 参数文件 、口令文件、跟踪文件、警告日志文件等。
2.一般地,Oracle的后台进程包括 数据写入进场 DBWR 、日志写入进场 LGWR 、 检查点
进程CKPT 、系统监控进场 SMON 、进程监控进场 PMON 、归档进程 ARCH 、恢复进程
RECO、封锁进程 LCKn、调度进程 Dnnn、服务器进程 Snnn、作业进程 SNP等。
3.一个表空间物理上对应一个或多个 数据 文件。
4.用户对 数据库的操作如果产生日志信息,则 该日志信息首先 存储在 日志缓 冲区
中,随后由 LGWR 进程保存到 日志文件 。
5.在Oralce的逻辑存储结构中,根据存储数据的类型,可将段分为 数据段 、索引段
回退段 、LOB段和 临时段 。
6.Oracle数据库由一个或多个称为 表空间 的逻辑存储单元组成。
7. 内存结构是指一个进程在其中进行自身对话或与其他进程对话的内存区域 ,Oracle 使用两
种类型的内存结构 ,一种是 SGA ;另一种是 PGA 。
8. 数据字典试图分成 3类:DBA_、 ALL_ 和 USER_ 视图,DBA_视图包含了数据库所有对
象的信息, ALL_ 视图包含了用户查询表时可以访问的所有对象的信息 , USER_  视图包含
了用户查询表时表所拥有的全部对象的信息。
9.表空间是Oracle数据库中数据的逻辑组织 ,每个数据库至少有一个 系统 表空间。
10.表空间是 O racle数据库中数据的逻辑组织,它存储段的集合,在操作系统级映到一个或
多个 数据文件 上。
11.如果想查询当前会话可以使用的权限,可以查询 SESSION_PRIVS  视图。
12.如果要查看某个用户所拥有的角色,可以查看 DBA_ROLE_PRIVS  视图。
13.若要获取数据库中创建的配置文件的信息,可以通过查询数据字典视图 DBA_PROFILES 。
14.在Oracle中将权限分为两类,即 系统权限 和 对象权限 。 系统权限 是指在系统
级控制数据库的存取和使用机制, 对象权限 是指模式对象上控制存取和使用的机制。
9
15. 角色 是具有名称的一组相关权限的组合。
16.连接到数据库的最低系统预定义角色是 CONNECT 。
17.在用户连接到数据库后可以查询数据字典 ROLE_SYS_PRIVS 了解用户所具有的系统权
限。
18.当数据库在 非归档 模式中运行时,无法使用单个备份文件对数据库进行恢复。因
为对模式数据库进行恢复时,必须使用所有的数据库文件备份,使数据库恢复后处于一致状
态。
19.手动进行介质恢复时, 按照数据库恢复后的运行状态不同, 介质恢复为分为 完全数据库
恢复 和 不完全数据库恢复 。 完全恢复 就是恢复所有已经提交的事务,即将数
据库、表空间或数据文件的备份更新到最近的时间。 不完全恢复 使用数据库的备份来对
数据库进行恢复,即将数据库恢复到某一特定的时刻。
20.使用EXPORT导出数据时,可以根据需要按 3种不同的方式导出数据。 表 方式就是导
出一个指定的基本表,包括表的定义、表中的数据,以及在表上建立的索引、约束等。
用户 方式是指到处属于一个拥护的所有对象,包括表、视图、存储过程、序列等。
整数据库 方式导出是指导出数据库中所有的对象。
21.使用 RMAN 进行目标数据库的备份时,可以使用 COPY  和 BACKUP  命令。
COPY 命令用于数据文件备份, 可以将指定的数据库文件备份到磁盘或磁带。 BACKUP  命
令是数据的备份,可以复制一个或多个表空间,以及整个数据库中的数据。
22. 数据库进行物理备份有两种方式可供选择 :联机备份和 脱机备份 。
23.集合运算符 UNION  实现了集合的并运算, 操作INTERSECT实现了对集合的交运算,
而 MINUS  则实现了减运算。
24.如果只需要返回匹配的列,则应当使用 INNER  JOIN  连接。
25.如果使用逗号分隔连接查看两个表,其中一表有 20行,而另一表有 50行,如果未使用
WHERE子句,则将返回 1000  行。
26.外连接的三种类型是 LEFT JOIN  、 RIGHT JOIN  和 FULL JOIN  。
27. DISTINCT  关键字用来限定检索结果中只显示那些不冗余的数据,该关键字使用在
SELECT子句中列的列表前面。
10
28.在order by子句中, ASC  关键字表示升序排列, DESC  关键字表示降序排列。
29.在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接
是 FULL JOIN  。
三、简答题
1.设有关系 EMP(ENO,ENAME,SALARY,DNO),其中各属性的含义依次为职工号、
姓名、工资和所在部门号,以及关系 DEPT(DNO,DNAME,MANAGER),其中各属性含
义依次为部门号、部门名称、部门经理的职工号。
试用SQL语句完成以下查询:
(1)列出各部门中工资不低于 600元的职工的平均工资。
(2)写出“查询 001号职工所在部门名称”的查询语句。
(3)请用SQL语句将“销售部”的那些工资数额低于 600的职工的工资上调 10%。
解:
(1)SELECT AVG(SALARY) FROM EMP WHERE SALARY>=600
(2)SELECT B. DNAME  FROM EMP A, DEPT B WHERE A. DNO=B. DNO AND A.
ENO=’001’
(3)UPDATE A SET A. SALARY=A. SALARY*1.1
FROM EMP A, DEPT B WHERE A. DNO=B. DNO AND B. DNAME =’销售部’AND A.
SALARY<600
2.已知有学生关系 S(SNO,SNAME,AGE,DNO),各属性含义依次为学号,姓名、年龄和所在
系号;学生选课关系 SC(SNO,CNO,SCORE),各属性含义依次为学号、课程号和成绩。
(1)分析以下 SQL语句:
SELECT SNO FROM SC WHERE SCORE= (SELECT MAX(SCORE)FROM SC WHERE CNO=’002’)
请问上述语句完成了什么查询操作?
(2)试用SQL语句完成如下查询:
按系号列出各系学生的平均成绩。
(3)试用SQL语句完成如下查询:
列出同时选修了 001号和002号课程的学生的学号
解:
(1) 读取学生选课关系中成绩为课程号为 002的最高成绩的学号。
(2)SELECT DNO,AVG(SCORE)
FROM S A,SC B
WHERE A.SNO=B.SNO
GROUP BY DNO
11
(3)SELECT SNO FROM S
WHERE S.NO IN(SELECT A.SNO
FROM SC A,SC B
WHERE A.CNO=001 AND B.CNO=002 AND A.SNO=B.SNO)
3.已知3个表:工程技术人员表 emp(sno,sname,sgrade),含义分别为技术人员代号、姓名和技
术等级;项目表 project(prjno,prjname,sgrade),含义分别为项目代号,项目名称,项目所需的技
术等级;项目日报酬表 pay(sno,prjno,daypay),含义分别为技术人员代号,项目代号,项目日报
酬。要求技术人员只能参加低于其技术等级的项目。
(1)请查询出技术等级大于 2的项目代号和项目名称,同时按项目等级降序排序。
(2)请查询出工程技术人员姓名为“张三” ,项目代号为“ A001”的项目日报酬。
(3)请查询出可以参加编号为“ A001”的项目的工程技术人员代号和姓名。
(4)请查询出姓名为“张三”的工程技术人员可以参加的项目代号和项目名称。
解:
(1)SELECT prjno,prjname FROM project WHERE sgrade>2 ORDER BY prjname DESC
(2)SELECT daypay FROM emp A, pay B WHERE A. sno=B. sno AND sname=’张三’AND
prjno=’ A001’
(3)SELECT sno,sname FROM emp A, pay B WHERE A. sno=B. sno AND prjno= ’ A001’
(4)SELECT C.prjno,prjname FROM emp A, pay B, project C WHERE A. sno=B. sno AND B.
prjno=C. prjno AND sname=’张三’
4.已知 一个员工表TBEmp,包含以下字段
列名称 数据类型 备注
id  varchar2(10)  代表员工号码,主键
name  varchar2(2) 代表员工名字,非空
sex  varchar2(10) 代表员工性别
birthday  date 代表出生日期
memo  varchar2(100) 代表员工备注
(1)创建员工表 TBEmp
(2)增加一个字段 salary,类型 number
(3)删除表的 memo字段
(4)把name字段长度改为 100
(5) 插入以下数据(‘ 001’,‘陈四’,‘男’,‘ 1980-10-20’,NULL)
(6)查询有工资的员工信息
(7)查询名字中没有 ac的员工姓名和出生日期
(8)查询工资在 900到2300之间的员工信息
(9)查询女员工个数(性别为 female的)
(10)查询拿最高工资的员工信息
(11)按照员工年龄由高到低来排序,显示员工号码、姓名、出生日期(使用 to_char函数,
日期按照年/月/日时:分显示) to_char(birthday,’yyyy/mm/dd hh:mi:ss’)
12
(12)将Jack的出生日期修改为 1977-2-1,工资增加 200元
(13)更新表格,在所有员工的号码后面加上 ‘emp’
(14)删除号码是 e001和e002和e003的员工
(15)将员工的 id和姓名连接起来使用别名 newname来显示(语法 select  ⋯ as ⋯from .. )
(16)取出员工姓名的前三个字符、第三个字符、姓名长度
(17)使用create table ⋯ as ⋯ 来创建tbemp的备份表格 tbemp2
(18)使用两种方式删除所有员工
(19)删除TBEmp表格
解:(1)create table TBEmp
( id varchar2(10) not null PRIMARY KEY,
name varchar2(2) not null,
sex varchar2(10),
birthday date,
memo varchar2(100));
comment on column TBEmp.id is  员工号'';
comment on column TBEmp.name is ' 员工名称';
comment on column TBEmp.sex is ' 员工性别';
comment on column TBEmp.birthday is ' 出生日期';
comment on column TBEmp.memo is ' 员工备注';
(2)alter table TBEmp add SALARY number;
(3)alter table TBEmp drop column memo;
(4)alter table TBEmp modify name varchar2(100);
(5)INSERT INTO TBEmp(id,name,sex,  birthday ) VALUES(‘001’,‘陈四’,‘男’,
‘1980-10-20’)
(6)SELECT * FROM TBEmp WHERE  SALARY IS NOT NULL
(7)SELECT name, birthday FROM TBEmp WHERE  name NOT IN (SELECT name FROM TBEmp WHERE
NAME LIKE ‘%ac%’)
(8)SELECT * FROM TBEmp WHERE  SALARY BETWEEN 900 AND 2300
(9)SELECT COUNT(1) FROM  TBEmp WHRE sex =’ female’
(10)SELECT * FROM TBEmp WHRE ID IN (SELECT ID FROM TBEmp WHERE SALARY
=(SELECT MAX(SALARY) FROM  TBEmp))
(11)SELECT id,name,birthday  FROM TBEmp ORDER BY to_char(birthday, ’yyyy/mm/dd hh:mi:ss’)
DESC
(12)UPDATE TBEmp SET birthday=’1977-2-1’, SALARY=  SALARY+200  WHERE name=’
Jack’
(13)UPDATE TBEmp SET id=id+’emp’
(14)DELETE TBEmp WHERE id IN (‘e001’,’e002’,’e003’)
(15)SELECT id+name AS newname FROM TBEmp
(16)SELECT SUBSTR(name,1,3),SUBSTR(name,3,1),LEN(name) FROM TBEmp
13
(17)CREATE TABLE tbemp2 AS SELECT * FROM tbemp
(18)DELETE TBEmp;
TRUNCATE TABLE TBEmp
(19)DROP TABLE TBEmp
 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、填空 1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行,必须使用关键字Distinct; 在需要返回查询结果中的所有行,可以使用关键字ALL。 4.当进行模糊查询,应使用关键字like和通配符问号(?)或百分号"%"。 5.Where子句可以接收From子句输出的数据,而HAVING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。 6.在SQL语句中,用于向表中插入数据的语句是Insert。 7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。 12.根据约束的作用域,约束可以分为表级约束和列级约束两种。列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。 13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID的主键约束。 ALTER TABLE Class Add ____________ PK_LASS_ID (Constraint) PRIMARY KEY ________ (ID) 14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp 15. Oracle提供了两种类型的权限:系统权限和对象权限。系统权限提供了在Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则是一种赋予用户在指定的数据库对象(如表、视图、过程等) 16. Oralce数据库在进行物理备份有联机备份和脱机备份两种方式可供选择。 . 17. 从存储结构的角度来说,Oracle数据库可分为物理结构和逻辑结构。 18. 表空间Oracle数据库中数据的逻辑组织,每个数据库至少有一个SYSTEM系统表空间。 19.视图是一个表示表的数据的数据库对象,它允许用户从一个表或一组表中通过一定的查询语句建立一个“虚表”。 20.序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。尤其适合多用户环境中,可以生成唯一的序列号而没有磁盘I/O或事务处理锁定开销。 21. 一个表空间具有离线(OFFLINE)、在线(ONLINE)、只读(READ ONLY)、读写(READ WRITE)状态。 二、选择 1.在全局存储区SGA中,哪部分内存区域是循环使用的?( B ) A.数据缓冲区 B.日志缓冲区 C. 共享池 D.大池 2.如果一个服务器进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?( D ) A.DBWR B.LGWR C. SMON D.PMON 3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A ) A. DBA视图 B. ALL视图 C. USER视图 D. 动态性能视图 4. 下列哪一项是Oracle数据库中最小的存储分配单元? ( C ) A. 表空间 B. 段 C. 盘区 D. 数据块 5. 下面的各选项中哪一个正确描述了Oracle数据库的逻辑存储结构? ( A ) A. 表空间由段组成,段由盘区组成,盘区由数据块组成 B. 段由表空间组成,表空间由盘区组成,盘区由数据块组成 C. 盘区由数据块组成,数据块由段组成,段由表空间组成 D. 数据块由段组成,段由盘区组成,盘区由表空间组成 6. 下列的哪个子句在SELECT语句中用于排序结果集?( D ) A. Having子句 B. Where子句 C. From子句 D. Order by子句 7. Having子句的作用是( B )。 a. 查询结果的分组条件 B. 组的筛选条件 C. 限定返回的行的判断条件 D. 对结果集进行排序 8. 下列哪个函数可以把一个列中的所有值相加求和? ( B ) A MAX B. SUM C. COUNT D. AVG 9. 下列哪个子句是SELECT语句中必选项?( A ) A. FROM B.WHERE C.HAVING D. ORDER BY 10. 下列哪个子句实现对一个结果集进行分组和汇总?( D ) A.HAVING B. ORDER BY C. WHERE D. GROUP BY 11. 查询一个表的总记录数,可以采用_________统计函数。( C ) A. AVG(*) B. SUM(*) C. COUNT(*) D.MAX(*) 12. 要建立一个语句向Types表中插入数据,这个表只有两列,T_ID和T_Name列。如果要插入一行数据,这一行的T_ID值是100,T_Name值是RFUIT。应该使用SQL语句是_____。( A ) A. INSERT INTO Type Values(100, ‘FRUIT’) B. SELECT * FROM Type WHERE T_ID=100 AND T_NAME=’FRUIT’ C. UPDATE SET T_ID=100 FROM Types WHERE T_Name=’FRUIT’ D. DELET * FROM Types WHERE T_ID=100 AND T_Name=’FRUIT’ 13. 用_____语句修改表的一行或多行数据。( A ) A.Update B.set C.Select D.Where 14. 使用什么命令可以清除表中所有的内容? ( D ) A.INSERT B.UPDATE C. DELETE D.TRUNCATE 15.关于模式的描述下列哪一项不正确?( C ) A.表或索引等模式对象一定属于某一个模式 B.在Oracle数据库中,模式与数据库用户是一一对应的 C.一个表可以属于多个模式 D.一个模式可以拥有多个表 16.唯一约束与主键约束的一个区别是?( D ) A.唯一约束的列的值不可以有重复值 B.唯一约束的列的值可以不是唯一的 C.唯一约束的列不可以为空值 D.唯一约束的列可以为空值 17. 只能存储一个值的变量是哪种变量?( B ) A. 游标 B. 标量变量 C. 游标变量 D. 记录变量 18. 声明%TPYE类型的变量,服务器将会做什么操作?( A ) A. 为该变量检索数据库列的数据类型 B.复制一个变量 C.检索数据库中的数据 D.为该变量检索列的数据类型和值 19.下列哪一项可以正确地引用该记录变量中的一个值?( B ) A.rec_abc(1) B. rec_abc(1).col C. rec_abc.col D.rec_abc.first() 20. 在定义游标使用的FOR UPDATE子句的作用是______。( C ) A.执行游标 B. 执行SQL语句的UPDATE语句 C.对要更新表的列进行加锁 D. 都不对 21. 如果允许用户对视图进行更新和插入操作,但是又要防止用户将不符合视图约束条件的记录添加到视图,应当在定义视图指定下列哪一个子句?( C ) A.WITH GRANT OPTION B. WITH READ ONLY C. WITH CHECK OPTION D. WITH CHECK ONLY 22. 如果想查看视图中哪些字段是可以更新的,应当查询哪一个数据字典视图?( D ) A. DBA_VIEWS B. DBA_OBJECTS C. DBA_CLU_COLUMNS D. DBA_UPDATABLE_COLUMNS 23. 在下列各选项中,关于序列的描述哪一项是不正确的?( D ) A. 序列是Oracle提供的用于产生一系列唯一数字的数据库对象 B.序列并不占用实际的存储空间 C.使用序列,需要用到序列的两个伪列NEXTVAL与CURRVAL。其中,NEXTVAL 将返回序列生成的下一个值,而CURRVAL返回序列的当前值 D.在任何候都可以使用序列的伪列CURRVAL,以返回当前序列值 24. 在下列各选项中,关于同义词的描述哪一项是不正确的?( B ) A.同义词是数据库对象的一个替代名,在使用同义词Oracle会将其翻译为对应的对象名称 B.在创建同义词,所替代的模式对象必须存在 C.Oracle中的同义词分为公有同义词和私有同义词 D.公有同义词在数据库中所有的用户都可以使用;私有同义词由创建它的用户所拥有 25. 下列哪个锁模式不属于Oracle?( D ) A. 共享锁 B.排他锁 C. 行级共享锁 D. 死锁 26. 想在另一个模式中创建表,用户最少应该具有什么系统权限?( B ) A.CREATE TABLE B. CREATE ANY TABLE C. RESOURCE D. DBA 27. 如果要启用所有角色,则应该使用哪一个命令?( B ) A.SET ROLE ALL B. SET ROLE ENABLE ALL C. ALTER SESSION ALL D.ALTER USER ROLE ALL 28. 下列哪一个操作可以用来为一个备份操作手动分配通道?( A ) A.ALLOCATE CHANNEL B. CREATE CHANNEL C. CHANNEL ALLOCATE D. CREATE LINK 29. 下列哪一个命令用来显示RMAN通道的配置信息?( C ) A. LIST B. DISPLAY C.SHOW D.都可以 30. 下列哪一个命令可以用来执行不完全恢复?( B ) A. RESTORE DATABASE UNTIL B. RECOVER DATABASE UNTIL C. RECOVER DATA UNTIL D. RESTORE DATA UNTIL 三、简答题 1. 说明数据库模式与用户之间的区别。 答案: 数据库模式与用户之间的区别在于:用户是数据库使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。模式是一系列逻辑数据结构或对象的集合,是数据库中对象的组织和管理单位。 2. 简要游标的作用和游标操作的基本步骤。 答案: 游标的作用是将数据库的中数据检索出来后缓存,可以被PL/SQL程序一行一行的读取并处理。支持一条、多条、零条记录的处理。 游标的基本操作步骤为: (1)声明游标,使用查询来定义游标的列和行 (2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标 (3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提交 (4)关闭游标,使用完游标后将其关闭 3.Oracle数据库的工作模式有哪两种?它们之间有有何区别? 答案: 在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATED SERVER)模式和多线程服务器(MULTITHREADED SERVER)模式两种。其中,在专用服务器模式中为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是1:1的关系;在共享服务器模式中,一个服务器进程可以为多个用户进程服务器。 4.说明数据库内存结构中SGA和PGA的组成,以及这两个内存区存放信息的区别。 答案: SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成;PGA区由排序区、私有SQL区以及堆栈构成。SGA区是由Oracle分配的共享内存结构,包含一个数据库实例共享的数据和控制信息。当多个用户同连接同一个实例,SGA区数据供多个用户共享,所以SGA区又称为共享全局区。用户对数据库的各种操作主要在SGA区中进行。该内存区随数据库实例的创建而分配,随实例的终止而释放。PGA区是在用户进程连接数据库,创建一个会话,由Oracle为用户分配的内存区域,保存当前用户私有的数据和控制信息,因此该区又称为私有全局区。每个服务器进程只能访问自己的PGA区,所有服务器进程PGA区总和即为实例的PGA区的大小。 5. 说明数据库表空间的种类,以及不同类型表空间的作用。 答案: 数据库表空间分为系统表空间和非系统表空间两类,其中非系统表空间包括撤销表空间、临表空间和用户表空间等。 SYSTEM表空间主要用于存储数据库的数据字典、PL/SQL程序的源代码和解释代码、数据库对象的定义。撤销表空间专门进行回退信息的自动管理。临表空间是专门进行临段管理的表空间。用户表空间用于分离不同应用的数据,而且能够减少读取数据文件产生的I/O冲突。 6. 说明Oracle 10g数据库文本初始化参数文件与服务器初始化参数文件的区别。 答案: 文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件。文本参数文件的修改是通过直接对文本的修改实现的,通过命令行是无法将修改后的参数值写入该文件中,而服务器初始化参数文件是不能直接修改的,必须通过ALTER SYSTEM语句来进行参数修改的。 7. 简述PL/SQL程序结构及各个部分的作用。 答案: PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的,语句块之间可以相互嵌套,每个语句块完成特定的功能。  声明部分:以关键字DECLARE开始,BEGIN结束。主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。  执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始,EXCEPTION或END结束(如果PL/SQL块中没有异常处理部分,则以END结束)。该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。 异常处理部分:以关键字EXCEPTION开始,END结束。该部分用于处理该块执行过程中产生的异常。 8. 说明触发器的种类和对应的作用对象、触发事件。 答案: 触发器包括DML触发器、INSTEAD-OF触发器和系统触发器。其中,DML触发器主要作用于表,其事件有INSERT、UPDATE、DELETE;INSTEAD-OF触发器主要主用于视图,其事件有INSERT、UPDATE、DELETE;系统触发器主要是DML事件和系统事件发生调用的触发器,其中DML事件包括CREATE、DROP、ALTER等,系统事件包括LOGON、LOGOFF、STARTUP、SHUTDOWN、SERVERERROR等。 9.简述Oracle数据库角色的种类、作用,以及如何利用角色为用户授权。 答案: Oracle数据库中角色分为系统预定义的角色和用户自定义的角色两类。角色是一系列权限的集合,可以先将权限授予角色,然后将角色授予具有相同权限的用户。 四、求解题 现有关系数据库如下: S(SNO,SNAME,CITY) P(PNO,PNAME,COLOR,WEIGHT) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY) 其中,S为供应商,包含属性的含义依次是供应商代码、供应商名字、供应商所在城市;P为零件,包含属性的含义依次是零件代码、零件名字、颜色、重量;J为工程项目,包含属性的含义依次是工程项目代码、工程项目名字、工程项目所在城市;SPJ为供货关系,包含属性的含义依次是供应商代码、零件代码、工程项目代码,某供应商向某个项目供应数量的零件数量。 请用SQL语言完成如下问题: (1)查询供应工程J1零件P1的供应商号码SNO (2)查询供应工程J1零件为红色的供应商号码SNO (3)查询没有使用北京供应商生产的红色零件的工程号JNO 五、设计题(E-图) 六、PL/SQL语言程序设计题。 设学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生: 现要建立关于系、学生、班级的数据库,关系模式为: 班CLASS(班号classid,专业名subject,系名deptname,入学年份enrolltime,人数num) 学生STUDENT(学号studentid,姓名name,年龄age,班号classid) 系DEPARTMENT(系号deptid,系名deptname) 试用PL/SQL语言完成以下功能: 1. 建表,在定义中要求声明: (1) 每个表的主外键。 (2) 每个班级的人数不能超过30人。 (3) 学生的年龄介于15到40岁之间。 (4) 学生姓名不能为空。 2. 插入如下数据 CLASS表 classid subject deptname enrolltime num 101 软件 计算机 1995 20 102 微电子 计算机 1996 30 111 无机化学 化学 1995 29 112 高分子化学 化学 1996 25 121 统计数学 数学 1995 20 131 现代语言 中文 1996 20 141 国际贸易 经济 1997 30 142 国际金融 经济 1996 14 STUDENT表 studentid name age classid 8101 张三 18 101 8102 钱四 16 121 8103 王玲 17 131 8105 李飞 19 102 8109 赵四 18 141 8110 李可 20 142 8201 张飞 18 111 8302 周瑜 16 112 8203 王亮 17 111 8305 董庆 19 102 8409 赵龙 18 101 8510 李丽 20 142 DEPARTMENT表 deptid deptname 001 数学 002 计算机 003 化学 004 中文 005 经济 3. 学校又新增加了一个物理系,编号为006 4. 学生张三退学,请更新相关的表。 1、有一张表test,有3个字段id,name,parentid。parentid是指父亲的id,请写一个sql语句,找出当过爷爷的id和name。 2、有一张学生表student,字段有student_id,name,即学号,名字。 还有一张选课表,字段有student_id,lesson_id。 还有一张课程表,字段lesson_id,lesson_name。 学生和课程是多对多的关系。 写一个sql语句,找出所有选了全部课程的学生。 3、有一张表person表,字段有id,name,age。age是年龄。 写一个sql语句,找出年龄最接近的2个人。 如有下面4条记录: 1,a,18 2,b,20 3,c,25 4,d,26 则输出3,4 emp表和dept表完成下列练习 Emp员工表 empno ename job Mgr Hiredate Sal Comm Deptno 员工号 员工姓名 工作 上级编号 受雇日期 薪金 佣金 部门编号 Dept表 Deptno Dname Loc 部门编号 部门名称 地点 1.列出至少有一个员工的所有部门。 select dept_id from s_emp where userid is not null; 2.列出薪金比“chad”多的所有员工。 select id,salary from s_emp where salary>(select salary from s_emp where first_name='Chad'); 3.列出所有员工的姓名及其直接上级的姓名。 select l.first_name as yuangong,e.first_name as laoban from s_emp e,s_emp l where e.manager_id=l.id(+); 4.列出受雇日期早于其直接上级的所有员工。 select l.first_name as yuangong,e.first_name as laoban from s_emp e,s_emp l where e.manager_id=l.id(+) and l.start_date>e.start_date; 5.列出部门名称和这些部门的员工信息,同列出那些没有员工的部门。 6.列出所有“CLERK”(办事员)的姓名及其部门名称。 7.列出最低薪金大于1500的各种工作。 8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。 9.列出薪金高于公司平均薪金的所有员工。 10.列出与“SCOTT”从事相同工作的所有员工。 11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。 12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。 13.列出在每个部门工作的员工数量、平均工资和平均服务期限。 14.列出所有员工的姓名、部门名称和工资。 15.列出从事同一种工作但属于不同部门的员工的一种组合。 16.列出所有部门的详细信息和部门人数。 17.列出各种工作的最低工资。 18.列出各个部门的MANAGER(经理)的最低薪金。 19.列出所有员工的年工资,按年薪从低到高排序。 原文:http://www.2xyd.cn/showtopic-524.aspx Oracle习题二附答案 使用scott/tiger的emp表完成练习 更多编程相关:http://www.2xyd.cn/showforum-11.aspx 答案: 1. select distinct dname from dept where deptno in (select distinct deptno from emp); 要查部门编号如果存在于emp 表中,说明这个部门有员工。 2. select ename,job,mgr,hiredate,sal from emp where sal> (select sal from emp where ename='SMITH'); 3. select e.ename, e.mgr , w.ename from emp e, emp w where e.mgr=w.empno; 4. select e.ename, e.mgr , e.hiredate,w.ename,w.hiredate from emp e, emp w where e.mgr=w.empno and e.hiredate< w.hiredate; 5. select e.ename,e.hiredate, d.dname,d.deptno from emp e, dept d where e.deptno (+)=d.deptno; 本例子使用的是外连接, 也可以用右连接。 select e.ename,e.hiredate, d.dname,d.deptno from emp e right join dept d on e.deptno=d.deptno; 6. select e.ename,e.hiredate,e.job, d.dname,d.deptno from emp e, dept d where e.deptno =d.deptno and e.job=upper('clerk'); 7. select job, min(sal) from emp group by job having min(sal)>1500; 8. select e.ename,d.dname from emp e,dept d 2楼 where e.deptno=d.deptno and d.dname=upper('sales'); 或者: select ename from emp where deptno = (select deptno from dept where dname=upper('SALES')); 9. select ename, job, sal from emp where sal> (select avg(sal) from emp ); 10. select ename, job from emp where job = (select job from emp where ename=upper('scott')); 11. select ename, sal,job from emp where sal in (select sal from emp where deptno=30); 12. select ename, sal,job from emp where sal >all (select sal from emp where deptno=30); 或者 select ename ,sal from emp where sal> (select max(sal) from emp where deptno=30); 13. select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate)) from emp e, dept d where e.deptno(+)= d.deptno group by d.deptno,dname; 或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。 select e.*,d.dname , from (select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)) from emp group by deptno) e, dept d where e.deptno =d.deptno; 14. select d.dname, e.ename, sal+nvl(comm,0) from emp e, dept d where d.deptno=e.deptno; 15. select e.ename,e.job, e.deptno ,d.job, d.deptno from emp e, emp d where e.job=d.job and e.deptno<>d.deptno; 16. select count(e.ename),d.dname from emp e, dept d where e.deptno(+)= d.deptno group by e.deptno,d.dname; 或者写成 select d.deptno,e.*,d.dname from (select deptno,count(ename) from emp group by deptno) e,dept d where e.deptno(+)= d.deptno; 17. select job,min(sal+nvl(comm,0))from emp group by job; 18. select deptno,min(sal) from emp where job=upper('manager') group by deptno ; 19. select ename , (sal+nvl(comm,0))*12 yearsal from emp order by yearsal ; --1、列出至少有一个雇员的所有部门   select distinct dname from dept where deptno in (select distinct deptno from emp);   --2、列出薪金比"SMITH"多的所有雇员   select ename,sal from emp where sal>(select sal from emp where ename=upper('smith'));   --3、列出所有雇员的姓名及其直接上级的姓名   select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+);   --4、列出入职日期早于其直接上级的所有雇员   select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr);   --5、列出部门名称和这些部门的雇员,同列出那些没有雇员的部门   select dname,ename from dept d left join emp e on d.deptno=e.deptno;   --6、列出所有“CLERK”(办事员)的姓名及其部门名称   select ename,dname from emp e left join dept d on e.deptno=d.deptno where job=upper('clerk');   --7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录   select job,min(sal) from emp group by job having min(sal)>1500;   --8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号   select ename from emp where deptno = (select deptno from dept where dname=uppder('SALES'))   --9、列出薪金高于公司平均水平的所有雇员   select ename from emp where sal>(select avg(sal) from emp);   --10、列出与“SCOTT”从事相同工作的所有雇员   select ename from emp where job=(select job from emp where ename=upper('scott'));   --11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金   select ename,sal from emp where sal in (select sal from emp where deptno=30);   --12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金   select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);   --13、列出每个部门的信息以及该部门中雇员的数量   select d.deptno,dname,count(ename) from dept d left join emp e on (d.deptno=e.deptno)   group by d.deptno,dname   --14、列出所有雇员的雇员名称、部门名称和薪金   Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno)   --15、列出从事同一种工作但属于不同部门的雇员的不同组合   Select tba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptno   From emp tba,emp tbb   Where tba.job=tbb.job and tba.deptno<>tbb.deptno   --16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员   Select dept.deptno,dname,loc,count(empno)   From dept,emp   Where dept.deptno=emp.deptno(+)   Group by dept.deptno,dname,loc   --17、列出各种类别工作的最低工资   Select min(sal) from emp group by job   --18、列出各个部门的MANAGER(经理)的最低薪金   Select deptno,min(sal) from emp where job=upper(‘manager’) group by deptno   --19、列出按年薪排序的所有雇员的年薪   select (sal+nvl(comm,0))*12 as avn from emp order by avn   --20、列出薪金水平处于第四位的雇员   Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4 --1、选择部门30中的雇员   select * from emp where deptno=30;   --2、列出所有办事员的姓名、编号和部门   select ename,empno,dname from emp e inner join dept d on e.deptno = d.deptno where job=upper(‘clerk’);   --3、找出佣金高于薪金的雇员   select * from emp where comm>sal;   --4、找出佣金高于薪金60%的雇员   select * from emp where comm>sal*0.6   --5、找出部门10中所有经理和部门20中的所有办事员的详细资料   select * from emp where (deptno=10 and job=upper(‘manager‘)) or (deptno=20 and job=upper(‘clerk ‘));   --6、找出部门10中所有经理、部门20中所有办事员,既不是经理又不是办事员但其薪金>=2000的所有雇员的详细资料   select * from emp where (deptno=10 and job=upper(‘manager‘)) or (deptno=20 and job=upper(‘clerk ‘)) or (job<>upper(‘manager’) and job<>upper(‘clerk’) and sal>=2000)   --7、找出收取佣金的雇员的不同工作   select distinct job from emp where comm>0;   --8、找出不收取佣金或收取的佣金低于100的雇员   select * from emp where nvl(comm,0)<100;   --9、找出各月最后一天受雇的所有雇员   select * from emp where hiredate= last_day(hiredate);   --10、找出早于25年之前受雇的雇员   select * from emp where months_between(sysdate,hiredate)/12>25;   select * from emp where hiredate<add_months(sysdate,-12*25);   --11、显示只有首字母大写的所有雇员的姓名   select ename from emp where ename=initcap(ename);   --12、显示正好为6个字符的雇员姓名   select ename from emp where length(ename)=6   --13、显示不带有‘R‘的雇员姓名   Select ename from emp where ename not like ‘%R%’;   Select ename from emp where instr(ename,’R’)=0;   --14、显示所有雇员的姓名的前三个字符   select substr(ename,1,3) from emp   --15、显示所有雇员的姓名,用a替换所有‘A‘   Select replace(ename,’A’,’a’) from emp   --16、显示所有雇员的姓名以及满10年服务年限的日期   Select ename,add_months(hiredate,12*10) ‘服务年限的日期’ from emp   --17、显示雇员的详细资料,按姓名排序   Select * from emp order by ename   --18、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面   Select ename from emp order by hiredate   --19、显示所有雇员的姓名、工作和薪金,按工作的降序顺序排序,而工作相同按薪金升序   Select ename,job,sal from emp order by job desc ,sal asc   --20、显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,将最早年份的项目排在最前面   select ename,to_char(hiredate,‘yyyy‘),to_char(hiredate,‘mm‘) from emp order by hiredate asc   --21、显示在一个月为30天的情况下所有雇员的日薪金   select ename,sal/30 from emp;   --22、找出在(任何年份的)2月受聘的所有雇员   select * from emp where to_char(hiredate,‘mm‘)=‘02‘;   --23、对于每个雇员,显示其加入公司的天数   select ename,sysdate-hiredate from emp   --24、显示姓名字段的任何位置,包含 "A" 的所有雇员的姓名   select ename from emp where ename like ‘%A%‘;   select ename from emp where instr(ename,’A’,1)>0;   --25、以年、月和日显示所有雇员的服务年限   Select months_between(sysdate,hiredate)/12 as “年”, months_between(sysdate,hiredate) as “月”, sysdate-hiredate as “日” from emp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值