Oracle练习题Word格式.docx
《Oracle练习题Word格式.docx》由会员分享,可在线阅读,更多相关《Oracle练习题Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
![Oracle练习题Word格式.docx](https://file1.bdocx.com/fileroot1/2023-2/5/4ba9778b-16a2-4f61-a371-48f8d2cedf15/4ba9778b-16a2-4f61-a371-48f8d2cedf151.gif)
(B)
A.数据缓冲区B.日志缓冲区C.共享池D.大池
2.如果一个服务器进程非正常终止,Oracle系统将使用下列哪一个进程来释放它所占用的资源?
(D)
A.DBWRB.LGWRC.SMOND.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语句中用于排序结果集?
A.Having子句B.Where子句C.From子句D.Orderby子句
7.Having子句的作用是(B)。
a.查询结果的分组条件
B.组的筛选条件
C.限定返回的行的判断条件
D.对结果集进行排序
8.下列哪个函数可以把一个列中的所有值相加求和?
(B)
AMAXB.SUMC.COUNTD.AVG
9.下列哪个子句是SELECT语句中必选项?
A.FROMB.WHEREC.HAVINGD.ORDERBY
10.下列哪个子句实现对一个结果集进行分组和汇总?
A.HAVINGB.ORDERBYC.WHERED.GROUPBY
11.查询一个表的总记录数,可以采用_________统计函数。
(C)
A.AVG(*)B.SUM(*)C.COUNT(*)D.MAX(*)
12.要建立一个语句向Types表中插入数据,这个表只有两列,T_ID和T_Name列。
如果要插入一行数据,这一行的T_ID值是100,T_Name值是RFUIT。
应该使用的SQL语句是_____。
A.INSERTINTOTypeValues(100,‘FRUIT’)
B.SELECT*FROMTypeWHERET_ID=100ANDT_NAME=’FRUIT’
C.UPDATESETT_ID=100FROMTypesWHERET_Name=’FRUIT’
D.DELET*FROMTypesWHERET_ID=100ANDT_Name=’FRUIT’
13.用_____语句修改表的一行或多行数据。
(A)
A.UpdateB.setC.SelectD.Where
14.使用什么命令可以清除表中所有的内容?
(D)
A.INSERTB.UPDATEC.DELETED.TRUNCATE
15.关于模式的描述下列哪一项不正确?
(C)
A.表或索引等模式对象一定属于某一个模式
B.在Oracle数据库中,模式与数据库用户是一一对应的
C.一个表可以属于多个模式
D.一个模式可以拥有多个表
16.唯一约束与主键约束的一个区别是?
A.唯一约束的列的值不可以有重复值
B.唯一约束的列的值可以不是唯一的
C.唯一约束的列不可以为空值
D.唯一约束的列可以为空值
17.只能存储一个值的变量是哪种变量?
(B)
A.游标B.标量变量C.游标变量D.记录变量
18.声明%TPYE类型的变量时,服务器将会做什么操作?
(A)
A.为该变量检索数据库列的数据类型
B.复制一个变量
C.检索数据库中的数据
D.为该变量检索列的数据类型和值
19.下列哪一项可以正确地引用该记录变量中的一个值?
A.rec_abc
(1)B.rec_abc
(1).col
C.rec_abc.colD.rec_abc.first()
20.在定义游标时使用的FORUPDATE子句的作用是______。
(C)
A.执行游标B.执行SQL语句的UPDATE语句
C.对要更新表的列进行加锁D.都不对
21.如果允许用户对视图进行更新和插入操作,但是又要防止用户将不符合视图约束条件的记录添加到视图,应当在定义视图时指定下列哪一个子句?
A.WITHGRANTOPTION
B.WITHREADONLY
C.WITHCHECKOPTION
D.WITHCHECKONLY
22.如果想查看视图中哪些字段是可以更新的,应当查询哪一个数据字典视图?
A.DBA_VIEWSB.DBA_OBJECTSC.DBA_CLU_COLUMNSD.DBA_UPDATABLE_COLUMNS
23.在下列各选项中,关于序列的描述哪一项是不正确的?
A.序列是Oracle提供的用于产生一系列唯一数字的数据库对象
B.序列并不占用实际的存储空间
C.使用序列时,需要用到序列的两个伪列NEXTVAL与CURRVAL。
其中,NEXTVAL将返回序列生成的下一个值,而CURRVAL返回序列的当前值
D.在任何时候都可以使用序列的伪列CURRVAL,以返回当前序列值
24.在下列各选项中,关于同义词的描述哪一项是不正确的?
A.同义词是数据库对象的一个替代名,在使用同义词时,Oracle会将其翻译为对应的对象名称
B.在创建同义词时,所替代的模式对象必须存在
C.Oracle中的同义词分为公有同义词和私有同义词
D.公有同义词在数据库中所有的用户都可以使用;
私有同义词由创建它的用户所拥有
25.下列哪个锁模式不属于Oracle?
A.共享锁B.排他锁C.行级共享锁D.死锁
26.想在另一个模式中创建表,用户最少应该具有什么系统权限?
(B)
A.CREATETABLEB.CREATEANYTABLEC.RESOURCED.DBA
27.如果要启用所有角色,则应该使用哪一个命令?
A.SETROLEALLB.SETROLEENABLEALL
C.ALTERSESSIONALLD.ALTERUSERROLEALL
28.下列哪一个操作可以用来为一个备份操作手动分配通道?
A.ALLOCATECHANNELB.CREATECHANNELC.CHANNELALLOCATE
D.CREATELINK
29.下列哪一个命令用来显示RMAN通道的配置信息?
A.LISTB.DISPLAYC.SHOWD.都可以
30.下列哪一个命令可以用来执行不完全恢复?
A.RESTOREDATABASEUNTIL
B.RECOVERDATABASEUNTIL
C.RECOVERDATAUNTIL
D.RESTOREDATAUNTIL
三、简答题
1.说明数据库模式与用户之间的区别。
答案:
数据库模式与用户之间的区别在于:
用户是数据库的使用者和管理者,用户具有帐户状态、访问权限和操作权限等属性。
模式是一系列逻辑数据结构或对象的集合,是数据库中对象的组织和管理单位。
2.简要游标的作用和游标操作的基本步骤。
游标的作用是将数据库的中数据检索出来后缓存,可以被PL/SQL程序一行一行的读取并处理。
支持一条、多条、零条记录的处理。
游标的基本操作步骤为:
(1)声明游标,使用查询来定义游标的列和行
(2)打开游标,使用PL/SQL命令OPEN来打开一个声明的游标
(3)提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提交
(4)关闭游标,使用完游标后将其关闭
3.Oracle数据库的工作模式有哪两种?
它们之间有有何区别?
在Oracle数据库中,数据库的操作模式分为专用服务器(DELICATEDSERVER)模式和多线程服务器(MULTITHREADEDSERVER)模式两种。
其中,在专用服务器模式中为每个用户进程创建一个服务器进程,用户进程与服务器进程之间是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.说明Oracle10g数据库文本初始化参数文件与服务器初始化参数文件的区别。
文本初始化参数文件是一个本地的初始化参数文件,而服务器初始化参数文件是一个放在数据库服务器端的共享的二进制初始化参数文件。
文本参数文件的修改是通过直接对文本的修改实现的,通过命令行是无法将修改后的参数值写入该文件中,而服务器初始化参数文件是不能直接修改的,必须通过ALTERSYSTEM语句来进行参数修改的。
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
无机化学
化学
29
112
高分子化学
25
121
统计数学
数学
131
现代语言
中文
141
国际贸易
经济
1997
142
国际金融
14
STUDENT表
studentid
name
age
8101
张三
18
8102
钱四
16
8103
王玲
17
8105
李飞
19
8109
赵四
8110
李可
8201
张飞
8302
周瑜
8203
王亮
8305
董庆
8409
赵龙
8510
李丽
DEPARTMENT表
deptid
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表
Dname
Loc
部门名称
地点
1.列出至少有一个员工的所有部门。
selectdept_idfroms_empwhereuseridisnotnull;
2.列出薪金比“chad”多的所有员工。
selectid,salaryfroms_empwheresalary>
(selectsalaryfroms_empwherefirst_name='
Chad'
);
3.列出所有员工的姓名及其直接上级的姓名。
selectl.first_nameasyuangong,e.first_nameaslaobanfroms_empe,s_emplwheree.manager_id=l.id(+);
4.列出受雇日期早于其直接上级的所有员工。
selectl.first_nameasyuangong,e.first_nameaslaobanfroms_empe,s_emplwheree.manager_id=l.id(+)andl.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.列出所有员工的年工资,按年薪从低到高排序。
原文:
Oracle习题二附答案使用scott/tiger的emp表完成练习
更多编程相关:
1.
selectdistinctdname
fromdept
wheredeptnoin
(selectdistinctdeptno
fromemp);
要查部门编号如果存在于emp表中,说明这个部门有员工。
2.
selectename,job,mgr,hiredate,sal
fromemp
wheresal>
(selectsal
fromemp
whereename='
SMITH'
3.
selecte.ename,e.mgr,w.ename
fromempe,empw
wheree.mgr=w.empno;
4.
selecte.ename,e.mgr,e.hiredate,w.ename,w.hiredate
wheree.mgr=w.empno
ande.hiredate<
w.hiredate;
5.
selecte.ename,e.hiredate,d.dname,d.deptno
fromempe,deptd
wheree.deptno(+)=d.deptno;
本例子使用的是外连接,也可以用右连