oracle笔试题附答案.docx
- 文档编号:11434307
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:13
- 大小:20.38KB
oracle笔试题附答案.docx
《oracle笔试题附答案.docx》由会员分享,可在线阅读,更多相关《oracle笔试题附答案.docx(13页珍藏版)》请在冰豆网上搜索。
oracle笔试题附答案
1.你要对操纵Oracle数据库中的数据。
下列哪个选项表示Oracle中select语句的功能,
并且不需要使用子查询(C)
A.可以用select语句改变Oracle中的数据
B.可以用select语句删除Oracle中的数据
C.可以用select语句和另一个表的内容生成一个表
D.可以用select语句对表截断
2.你要在Oracle中定义SQL查询。
下列哪个数据库对象不能直接从select语句中引用(C)
A.表B.序列C.索引D.视图
3. 用下列代码块回答问题:
SQL> select ______(-45) as output from dual;
OUTPUT
------
-45
下列哪个单行函数无法产生这个输出(A)
A.abs() B.ceil() C.floor() D.round()
4. SQL *Plus中发出的下列语句:
SQL> select ceil(-97.342),
2floor(-97.342),
3 round(-97.342),
4 trunc(-97.342)
5 from dual;
下列哪个函数不返回结果-97(B)
A.ceil() B.floor() C.round() D.trunc()
5. 你要定义外连接,下列哪个选项正确描述了外连接语句?
(D)
A.由于外连接操作允许一个表中有NULL值,因此连接这些表时不必指定相等性比较。
B.在表A与B的外连接语句中,如果不管B表有无相应记录,都要显示表A的所有行,则可以使用右外连接。
C.在表A与B的外连接语句中,如果不管A表有无相应记录,都要显示表B的所有行,则可以使用左外连接。
D.尽管外连接操作允许一个表中有NULL值,但连接这些表时仍要指定相等性比较
6.对数据库运行下列哪个groupby查询时会从Oracle产生错误?
(C)
A.selectdeptno,job,sum(sal)fromempgroupbyjob,deptno;
B.selectsum(sal),deptno,jobfromempgroupbyjob,deptno;
C.selectdeptno,job,sum(sal)fromemp;
D.selectdeptno,sum(sal),jobfromempgroupbyjob,deptno;
7.若account表中有14条记录,则用户执行了以下操作,结果是(A)
declare
cursormycurisselect*fromemp;
begin
openmycur;
dbms_output.put_line(mycur%rowcount);
closemycur;
end;
A.0
B.14
C.7
D.编译不通过,无法执行。
8.数据库系统的核心是__B____。
A、数据模型B、数据库管理系统C、软件工具D、数据库
9.下列叙述中正确的是___C__。
A、数据库是一个独立的系统,不需要操作系统的支持
B、数据库设计是指设计数据库管理系统
C、数据库技术的根本目标是要解决数据共享的问题
D、数据库系统中,数据的物理结构必须与逻辑结构一致
10.SQL语句中修改表结构的命令是_C___。
A、MODIFYTABLEB、MODIFYSTRUCTUREC、ALTERTABLE
D、ALTERSTRUCTURE
11.如果要创建一个数据组分组报表,第一个分组表达式是"部门",第二个分组表达
式是"性别",第三个分组表达式是"基本工资",当前索引的索引表达式应当是___B__。
A、部门+性别+基本工资
B、部门+性别+STR(基本工资)
C、STR(基本工资)+性别+部门
D、性别+部门+STR(基本工资)
12.数据库DB、数据库系统DBS、数据库管理系统DBMS三者之间的关系是___A___。
A、DBS包括DB和DBMS
B、DBMS包括DB和DBS
C、DB包括DBS和DBMS
D、DBS就是DB,也就是DBMS
13.定位第一条记录上的命令是__A____。
A、GOTOPB、GOBOTTOMC、GO6D、SKIP
14.在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过__B____。
A、候选键B、主键C、外键D、超键
15.只有满足联接条件的记录才包含在查询结果中,这种联接为__C____。
A、左联接
B、右联接
C、内部联接
D、完全联接
16.索引字段值不唯一,应该选择的索引类型为____B__。
A、主索引
B、普通索引
C、候选索引
D、唯一索引
17.10.从数据库中删除表的命令是___A__。
A、DROPTABLE
B、ALTERTABLE
C、DELETETABLE
D、USETABLE
18.DELETEFROMSWHERE年龄>60语句的功能是___B__。
A、从S表中彻底删除年龄大于60岁的记录
B、S表中年龄大于60岁的记录被加上删除标记
C、删除S表
D、删除S表的年龄列
19.SELECT-SQL语句是__B___。
A、选择工作区语句
B、数据查询语句
C、选择标准语句
D、数据修改语句
20.SQL语言是__C___语言。
A、层次数据库
B、网络数据库
C、关系数据库
D、非数据库
21.在SQL中,删除视图用__C____。
A、DROPSCHEMA命令
B、CREATETABLE命令
C、DROPVIEW命令
D、DROPINDEX命令
22.在数据库设计器中,建立两个表之间的一对多联系是通过以下索引实现的
__A____。
A、"一方"表的主索引或候选索引,"多方"表的普通索引
B、"一方"表的主索引,"多方"表的普通索引或候选索引
C、"一方"表的普通索引,"多方"表的主索引或候选索引
D、"一方"表的普通索引,"多方"表的候选索引或普通索引
23.下列函数中函数值为字符型的是___B___。
A、DATE()
B、TIME()
C、YEAR()
D、DATETIME()
24.将查询结果放在数组中应使用___A___短语。
A、INTOCURSORB、TOARRAYC、INTOTABLED、INTOARRAY
简答题
1.如何判断游标是否到了末尾。
答:
cursor_name%notfound
2.写一个‘游标’并使用它。
答:
Declare
cursorcursor_nameis
Selectreal_namefromaccount;
Namevarchar2(10);
Begin
opencursor_name;
loop
fetchcursorintoname;
exitwhencursor_name%notfound;
sql…
endloop;
closecursor_name;
end;
3.使用存储过程访问数据库比直接用SQL语句访问有哪些优点?
答:
存储过程是预编译过的,执行时勿须编译,执行速度更快;存储过程封装了一批SQL语句,便于维护数据的完整性与一致性;可以实现代码的复用。
4.简述数据库的第一范式,第二范式,第三范式。
并举例
答:
第一范式:
(1NF)无重复的列。
第二范式:
(2NF)属性完全依赖于主键。
第三范式:
(3NF)属性不依赖于其它非主属性。
5.试述事务的概念及事务的四个特性。
答:
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有四个特性:
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。
这个四个特性也简称为ACID特性。
原子性:
事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:
一个事务的执行不能被其他事务干扰。
即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
持续性:
持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
接下来的其他操作或故障不应该对其执行结果有任何影响。
6.Truncate与 delete的区别?
答:
delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。
而truncate则使用于大量删除数据,而且隐式提交事务,其速度要比使用delete快的。
7.Truncate与 delete的区别?
答:
DDL表示数据定义语言,在ORACLE中主要包括CREATE,ALTER,DROP;
DML表示数据操作语言,主要的DML有SELECT,INSERT,UPDATE,DELETE。
8.如何获取系统时间。
答:
selectsysdatefromdual;
编程题
1、一个日期判断的sql语句?
请取出tb_send表中日期(SendTime字段)为当天的所有记录?
(SendTime字段为
datetime型,包含日期与时间)
答:
select*fromtbwheredatediff(dd,SendTime,getdate())=0
2.一道SQL语句面试题,关于groupby表内容:
2005-05-09胜
2005-05-09胜
2005-05-09负
2005-05-09负
2005-05-10胜
2005-05-10负
2005-05-10负
如果要生成下列结果,该如何写sql语句?
胜负
2005-05-0922
2005-05-1012
答:
createtable#tmp(rqvarchar(10),shengfunchar
(1))
insertinto#tmpvalues('2005-05-09','胜')
insertinto#tmpvalues('2005-05-09','胜')
insertinto#tmpvalues('2005-05-09','负')
insertinto#tmpvalues('2005-05-09','负')
insertinto#tmpvalues('2005-05-10','胜')
insertinto#tmpvalues('2005-05-10','负')
insertinto#tmpvalues('2005-05-10','负')
1)selectrq,sum(casewhenshengfu='胜'then1else0end)'胜',sum(casewhenshengfu='负'
then1else0end)'负'from#tmpgroupbyrq
2)selectN.rq,N.勝,M.負from(
selectrq,勝=count(*)from#tmpwhereshengfu='胜'groupbyrq)Ninnerjoin
(selectrq,負=count(*)from#tmpwhereshengfu='负'groupbyrq)MonN.rq=M.rq
3)selecta.col001,a.a1胜,b.b1负from
(selectcol001,count(col001)a1fromtemp1wherecol002='胜'groupbycol001)a,
(selectcol001,count(col001)b1fromtemp1wherecol002='负'groupbycol001)b
wherea.col001=b.col001
3、请用SQL语句实现:
从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。
请注意:
TestDB中有很多科目,都有1-12月份的发生额。
AccID:
科目代码,Occmonth:
发生额月份,DebitOccur:
发生额。
数据库名:
JcyAudit,数据集:
Select*fromTestDB
答:
selecta.*
fromTestDBa
(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID='101'group
byOccmonth)b
wherea.Occmonth=b.Occmonthanda.DebitOccur>b.Debit101ccur
4.有一个两维表,M行N列,请用Oracle的存储过程,转置成N行M列。
答:
CREATEORREPLACEPROCEDURErow_col_convert(p_tabnameINVARCHAR2,view_nameINVARCHAR2DEFAULT'v_tmp')
AUTHIDCURRENT_USER
AS
sqlstrVARCHAR2(4000);
sqlstr1varchar2(500):
='select''?
?
''newid';
cursys_refcursor;
id_colVARCHAR2(30);
idvarchar2(100);
BEGIN
iftrim(p_tabname)isnullthenreturn;endif;
SELECTcolumn_nameINTOid_colFROMuser_tab_colsWHEREtable_name=upper(p_tabname)ANDcolumn_id=1;
OPENcurFOR'selectto_char('||id_col||')from'||p_tabname||'orderby1';
loop
fetchcurINTOID;
exitWHENcur%notfound;
sqlstr1:
=sqlstr1||',max(decode('||id_col||','''||id||''',to_char(?
?
)))"'||id||'"';
ENDloop;
sqlstr1:
=sqlstr1||'from'||p_tabname;
FORcur1IN(SELECTcolumn_nameFROMuser_tab_colsWHEREtable_name=upper(p_tabname)ANDcolumn_id>1)loop
sqlstr:
=sqlstr||chr(10)||'unionall'||REPLACE(sqlstr1,'?
?
',cur1.column_name);
ENDloop;
executeimmediate'createorreplaceview'||view_name||'as'||substr(sqlstr,12);
END;
5.请根据以下的描述,编写存储过程sp_terminal
用户资料表:
serv(serv_idnumber(10),pro_idnumber(10),user_typevarchar2(30),terminal_namevarchar2(30))
其中,serv_id为用户标识,是serv表的主键,prod_id为产品标识;user_type为用户类型;terminal_name为终端类型
终端类型临时表:
terminal(serv_idnumber(10),terminal_namevarchar2(30))
初始化的情况下,serv表的serv_id,prod_id,user_type字段是已知的,terminal_name字段是空的,现在主要根据prod_id,user_type字段的值来更新terminal_name字段
更新条件为:
当条件满足“prod_id=1anduser_type='A'“时,terminal_name更新为‘固话’
当条件满足”prod_id=1anduser_type='B'“时,terminal_name更新为‘小灵通’
当条件满足”prod_id=2“时,terminal_name更新为‘宽带’
当条件满足”user_type=‘C’“时,terminal_name更新为‘CDMA’
以上条件均不满足时,terminal_name更新为-1;
答:
createorreplaceproceduresp_terminal
is
begin
updateservt
sett.terminal_name=casewhent.pro_id=1andt.user_type='A'then'固话'
whent.pro_id=1andt.user_type='B'then'小灵通'
whent.pro_id=2then'宽带'
whent.user_type='C'then'CDMA'
else'-1'
end;
updateterminala
seta.terminal_name=(selectt.terminal_name
fromservt
wheret.serv_id=a.serv_id)
whereexists(select'x'
fromservt
wheret.serv_id=a.serv_id);
end;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 笔试 答案