数据库程序员面试分类真题10.docx
《数据库程序员面试分类真题10.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题10.docx(11页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分类真题10简答题1. P1./SQ1.中的%R0HTYPE和%TYPE的区别是什么?正确答案:%TYPE是定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的(江南博哥)某个列的数据类型相同。解析关于ROHTYPE,需要了解以下内容:1)%ROWTYPE返回的是一个记录类型,其数据类型和数据库表的数据结构一致。2)声明的变量时应于数据库表或视图中列的集合。3)在与ROWTYPE之前加上数据库发名。4)记录内字段名和数据类型与参照点或视图中的列相同。具体而言,为ROWTYPE有如下优点:1)可以不必知道数据库中列的数量和类型。2)在运行期间,数据库中列的
2、数量和类型可能发生变化,但是却不用修改代码。3)在SE1.ECT语句中使用该属性可以有效地检索表中的行。2. 使用哪个数据字典可以查询序列的定义信息?正确答案:可以通过杳询数据字典视图DBA.SEQUENCES获取序列的定义信息,NEXTV1.返回序列中下一个有效的值,任何用户都可以引用CURRVA1.中存放的序列的当前值。当序列值不符合实际需求时,可以执行A1.TERSEQUENCE命令修改序列,需要注意的是,启动序列号不可以修改(STARTWITHN)修改序列的语法和序列的创建语法一样,只是将CREATE修改为A1.TER即可。3. 同义词的定义及其作用是什么?正确答案:同义词是其他对象(
3、例如表、实体、存储过程、函数、包、序列)的别名。同义词也可以是另一个同义词的别名。同义词的优点主要体现在以下几个方面:D当使用对象时,不需要指出对象的所有者。2)引用对象不需要指出它所在的数据库。创建同义词必须要有CREATEANYSYNONYM.CREATESYM)NYM系统权限。要创建全局的同义词,必须有CREATEPUB1.ICSYM)NYN系统权限。创建同义同的语法如下:createorreplacepublicsynonym同义词名称FOR用户名,表名称;4. 当DM1.语句中有一条数据报错时,如何让该DM1.语句继续执行?正确答案:当一个DV1.语句运行的时候,如果遇到了错误,那么
4、这条语句会进行回滚,就好像没有执行过。对于一个大的DM1.语句而言,如果个别数据错误而导致整个语句的回滚,那么会浪费很多的资源和运行时间。所以,从OraCIeIOg开始Oraele支持记录DM1.语句的错误,而允许语句自动继续执行。这个功能可以使用DBMSERR1.OG包实现。利用CREATEERROR1.OG来创建Tl表的DM1.错误记录表:SQ1.EXECDBMtERR1.OGcREAlE-ERRORUQTlT1.ERR1.OGV1.HRtP1.SQ1.ProCdUrcWtteSfilnycompletedUIRgwd三DESCTI.ERR1.OG;X三toll?TypeCfiA.,M三i
5、SU三&EK.ESGSV三Vi2(三)触皿RoSROIlDCAra_WKHW2CfiAJSKJAGSYAOs2(2000)AYAm2(砌BV三W2(三)1.H0rcl2snINSERTINTOTlSE1.ECTFROMT21.OGERRORSINTOT1.ERRWG(T1.ERR1.OGuR)REJKT1.IMfTUNUMnID;OrcwscratalSHECTtFROMT1.ERR1.OG;一,J5一671I-9)01uw.Maj-wj.MKJOMjW1.ftowiwow.gs.ym.tm.awj*IaUMhgtErtMAJlJ)岫-13而:ICW-OOOOl:UnqMCcretrirtWI
6、.T1J)Ud22CM)M01:IhqOettCStrMt(IHiWJ1J)Utd!ffR.Tl-u331 CRA-(W)Oj:UMMtOMtrjrtRt.n.A)n)btfd1BTl1.Hl441CRMK001:WMMWftStrort(bWK,11.A)nttj二:,I脚71J52 (XAl:UTXMCOMtrart(w.11.AJ11tedBW-Tl-IHl66!0u-oorumjjsCOWtrart(U*!.T1.A)bted、“飞【Htt-TI-1.HI771OflAK_T1_A)wtedIEWrTU8B3 CAi:2ConmrtIWJ1.A)med=-净ektuh99ICM-OOO
7、Ol:ungjeConflrirt(WRPKJl-A)mixedIO10可以看到,插入成功执行,但是插入记录为。条。对应的错误信息表中已经包含了插入的信息。而且从错误信息表中还可以看到对应的错误号和详细借误信息,ORA_ERR_OPTYP$为错误操作类型,I表示为INSERT。关于1.oGERRORS的语法为,INTo语句后面跟随的就是指定的错误记录表的表名。在INTO语句后面,可以跟随一个表达式“(T1.ERR1.OGJHR)”即ORA_ERRTAG$中存储的信息,用来设置本次语句执行的相误在错误记录表中对应的TAG。有了这个语句,就可以很径易地在错误记录表中找到某次操作所对应的所有的错误,
8、这对于错误记录表中包含了大量数据,且本次语句产生了多条借误信息的情况十分有帮助。只要这个表达式的值可以转化为字符串类型就可以。REJECT1.IVlT则限制语句出错的数量。1.HRorclasmINSERTINTOTlSE1.ECT*FROMT21.OGERRORSINTOT1.ERR1.OG(,T1-ERR1.OG,)REJECT1.IMIT1;INSERTINTOTlSE1.ECT*EROMT21.OGERRORSINTOti_errlog(ti_errlog)rejectlimiti*ERRORat1i11e1:ORA-OOOOl:uniqueconstraint(1.HR.PK_T1_
9、A)violated可以看到,当设置的REJEcTUMIT的宿小字出错记录数时,语句会报错,这时1.OGERRoRS语句没有起到应有的作用,插入语句仍然以报错结束。而如果将REJECT1.IMlT的限制设置大于等于出错的记录数,则插入语句就会执行成功,而所有出借的信息都会存储到1.OGERRoRS对应的表中。只要指定了1.OGERRORS语句,不管最终插入语句是否成功地执行完成,在错误记录表中都会记录语句执行过程中遇到的错误。比如第一个插入由于出错数目超过REJECT1.lMlT的限制,这时在记录表中会存在REJECT1.IMIT+1条记录数,因此这条记业错误导致了整个SQ1.语句的报错。如果
10、不管碰到多少错误,都希望语句能继续执行,那么可以设置REJEeT1.lMIT为UN1.nnTEDo需要注意的是,即使做了回滚操作,错误日志表中的记录并不会减少,因为OraCle是利用自治事务的方式插入错误记录表的。1.OGERRORS可以用在INSERT、UPDATE、DE1.ETE和MERGE后,但是,它有以卜.限制条件:1)违反延迟约束。2)直接路径的INSERT或MERGE语句违反了唯一约束或唯一索引(注意:从OracleUg开始,已经取消了该条限制)。3)更新操作违反了唯一约束或唯一索引。4)错误日志表的列不支持的数据类型包括1.oNG、1.ONGRAW,B1.OG.C1.OB.NC1
11、.OB.BFl1.E以及各种对象类型。OraCle不支持这些类型的原因也很简单,这些特殊的类型不是包含了大量的记录,就是需要通过特殊的方法来读取,因此Oracle没有办法在SQ1.处理的时候将对应列的信息写到错误记录表中。什么是临时表?正确答案:在创建藉表的时候,如果没有特殊的指明,那么创建的表是一个永久的关系型表,也就是说,这个表中对应的数据,除非是显式地删除,否则表中的数据是7k远都存在的。相对应的,在OraCIe数据库中,还有一种类型的表,叫作临时表。这个临时表与永久表最大的区别就是表中的数据不会永远地存在。当一个会话结束或者事务结束的时候,这个临时表中的数据,不用用户自J删除,数据库自
12、己会H动清除。Oracle的临时表创建之后基本不占用表空间,如果没有指定临时表(包括临时表的索引)存放的表空间,那么插入临时表的数据是存放在Oracle系统的默认临时表空间中(TEMP),-个系统可能有多个临时表空间。临时发的数据只能存放在临时表空间中。临时表的数据只是在事务期间存在,对于会话类型的临时表,数据在会话期间存在,会话的数据对于当前会话私有,每个会话只能看到并修改自己的数据。DM1.锁不会加到临时表的数据上。可以对临时表创建索引、视图、触发器,可以用exp和imp工具导入导出表的定义,但是不能导出数据。考点对象6. 临时表的特点有哪些?正确答案:临时表的特点有如下几点:D多用户操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 分类 10

链接地址:https://www.desk33.com/p-1415994.html