还剩59页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
ORACLE数据库课程习题1通过SQL*PLUS等数据库访问工具登录数据库服务器时所需的数据库连接串是在以下哪个文件中定义的AAtnsnames.oraBsqlnet.oraClistener.oraDinit.oraE以上所述都不正确2以下关于数据库连接串的叙述正确的是EA数据库连接串必须与数据库名一致B数据库连接串必须与全局数据库名一致C数据库连接串必须与数据库的实例名INSTANCE一致D数据库连接串必须与数据库的SID一致E以上所述都不正确3关于SQL*PLUS的叙述正确的是AASQL*PLUS是ORACLE数据库的专用访问工具BSQL*PLUS是标准的SQL访问工具可以访问各类关系型数据库CSQL*PLUS是所有ORACLE应用程序的底层APIDSQL*PLUS是访问ORACLE数据库的唯一对外接口E以上所述都不正确4SQL*PLUS在ORACLE数据库系统中的作用以下叙述正确的是CA是ORACLE数据库服务器的主要组成部分是服务器运行的基础构件.B是ORACLE数据库系统底层网络通信协议为所有的ORACLE应用程序提供一个公共的通信平台C是ORACLE客户端访问服务器的一个工具通过它可以向服务器发送SQL命令D是ORACLE客户端到客户端的点对点的通信工具用来传递各个客户端的数据E以上所述都不正确5命令sqlplus/nolog的作用是CA仅创建一个ORACLE实例但并不打开数据库.B仅创建一个ORACLE实例但并不登录数据库.C启动sqlplus但并不登录数据库D以nolog用户身份启动sqlplusE以上所述都不正确6在SQL*PLUS中显示EMP表结构的命令是BALISTEMPBDESCEMPCSHOWDESCEMPDSTRUCTUREEMPESHOWSTRUCTUREEMP7在SQL*PLUS环境中可以利用DBMS_OUTPUT包中的PUT_LINE方法来回显服务器端变量的值但在此之前要利用一个命令打开服务器的回显功能这一命令是DAsetserveronBsetserverechoonCsetservershowonDsetserveroutputonEsetserverdisplayon8将SQL*PLUS的显示结果输出到d:\data
1.txt文件中的命令是EAwritetod:\data
1.txtBoutputtod:\data
1.txtCspooltod:\data
1.txtDspoolond:\data
1.txtEspoold:\data
1.txt9在SQL*PLUS中显示执行时长的命令是BAsettimeonBsettimingonCsetlongDsettimelongonEsetsqlprompt10在SQL*PLUS中执行刚输入的一条命令用AA正斜杠/B反斜杠\C感叹号!D句号.E以上所述都不正确11在SQL*PLUS版本9中可以通过以下哪条命令更改当前的用户口令BApassBpasswCpasswdDpasswordE以上所述都不正确12在SQL*PLUS中显示当前用户的命令是CAshowaccountBshowaccountnameCshowuserDshowusernameE以上所述都不正确13在SQL*PLUS中显示数据库例程的内存分配情况可用命令DAshowallBshowmemCshowmemoryDshowsgaEshowrel14假定某非本机数据库的全局数据库名为ORCL.COM数据库实例的SID为ORCL定义的这个数据库的连接串为ORCLDB数据库的用户名为scott口令为tiger.那么以下哪个命令可以登录这个数据库DAsqlplusscott/tigerBsqlplusscott/tiger@ORCL.COMCsqlplusscott/tiger@ORCLDsqlplusscott/tiger@ORCLDBE以上所述都不正确15如何设置SQL*PLUS操作界面的行宽可以容纳1000个字符BAsetlong1000Bsetline1000Csetnumformat1000Dsetpage1000Esetsize100016当用SQL*PLUS已经登录到某一数据库此时想登录到另一数据库应该用命令AACONNBDISCCGOTODLOGINELOGON17以下哪个命令是DDL命令AACREATEBINSERTCCOMMITDSELECTE以上所述都不正确18第一步执行了DELETE命令删除了某表中的一条记录.第二步执行了COMMIT命令.最后又执行了ROLLBACK命令.请问以下叙述正确的是BA被删除的记录又被恢复回来仍然存放在数据库的表中B被删除的记录彻底从数据库中被删除掉了C被删除的记录只是当前用户看不到了而其它用户还能看到D被删除的记录当前用户可以看到而其它用户却看不到了E以上所述都不正确19第一步用DELETE命令删除了表A中的数据但并没有提交第二步成功创建了一个表B第三步执行了一个ROLLBACK回滚操作.请问以下叙述正确的是DA表A中的数据被恢复回来创建的表B被从数据库中被删除恢复为未建表之前的状态B表A中的数据被恢复回来表B被创建在数据库中.C表A中的数据被彻底从数据库中删除但表B被从数据库中被删除恢复为未建表之前的状态D表A中的数据被彻底从数据库中删除表B被创建在数据库中.E以上所述都不正确20第一步用DELETE命令删除了表A中的数据但并没有提交第二步试图创建了一个表B但由于权限不足表B并没有创建成功.第三步执行了一个ROLLBACK回滚操作.请问以下叙述正确的是BA表A中的数据被恢复回来B表A中的数据被彻底从数据库中删除C表A中的数据被移至一个临时的表中D表A中的数据将处于一个不确定的状态E以上所述都不正确21某个表的创建语句如下:CREATETABLEUSER_TAB01COL1COL2COL3TABLESPACEUSER01STORAGEINITIAL64KNEXT128KPCTINCREASE100;ORACLE为该表的数据段分配的前3个区的大小依次为多大DA64KB128KB128KBB64KB128KB192KBC64KB128KB64KBD64KB128KB256KBE64KB128KB100KB22下面哪项信息不保存在控制文件中BA当前的重做日志序列号B数据库的名称C初始化参数文件的位置D数据文件和名称和位置E重做日志文件的名称和位置23下列哪一个后台进程和对应的数据库组件能够保证即使用户对数据库所做的修改没有写入数据文件也不会发生修改内容丢失的情况BADBWn与数据库缓冲区BLGWR与重做日志文件CCKPT与控制文件DARCn与归档日志文件24数据字典在SGA中的哪一个组件中进行缓存BADATABASEBUFFERBDATADICTIONARYBUFFERCLIBRARYBUFFERDLARGEPOOLEREDOLOGBUFFER25解析后的SQL语句在SGA中的哪一个组件中进行缓存CADATABASEBUFFERBDATADICTIONARYBUFFERCLIBRARYBUFFERDLARGEPOOLEREDOLOGBUFFER26假定表A中有十万条记录要删除表中的所有数据但仍要保留表的结构请问用以下哪个命令效率最高DAdeletefroma;Bdroptablea;Ctrunctablea;Dtruncatetablea;E以上所述都不正确27若想要修改一个表的结构应该用以下哪个命令AAALTERTABLEBDEFINETABLECMODIFYTABLEDREBUILDTABLEEREVISETABLE28以下对于事务的叙述比较全面的是EA事务中的操作是一个整体要成功都成功要失败都失败B事务可以把所操作的数据库由一个状态转变到另一个状态C事务在提交之前其它事务看不到它对数据库的影响D事务提交后其结果将在数据库中得以体现E以上所述都是正确的29ORACLE9i数据库服务器不能在下列哪个OS平台上安装运行CAWindowsNTBWindows2000CWindows98DSCOUNIXERedhatLinux30列出EMP表中从事每个工种JOB的员工人数DAselectjobfromemp;Bselectjobcount*fromemp;Cselectdistinctjobcount*fromemp;Dselectjobcount*fromempgroupbyjob;Eselectjobsumempnofromempgroupbyjob;31列出JONES的所有下属员工但不包括JONES本人BAselectenamefromempconnectbypriorempno=mgrstartwithename=JONES;BselectenamefromempwhereenameJONESconnectbypriorempno=mgrstartwithename=JONES;Cselectenamefromempwhereename=JONESconnectbypriorempno=mgrstartwithename=JONES;Dselectenamefromempwhereename=JONESconnectbypriorempno=mgrstartwithenameJONES;32列出KING公司总裁的所有下属之间的层次关系但不要显示出JONES及其所有下属AAselectlevelenameempnomgrfromempconnectbypriorempno=mgrandenameJONESstartwithename=KINGBselectlevelenameempnomgrfromempconnectbypriorempno=mgrandename=JONESstartwithename=KINGCselectlevelenameempnomgrfromempconnectbypriorempno=mgrandenameJONESstartwithenameKINGDselectlevelenameempnomgrfromempconnectbypriorempno=mgrandename=JONESstartwithenameKING33求emp表中销售人员的最高和最低工资CAselectmaxsalminsalfromemp;Bselectdeptnomaxsalminsalfromempgroupbydeptno;Cselectmaxsalminsalfromempwherejob=SALES;Dselectdeptnomaxsalminsalfromempwherejob=SALESgroupbyjob;34求最高工资大于10000的部门BAselectdeptnominsalfromempgroupbydeptnohavingcountminsal1000;Bselectdeptnominsalfromempgroupbydeptnohavingcountmaxsal1000;Cselectdeptnominsalfromempgroupbydeptnohavingcountmaxsal1000;Dselectdeptnominsalfromempgroupbydeptnohavingcountminsal1000;35怎样取出在集合A中但却不在集合B中的数据AAAMIUSBBBMINUSACAINTERSECTBDBINTERSECTA36怎样取出在集合A中又在集合B中的数据CAAUNIONBBAUNIONALLBCAINTERSECTBDAMIUSB37列出每个员工及其直属领导的的名字BASELECTENAMEFROMEMPbEMPaWHEREb.MGR=a.EMPNO;BSELECTb.ENAMEa.ENAMEFROMEMPbEMPaWHEREb.MGR=a.EMPNO;CSELECTb.ENAMEa.ENAMEFROMEMPbEMPaWHEREb.MGRINa.EMPNO;DSELECTb.ENAMEa.ENAMEFROMEMPbEMPaWHEREb.MGRBETWEENa.EMPNO;38列出所有部门的职工人数包括没有职工的部门BAselectdept.deptnodnamecountemp.empnofromempdeptwhereemp.deptno=dept.deptnogroupbydept.deptnodname;Bselectdept.deptnodnamecountemp.empnofromempdeptwhereemp.deptno+=dept.deptnogroupbydept.deptnodname;Cselectdept.deptnodnamecountemp.empnofromempdeptwhereemp.deptno=dept.deptno+groupbydept.deptnodname;Dselectdept.deptnodnamecountemp.empnofromempdeptwhereemp.deptno+=dept.deptno+groupbydept.deptnodname;39列出没有职工的部门AAselectdept.deptnofromempdeptwhereemp.deptno+=dept.deptnoandemp.deptnoisnull;Bselectdept.deptnofromempdeptwhereemp.deptno+=dept.deptnoanddept.deptnoisnull;Cselectdept.deptnofromempdeptwhereemp.deptno+=dept.deptnoandemp.deptno=null;Dselectdept.deptnofromempdeptwhereemp.deptno=dept.deptno+anddept.deptnoisnull;40查找出SCOTT所在部门的所有职工DAselectcount*fromempwheredeptno=selectdeptnofromempwhereename=SCOTT;Bselectsum*fromempwheredeptno=selectdeptnofromempwhereename=SCOTT;Cselect*fromempwhereempno=selectempnofromempwhereename=SCOTT;Dselect*fromempwheredeptno=selectdeptnofromempwhereename=SCOTT;41查询EMP表中的数据并且显示出行号从1开始CAselectrowida.*fromempa;Bselectlevela.*fromempa;Cselectrownuma.*fromempa;Dselectsequencea.*fromempa;42查询出当前的数据库系统时间精确到秒BAselectto_datesysdateYYYY-MM-DDHH24:MI:SSfromdual;Bselectto_charsysdateYYYY-MM-DDHH24:MI:SSfromdual;CselectdatesysdateYYYY-MM-DDHH24:MI:SSfromdual;DselectchrsysdateYYYY-MM-DDHH24:MI:SSfromdual;43查询出所有名字以S开始的员工CAselect*fromempwhereenameinS%;Bselect*fromempwhereename=S%;Cselect*fromempwhereenamelikeS%;Dselect*fromempwhereenamelikeS_;44取出工资在2000到3000元包括上下限之间的员工DAselect*fromempwhersalin20003000;Bselect*fromempwhersallike20003000;Cselect*fromempwhersal=20003000;Dselect*fromempwhersalbetween2000and3000;45查询出EMP表中COMM字段为空的记录DAselect*fromempwherecomm=;Bselect*fromempwherecomm=null;Cselect*fromempwherenvlcomm=0;Dselect*fromempwherecommisnull;Eselect*fromempwherenvlcomm0=0;46查询出EMP表中1982年及以后入职的员工信息注:字段hiredate为入职日期数据类型为DATE型DAselect*fromempwherehiredate=19820101;Bselect*fromempwherehiredate=to_char19820101YYYYMMDD;Cselect*fromempwhereto_datehiredateYYYYMMDD=19820101;Dselect*fromempwhereto_charhiredateYYYYMMDD=19820101;47如何显示今天是星期几周一到周日分别用1~7表示DAselectto_charsysdateDfromdual;Bselectto_charsysdateWfromdual;Cselectto_charsysdateD-1fromdual;Dselectto_charsysdate-1Dfromdual;Eselectto_charsysdate-1Wfromdual;48显示本月月末的日期CAselectlast_datesysdatefromdual;Bselectfinally_daysysdatefromdual;Cselectlast_daysysdatefromdual;Dselecttail_daysysdatefromdual;49数据库必须拥有至少几个控制文件AA1B2C3D4E由初始参数指定50如果一个进程意外终止ORACLE使用下列哪一个后台进程来释放它所占用的资源DADBWnBLGWRCSMONDPMONERECO51下列哪项后台服务进程不是ORACLE例程必须要启动的EADBWnBLGWRCSMONDPMONEARCn52哪一个表空间不能切换为脱机状态DA临时表空间TEMPB用户表空间USERC索引表空间INDEXD系统表空间SYSTEM53以下关于ORACLE的说法正确的是DAORACLE是一项数据存储技术利用这项技术可以有效地提高磁盘的空间利用率BORACLE是一家IT公司以提供高效能的数据库硬件及配套软件产品而著称CORACLE是一套数据库行业标准所有SQL都要符合此标准DORACLE是美国的一家软件公司以提供同名的数据库产品而著称E以上所述都不正确54以下关于ORACLE9i的叙述正确的是AORACLE9i是一种关系型数据库服务器产品是在ORACLE8i的基础上发展起来的.BOracle9iApplicationServerAS是一种面向Internet应用的数据库服务器.COracle9iDeveloperSuiteDS是一套面向于.NET框架结构的开发工具集.DORACLE9i数据库服务器要在ORACLE9iAS和ORACLE9iDS的配合下才能提供服务.E以上所述都不正确55以下关于ORACLE的安装的叙述正确的是EAORACLE的同一安装程序可以安装到各种操作系统上BORALCEFORWINDOWS也可以被安装到UNIX系统上CORALCEFORWINDOWS服务器可以安装到WINDOWS2000Professional版上DORALCEFORWINDOWS服务器只能安装到WINDOWS2000Server版上E以上所述都不正确56在WINDOWS平台上ORACLE服务器是以哪种形式运行的BA单进程单线程BB单进程多线程C多进程多线程D多进程每个进程为单线程E以上所述都不正确57以下关于NET8的叙述正确的是DANET8是ORACLE网络客户端程序的集合BNET8是ORACLE网络服务器端程序的集合CNET8是ORACLE对TCP/IP等网络协议的改进DNET8是在TCP/IP等网络协议间进行数据格式转换E以上所述都不正确58在使用ORACLE提供的数据库访问工具时一般都需要提供用户名、口令和数据库连接串以下哪个文件中存储了对数据库连接串的定义EAconfig.oraBinit.oraClistener.oraDsqlnet.oraEtnsnames.ora59ORACLE客户端定义与服务器连接的配置文件的路径通常为DA$ORACLE_HOME/binB$ORACLE_HOME/admin/C$ORACLE_HOME/network/D$ORACLE_HOME/network/admin/E以上所述都不正确60ORACLE网络侦听器位于BAORACLE客户端BORACLE服务器端CORACLE客户端和服务器端DORACLE的中间层服务器端E以上所述都不正确61当ORACLE
9.2数据库服务器安装后将自动创建两个具有超级权限的用户并且要求设定这两个用户的口令这两个用户是BASYSTEM和MANAGERBSYS和SYSTEMCSYS和SYSMANDROOT和SUPERMANESCOTT和TIGER62以下关于数据库文件的说法正确的是EA数据库是由数据文件构成的其它文件是辅助文件B数据库中的表索引以及日志信息都是以数据的形式存储在数据文件中的C在线重做日志文件与归档日志文件的区别是:前者在内存中后者在外存上D回滚段是建立在重做日志文件基础之上的用于存储回滚事务信息.E数据块的大小一旦确定就不能更改了除非重新设定数据库63以下关于表空间的叙述正确的是DA表是表空间的基础,表空间是所有相关表所占空间的总和B表空间是由一至多个数据文件构成的,每个表占用一个数据文件C一张表可以占用多个表空间,一个表空间也可以容纳多张表D一个表空间可以容纳多张表,但一张表只能归属于一个表空间E一个空数据库是不占用表空间的64以下关于ORACLE数据块的叙述正确的是CA数据块是数据库读写的最小单位一个数据块对应一个操作系统块B一个数据块存放表中的一条记录当记录增加时数据块也相应增加C连续的数据块构成区当表的数据段需要扩展时是按区进行扩展的D数据块是数据库存储的最小单位一个数据块有时分属于不同的表空间E数据块是可以跨磁盘的这样可以优化数据库系统I/O的性能65用符号-表示组成关系下面哪一个组成关系正确表示了ORACLE数据库的逻辑存储结构BA块-段-区-表空间-数据库B块-区-段-表空间-数据库C块-表空间-区-段-数据库D块-段-表空间-区-数据库E块-区-表空间-段-数据库66当在WINDOWS平台上安装并运行ORACLE9i服务器后可通过WINDOWS服务窗口来查看其服务情况以下哪一个是数据库服务项假定服务器的SID为ORA92EAOracleORA92ManagementServerBOracleORA92AgentCOracleORA92HTTPDOracleORA92TNSListenerEOracleServiceORA9267要重新启动ORACLE数据库服务器首先要以哪种身份登录数据库AASYSDBABSYSOPERCSYSMANDSUPERMANESYSTEM/MANAGER68根据不同的需要可对数据库服务器进行相应的启动方式当以STARTUPMOUNT方式启动时以下说法正确的是BA仅仅创建一个数据库实例B创建了数据库实例并且挂载了数据库C创建了数据库实例同时也创建了数据库D打开了数据库但只能供系统用户访问E创建了数据库实例并且以只读方式打开了数据库69ORACLE客户端网络配置文件最主要的作用是AA指示NET8如何能找到数据库服务器B指示NET8如何辨别网络类型和网络协议C指示NET8如何解析机器名或IP地址D指示NET8如何转换底层网络协议的数据格式E以上所述都不正确70在ORACLE客户端网络配置文件中HOST参数值为BA客户机的IP或客户机的机器名B服务器的IP或服务器的机器名C客户机的IP和客户机的机器名D服务器的IP和服务器的机器名E以上所述都不正确71在ORACLE客户端网络配置文件中PORT参数值为AA服务器的侦听端口默认为1521B服务器的侦听端口默认为7778C中间层的接入端口默认为1521D中间层的接入端口默认为7778E以上所述都不正确72在ORACLE客户端网络配置文件中SID参数值为DA服务器的IPB服务器的机器名C服务器的数据库域名D服务器的实例名E以上所述都不正确73从某字符串中截取一部分子串可以用以下哪个函数实现EATRUNCBTRIMCLPADDINSTRESUBSTR74对数值型变量V_NUM进行四舍五入保留小数点后两位以下操作正确的是DASUBSTRV_NUM12BTRUNCV_NUM2CTRUNCV_NUM-2DROUNDV_NUM2EROUNDV_NUM-275取大于或等于变量V_NUM的最小整数应该以下哪项操作AACEILV_NUMBFLOORV_NUMCTRUNCV_NUMDROUNDV_NUM76取小于或等于变量V_NUM的最大整数应该用以下哪项操作BACEILV_NUMBFLOORV_NUMCTRUNCV_NUMDROUNDV_NUM77对于雇员表EMP中的员工薪水SAL进行分级3000元以上的为A级2000元以上到3000元为B级2000元及以下为C级以下哪此操作能实现以上要求CAselectsaldecodesal3000Asal2000BCgradefromemp;Bselectsaldecodesal3000A2000BCgradefromemp;Cselectsalcasewhensal3000thenAwhensal2000thenBelseCendgradefromemp;Dselectsalifsal3000thenAelsifsal2000thenBelseCendifgradefromemp;78列出薪水高于所在部门平均工资的员工信息BAselectdeptnoenamesalfromempawheresalselectavga.salfromempwheredeptno=a.deptno;Bselectdeptnoenamesalfromempawheresalselectavgsalfromempwheredeptno=a.deptno;Cselecta.deptnoa.enamea.salfromempaempbwherea.deptno=b.deptnoanda.salavgb.sal;Dselecta.deptnoa.enamea.salfromempaempbwherea.deptno=b.deptnoandb.salavga.sal;79在PL/SQL中定义一个名为v_name长度为60个字符的变长字符串类型的变量以下正确的是CAv_namechar60;Bv_namestring60;Cv_namevarchar260;Dv_namevarchar261;80在PL/SQL中预定义了所要查询的数据没有找到例外它是CANODATAFOUNDBDATA_NOT_FOUNDCNO_DATA_FOUNDDDATA_NO_FOUND81在PL/SQL中定义一个可以存放雇员表EMP的员工名称ENAME的PL/SQL表类型应该CAtypearrayarr_type[emp.ename%type]indexbybinary_integer;Btypetablearr_type[emp.ename%type]indexbybinary_integer;Ctypearr_typeistableofemp.ename%typeindexbybinary_integer;Dtypearr_typeispl_sqltableofemp.ename%typeindexbybinary_integer;82假定已经定义了一个名为arr_type的PL/SQL表类型那么怎样实例化一个arr_type类型的变量AAv_arrarr_type;Bv_arrisarr_type;Cv_arrofarr_type;Dv_arrarr_type%type;83对于一个名为v_arr的类型为PL/SQL表类型的变量以下对它进行引用形式正确的是BAv_arr
[1]Bv_arr1Cv_arr1Dv_arr{1}84下列关于PL/SQL的说法正确的是BAPL/SQL是应用于各种数据库上的通用语言BPL/SQL是过程化的SQL语言CPL/SQL是只能在SQL*PLUS中运行D在PL/SQL可以直接执行所有的SQL操作85关于PL/SQL块的说法正确的是BA执行部分是必须的因此声明部分也可以放到执行部分中来BPL/SQL块在执行时是统一传输给数据库服务器进行执行的C在PL/SQL中SELECT的语句的用法与在SQL*PLUS中完全一致D匿名PL/SQL块的执行效率要高于命名PL/SQL块86如何将变量v_row定义为emp表的记录类型DAv_rowemp%type;Bv_rowemp%record;Cv_rowemp%tabletype;Dv_rowemp%rowtype;87以下关于数据库过程和函数叙述正确的是AA过程和函数都是命名的PL/SQL块但执行效率要比普通PL/SQL块高B过程和函数都是命名的子程序每次执行前由数据库进行编译C过程是没有返回参数的而函数是有返回参数的D过程不带输入参数而函数是要带输入参数的88以下关于数据库包的叙述正确是的BA包是由包头和包体组成的在定义包头时必须也要同时定义好包体B包是由包头和包体组成的包头和包体是可以分别创建的C包是由包头和包体组成的包头和包体可以写在一起也可以分别定义D包是由包头和包体组成的包头是包体中所有变量的定义区而包体则只是执行代码部分89以下关于数据库例程INSTANCE和数据库关系的叙述正确是的CA一个例程只能打开一个数据库一个数据库也只能由一个例程打开B一个例程可以打开多个数据库但一个数据库可以由多个例程打开C一个例程只能打开一个数据库但一个数据库可以由多个例程打开D一个例程可以打开多个数据库一个数据库也只能由一个例程打开90以下关于SGA和PGA的叙述正确的是CAPGA是SGA的一部分SGA是共享的但分配后的PGA是不共享的BPGA是客户机内存的一部分而SGA是服务器内存的一部分CPGA和SGA都是服务器内存的一部分前者是私有的后者是共享的DPGA与SGA的总和等于服务器主机内存的总和91在数据库启动后用户权限、数据库对象的定义等信息,被存放在下列哪个区域BA库缓冲区B数据字典缓冲区C数据缓冲区D重做日志缓冲区92以下关于数据库后台服务进程叙述正确是的DADBWn负责从数据文件中读取数据到内存,并且负责将数据从内存回写到数据文件中BLGWR负责从重做日志文件中读取信息到内存,并且负责将日志信息从内存回写到重做日志文件中CSMON负责定时启动数据库并做相应的恢复和清理工作DCKPT负责向数据库发出检查点用于同步数据库的所有数据文件、控制文件和重做日志文件EPMON负责定时回收所有进程所占用的数据库资源93SQL语句的编译和执行是在SGA的哪一部分中进行的ADatabaseBufferCacheBRedoLogBufferCSharedPoolDLargePoolEJavaPool94当对数据库进程调整时要求除DBA用户外的其它用户都不能访问数据库这时可以用以下哪种数据库启动方式ASTARTUPNOMOUNTBSTARTUPMOUNTCSTARTUPRESTRICTDSTARTUPDBAESTARTUPFORCE95在关闭数据库时要求当前尚未处理完成的事务立即停止处理未完成事务进行回滚.可采用下列哪种方式ASHUTDOWNBSHUTDOWNABORTCSHUTDOWNIMMEDIATEDSHUTDOWNNORMALESHUTDOWNTRANSACTIONAL96以下关于SQL的说法正确的是ASQL是一种过程化的语言可实现各种流程控制BSQL是ORACLE所独有数据库操作语言CSQL是一种数据库的驱动程序DSQL是一种非过程化的语言也是数据库的工业标准ESQL是一种结构化和过程化相结构的语言97CREATEDROPALTER等命令属于下列哪类命令ADCLBDDLCDMLDDQLE以上所述都不正确98INSERTUPDATEDELETE等命令属于下列哪类命令ADCLBDDLCDMLDDQLE以上所述都不正确99下列哪类命令在未提交前可以通过ROLLBACK命令进行回退ADCLBDDLCDMLDDQLE以上所述都不正确100下列关于表和视图的说法正确的是A每个视图对应一个表B视图是表的一个镜像备份C对所有视图也可象表一样执行UPDATE操作D视图的数据全部在表中E视图是表结构的一个描述101有如下三步操作并且均成功执行请选择结果deletefromemp;altertableempaddaddrvarchar240;rollback;Aemp表中数据处于回滚段中Bemp表中的数据被永久删除Cemp表中的数据没有变化D原来的emp表中的数据被添加到新emp表中E以上所述都不正确102下列哪个操作可以将表中的数据删除并且不需要回滚删除后回收其所占有的空间但表定义保留ADELETEFROMEMP;BTUNCATETABLEEMP;CTUNCATETABLEEMPREUSESTORAGE;DDROPTABLEEMP;E以上所述都不正确103下面哪一个不是数据库物理存储结构中的对象A数据文件B重做日志文件C控制文件D口令文件104数据库必须拥有至少几个重做日志组A1B2C3D4E由初始参数指定105表空间默认的PCTINCREASE参数值为下列哪一个A0B10C20D50E100106回滚段的PCTINCREASE参数值为下列哪一个A0B10C20D50E100107ORACLE提供了嵌入式SQL以下对嵌入式SQL描述正确的是A将SQL语句嵌入C中就是PRO*C将PRO*C源程序直接交给C编译器进行编译和链接就可生成可执行文件B将SQL语句嵌入C中称为PRO*C将SQL语句嵌入JAVA中称为PRO*JAVACPRO*C源程序需要先由预编译器处理后才能生成C程序源文件DPRO*C就是在SQL代码中加入了C语言的控制流程EORACLE的同一个预编译器可以处理各种PRO源程序108以下ORACLE认证的级别由低到高排列正确的是AOCA-OCP-OCMBOCM-OCP-OCACOCP-OCA-OCMDOCA-OCM-OCPEOCP-OCM-OCA109WhichoneofthefollowingmemoryareasisNOTpartoftheSGAADatabaseBufferCacheBPGACRedoLogBufferDSharedPoolEJavaPool110WhichoneofthefollowingstatementsistrueAAnOracleserverisacollectionofdataconsistingofthreefiletypes.BAuserestablishesaconnectionwiththedatabasebystaringanOracleinstance.CAconnectionisacommunicationpathwaybetweentheOracleserverandtheOraleinstance.DAsessionstartswhenauserisvalidatedbytheOracleserver.111WhichoneofthefollowingstatementsaretrueabouttheSharedPoolATheSharedPoolconsistsoftheLibraryCacheDataDictionaryCacheSharedSQLareaJavaPoolandLargePool.BTheSharedPoolisusedtostorethemostrecentlyexecutedSQLstatements.CTheSharedPoolisusedforanobjectthatcanbesharedglobally.DTheLibraryCacheconsistsoftheSharedSQLandSharedPL/SQLareas.112WhichoneofthefollowingmemoryareasisusedtocachethedatadictionaryimformationADatabaseBufferCacheBPGACRedoLogBufferDSharedPoolELargePool113ORACLE数据库启动后有哪五个必要的后台进程mandatorybackgroundprocessesACKPTDBWnLGWRPMONSMONBARCnCKPTDBWnLGWRSMONCCJQ0CKPTDBWnLGWRSMONDDBWnLGWRPMONRECOSMONECKPTDBWnLMONPMONSMON114DatabaseWriter进程的作用是:AAssistswithwritingtodatafileheadersBIsresponsibleforinstancerecoveryCCleansupafterfailedprosessesDRecordsdatabasechangesforrecoverypurposesEWritesdirtybufferstothedatafiles115LGWR进程的作用是:AAssistswithwritingtodatafileheadersBIsresponsibleforinstancerecoveryCCleansupafterfailedprosessesDRecordsdatabasechangesforrecoverypurposesEWritesdirtybufferstothedatafiles116PMON进程的作用是:AAssistswithwritingtodatafileheadersBIsresponsibleforinstancerecoveryCCleansupafterfailedprosessesDRecordsdatabasechangesforrecoverypurposesEWritesdirtybufferstothedatafiles117SMON进程的作用是:AAssistswithwritingtodatafileheadersBIsresponsibleforinstancerecoveryCCleansupafterfailedprosessesDRecordsdatabasechangesforrecoverypurposesEWritesdirtybufferstothedatafiles118CKPT进程的作用是:AAssistswithwritingtodatafileheadersBIsresponsibleforinstancerecoveryCCleansupafterfailedprosessesDRecordsdatabasechangesforrecoverypurposesEWritesdirtybufferstothedatafiles119OracleDatabase包括哪三类文件AcontrolfilesdatafilesredologfilesBparameterfilebackupfilesarchivedredologfilesCpasswordfilsalertlogfilestracefilesDalertlogfilesbackgroundtracefilesusertracefilesEdatafilesredologfilesarchivedredologfiles120OracleServer由哪两个部分组成AINSTANCE和DATABASEBSGA和PGACSGA和DATABASEDServerprocess和BackgroundprocessESGA和Backgroundprocess121OracleInstance由哪两个部分组成ASharedpool和ServerprocessBSharedpool和BackgroundprocessCSGA和userprocessDPGA和userprocessESGA和Backgroundprocess122ORACLE初始化参数文件的默认路径是:A对于UNIX在$ORACLE_HOME/dbsB对于UNIX在$ORACLE_HOME/dbs/adminC对于Linux在%ORACLE_HOME%\databaseD对于Windows在%ORACLE_HOME%\dbsE对于Windows在%ORACLE_HOME%\database\admin123数据字典信息被存放在哪类文件中A数据文件B控制文件C重做日志文件D归档日志文件E初始化参考文件124在SQL语句执行前的解析阶段要判断其中涉及的表名和列名是否合法判断所依据的信息存放在APGABSHAREDPOOLCDATABASEBUFFERCACHEDREDOLOGBUFFERCACHEELARGEPOOL125当执行COMMIT语句时会在哪类文件上发生I/O操作A数据文件B控制文件C重做日志文件D归档日志文件E警告文件126当CKPT进程工作时会对哪类文件执行I/O操作A数据文件B控制文件C重做日志文件D归档日志文件E警告文件127回滚段存放在哪类文件中A数据文件B控制文件C重做日志文件D归档日志文件E警告文件128假设用户正在执行UPDATE操作此时用以下哪种方法可以关闭数据库ASHUTDOWN或SHUTDOWNIMMEDIATE或SHUTDOWNABORTBSHUTDOWN或SHUTDOWNNORMAL或SHUTDOWNTRANSACTIONALCSHUTDOWNNORMAL或SHUTDOWNABORT或SHUTDOWNIMMEDIATEDSHUTDOWN或SHUTDOWNIMMEDIATE或SHUTDOWNTRANSACTIONALESHUTDOWNABORT或SHUTDOWNIMMEDIATE或SHUTDOWNTRANSACTIONAL129以下哪类表空间中不能建立数据对象表索引ASYSTEM表空间和非SYSTEM表空间BUNDO表空间和Temporary表空间CSYSTEM表空间和Temporary表空间DSYSTEM表空间和UNDO表空间ESYSTEM表空间UNDO表空间和Temporary表空间130以下关于ORACLE物理和逻辑存储结构的说法正确的是A表空间构成数据库一个表空间可以同时为多个数据库所拥有B数据文件是构成表空间的物理基础一个数据文件可以分属于不同的表空间C数据块是最小的存储单元一个数据块对应一个操作系统块D区是由连续的数据块构成的它是构成段的基础E区是不能跨数据文件的由区构成成的段也不能跨数据文件131假定以手动方式管理数据块PCTFREE=20PCTUSED=40以下关于数据块的说法正确的是A块将一直保留20%的可用空间以防数据存储过满期B向块内插入数据不能超过块可用空间的40%C对块内的数据删除使块的使用率下降当块的已用空间降到80%以下则又可以向块中插入数据了D对块内的数据删除使块的使用率下降但使用率在40%到80%之间时是不能再向块中插入数据的E当块的已用空间超过到80%则不能再向块中插入数据也不能执行使块的已用空间超过80%的UPDATE操作132WhichdescribesthedefaultbehaviorwhenyoucreateatableAThetableisaccessibletoallusersBTablesarecreatedinthepublicschemaCTablesarecreatedinyourschemaDTablesarecreatedintheDBAschemaEYoumustspecifytheschemawhenthetableiscreated133WhichSQLstatementreturnsanumericvalueASELECTADD_MONTHSMAXhireDate6FROMEMP;BSELECTROUNDhiredateFROMEMP;CSELECTsysdate-hiredateFROMEMP;DSELECTTO_NUMBERhiredate+7FROMEMP;134YouneedtowriteaSQLstatementthatreturnsemployeenamesalarydepartmentIDandmaximumsalaryearnedinthedepartmentoftheemployeeforallemployeeswhoearnlessthanthemaximumsalaryintheirdepartment.WhichstatementaccomplishesthistaskASELECTa.enamea.salb.deptnoMAXsalFROMempadeptbWHEREa.deptno=b.deptnoANDa.salMAXsalGROUPBYb.deptno;BSELECTa.enamea.sala.deptnob.maxsalFROMempaSELECTdeptnoMAXsalmaxsalFROMempGROUPBYdeptnobWHEREa.deptno=b.deptnoANDa.salb.maxsal;CSELECTa.enamea.sala.deptnob.maxsalFROMempaWHEREa.salSELECTMAXsalmaxsalFROMempbGROUPBYdeptno;DSELECTenamesaldeptnomaxsalFROMempaSELECTdeptnoMAXsalmaxsalFROMempGROUPBYdeptnoWHEREa.salmaxsal;135AdatamanipulationlanguagestatementAcompletesatransactiononatableBmodifiesthestructureanddatainatableCmodifiesthedatabutnotthestructureofatableDmodifiesthestructurebutnotthedataofatable136对于以下SQL语句说法正确的是SELECTenameFROMempWHEREsalINSELECTMAXsalFROMempGROUPBYdeptno;A这个语句是符合语法的B这个语句是不能执行的因为缺少HAVING子句C这个语句是不能执行的因为分组的条件列不在SELECT列表中D这个语句是不能执行的因为GROUPBY子句应该在主查询中而不是在子查询中E在主查询的WHERE条件中不应该用IN而应该用等号137Youwanttocreateareportdisplayingemployeenamesdepartmentnames.Whichqueryshouldyouusetocreateanequi-joinASELECTenamednameFROMempdept;BSELECTemp.enamedept.dnameFROMempedeptdWHEREe.deptno=d.deptno;CSELECTe.enamed.dnameFROMempedeptd;DSELECTe.enamed.dnameFROMempedeptdWHEREe.deptno=d.deptno;ESELECTemp.enamedept.dnameFROMempedeptdWHEREemp.deptno=dept.deptno;138对于以下SQL语句说法正确的是SELECT*FROMEMPORDERBYsalename;ATheresultsarenotsortedBTheresultsaresortednumericallyCTheresultsaresortedalphabeticallyDTheresultsaresortednumericallyandthenalphabeticallyETheresultsaresortedalphabeticallyandthennumerically139针对以下两个SQL语句哪个说法是正确的SELECTenamesalhiredateFROMEMPORDERBYsalDESC;SELECTenamesalhiredateFROMEMPORDERBY2DESC;A两个语句执行的结果完全相同B第二个语句将返回语法错误C两个语句无需加DESC因为返回结果默认就符合这个要求D第二个语句将sal字段加一个别名就正确了E两个语句在语法上都有问题140WhichtwostatementsaboutpackagesaretrueAPackagescanbenested.BYoucanpassparameterstopackages.CApackageisloadedintomemoryeachtimeitisinvoked.DThecontentsofpackagescanbesharedbymanyapplications141有如下函数:CREATEORREPLACEFUNCTIONGET_AVG_SALARYV_DEPTNOinNUMBERRETURNNUMBERISV_AVGNUMBER;BEGINSELECTAVGSALINTOV_AVGFROMEMPWHEREDEPTNO=V_DEPTNO;RETURNV_AVG;END;以下哪个语句可以在SQL*PLUS环境中成功调用这个函数ASELECTGET_AVG_SALARYDEPTNOFROMDEPT;BEXECUTEGET_AVG_SALARY20;CGET_AVG_SALARY20;DGET_AVG_SALARY20;ESTARTGET_AVG_SALARY20142以下关于包Package的说法正确的是A包是由包头Specification和包体PackageBody两部分组成的在包体中引用的变量均要在包头部分进行定义.B在编译包头时包体也同时被自动编译但是编译包体时包头不会被编译C包头是不能脱离包体单独存在的但是可以对包头单独进行编译D包头和包体都是可以单独存在的也是可以单独进行编译的E删除包头包体也将被自动删除143在PL/SQL中用以下哪个运算符或函数可以将两个字符串连接起来AstrcatB+C||DstraddEconnect144在以下PL/SQL循环语句的括号位置应该填写foriin110loopATOB-C..DINCE++145emp表是雇员信息表sal字段存放是的雇员的月薪以下哪个变量可以存放sal类型的值Av_salemp%rowtype;Bv_salemp.sal%type;Cv_salemp.sal.%type;Dv_sal%typeemp.sal;Ev_salemp.sal%type;146emp表是雇员信息表以下哪个变量可以存放emp表中的一条记录Av_recordemp%type;Bv_recordemp%recordtype;Cv_recordemp%record_type;Dv_recordemp%rowtype;Ev_recordemp%row_type;147对于ORACLEPL/SQL标识符Identifier的有效长度是A16位B18位C24位D30位E32位148以下对PL/SQL变量的定义正确的是Av_hiredateDATE:=TO_DATESYSDATE;Bv_deptnoNUMBER2NOTNULL:=10;Cv_locationVARCHAR213:=Attanta;Dc_commCONSTANTNUMBER;Ev_countPLS_INTEGER4;149以下关于PL/SQL变量类型的说法正确的是ACHAR类型的变量比VARCHAR2类型的变量更省空间B对VARCHAR2类型变量的访问效率要高于CHAR类型的变量CBOOLEAN变量的值只有两种:TRUE和FALSEDDATE类型的变量取值可以精确毫秒EPLS_INTEGER与BINARY_INTEGER类型变量取值范围相同150以下关于PL/SQL块的说法正确的是A匿名块AnonymousBlocks是在客户端解析后再送到服务器端执行的B子程序Subprograms是被命名的PL/SQL块存储在数据库服务器端C匿名块比子程序执行效率要高D无论是匿名块还是子程序其实都是PL/SQL块在定义变量前都要以DECLARE关键字开始E过程procedure无返回值而函数function是有返回值的151在PL/SQL环境中以下说法正确的是A字符串是用单引号加以界定的B字符串是用双引号加以界定的C对于单行注释可以用双斜线//开始D多行注释是以大括号{}加以界定的E每条语句以句点.做为结束符152以下关于PL/SQL块的说法正确的是APL/SQL块是最小的程序单元因此PL/SQL块是不能嵌套使用的B为了使变量的定义清楚明了尽量在DECLARE部分进行定义但是也可以在BEGIN和END之间的执行部分定义C异常处理是PL/SQL的一个特点因此EXCEPTION部分是不可缺少的D在PL/SQL块中SELECT查询语句的用法与SQL中的用法是完全相同的E在PL/SQL块中DECLARE和EXCEPTION部分都是可以缺省的但BEGIN和END及其之间的部分是要有的153以下关于PL/SQL说法正确的是APL/SQL是对SQL标准的扩展目前已经在ORACLEDB2SQLServer等主流数据库中得到很好的支持B对于运行在不同操作系统平台上的ORACLE数据库即使是数据库版本一致但也不能直接移植PL/SQL程序CPL/SQL就是将过程化的流程控制语句嵌入到SQL命令中从而实现对SQL执行过程的控制.DPL/SQL代码中包括过程控制部分和非过程化的SQL部分在执行时由SQL*PLUS负责解析出这两部分并送到ORACLE服务器端执行.EPL/SQL是对SQL的扩展提高了性能和灵活性但它只能在ORACLE数据库上得到支持154在SQL*PLUS环境中若想通过执行PL/SQL代码来显示指定的字符串应该首先做哪项设置AsetechoonBsetoutputonCsetserveroutputonDsetdbms_outputonEsetserver_outputon155在SQL*PLUS环境中若想通过执行PL/SQL代码来显示指定的字符串以下哪个方法可行A用SQL*PLUS环境支持的SHOW命令B用DBMS_OUTPUT包的PUT_LINE过程C用PRINT命令来输出指定的字符串D用DISPLAY命令来输出指定的字符串E用DBMS_OUTPUT包的NEW_LINE过程156在PL/SQL环境中若想定义一个变量v_name要求与emp表中ename字段类型相同正确的方法是Av_nameemp.ename%TYPE;Bv_nameemp%TYPE.ename;Cv_nameename%TYPEINemp;Dv_nameename%TYPEOFem在p;Ev_name%TYPEemp.ename;157WhichbackgroundprocessupdatestheonlineredologfileswiththeredologbufferentrieswhenaCOMMIToccursinthedatabaseADBWnBLGWRCCKPTDCMMTEARCn158WhichviewshouldauserquerytodisplaythecolumnsassociatedwiththeconstraintsonatableownedbytheuserAUSER_CONSTRAINTSBUSER_OBJECTSCALL_CONSTRAINTSDUSER_CONS_COLUMNSEUSER_COLUMNS159客户端用于网络连接的两个配置文件文件是ATNSNAMES.ORA和SQLNET.ORABTNSNAMES.ORA和LISTENER.ORACTNSNAMES.ORA和INIT.ORADSQLNET.ORA和LISTENER.ORAEINIT.ORA和LISTENER.ORA160如何强制执行日志切换AALTERSYSTEMCHECKPOINT;BALTERSYSTEMCHECKPOINTFORCE;CALTERSYSTEMSWITCHLOGFILE;DALTERSYSTEMSWITCHLOGFILEFORCE;EALTERDATABASELOGSWITCH;161以下对于SQL比较运算符ANY和ALL的说法正确的是AANY表示小于最小值BANY表示大于最大值CALL表示小于最大值DALL表示大于最小值E以上说法都不正确162对于示例表EMP字段EMPNO为雇员编号字段MGR为雇员直属经理的编号KING是最高领导他的直属经理编号为空以下哪个语句能查询出JONES及其所有下属ASELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYPRIOREMPNO=MGRSTARTWITHENAME=JONES;BSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYPRIORMGR=EMPNOSTARTWITHENAME=JONES;CSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYEMPNO=PRIORMGRSTARTWITHENAME=JONES;DSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYMGR=EMPNOSTARTWITHENAME=JONES;163对于示例表EMP字段EMPNO为雇员编号字段MGR为雇员直属经理的编号KING是最高领导他的直属经理编号为空以下哪个语句能查询出SMITH及其所有上司ASELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYMGR=EMPNOSTARTWITHENAME=SMITH;BSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYPRIOREMPNO=MGRSTARTWITHENAME=SMITH;CSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYMGR=PRIOREMPNOSTARTWITHENAME=SMITH;DSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYEMPNO=PRIORMGRSTARTWITHENAME=SMITH;164对于示例表EMP字段EMPNO为雇员编号字段MGR为雇员直属经理的编号KING是最高领导他的直属经理编号为空以下哪个语句能查询出SMITH的所有上司不包括SMITH本人ASELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPWHEREENAMESMITHCONNECTBYEMPNO=PRIORMGRSTARTWITHENAME=SMITH;BSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYEMPNO=PRIORMGRANDENAMESMITHSTARTWITHENAME=SMITH;CSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPWHEREENAMESMITHCONNECTBYPRIOREMPNO=MGRSTARTWITHENAME=SMITH;DSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYPRIOREMPNO=MGRANDENAMESMITHSTARTWITHENAME=SMITH;165对于示例表EMP字段EMPNO为雇员编号字段MGR为雇员直属经理的编号KING是最高领导他的直属经理编号为空以下哪个语句能查询出KING领导下的员工但不显示SCOTT及其下属员工ASELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYEMPNO=PRIORMGRANDENAMESCOTTSTARTWITHENAME=KING;BSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPWHEREENAMESCOTTCONNECTBYEMPNO=PRIORMGRSTARTWITHENAME=KING;CSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPCONNECTBYPRIOREMPNO=MGRANDENAMESCOTTSTARTWITHENAME=KING;DSELECTLEVELENAMEDEPTNOEMPNOMGRFROMEMPWHEREENAMESCOTTCONNECTBYPRIOREMPNO=MGRSTARTWITHENAME=KING;166对于示例表EMP和DEPT如何查询出没有雇员的部门名称ASELECTDNAMEFROMDEPTDEMPEWHERED.DEPTNO+=E.DEPTNOANDD.DEPTNOISNULL;BSELECTDNAMEFROMDEPTDEMPEWHERED.DEPTNO+=E.DEPTNOANDE.DEPTNOISNULL;CSELECTDNAMEFROMDEPTDEMPEWHERED.DEPTNO=E.DEPTNO+ANDD.DEPTNOISNULL;DSELECTDNAMEFROMDEPTDEMPEWHERED.DEPTNO=E.DEPTNO+ANDE.DEPTNOISNULL;ESELECTDNAMEFROMDEPTDEMPEWHERED.DEPTNOE.DEPTNO+ANDE.DEPTNOISNULL;167查询出月薪高于所在部门平均月薪的雇员信息以下正确的是ASELECTenamesaldeptnoFROMEMPouterWHEREsalSELECTAVGsalFROMEMPinnerWHEREdeptno=inner.deptno;BSELECTenamesaldeptnoFROMEMPouterWHEREsalSELECTAVGsalFROMEMPinnerWHEREdeptno=outer.deptno;CSELECTenamesaldeptnoFROMEMPouterWHEREsalSELECTAVGsalFROMEMPinnerWHEREdeptno=deptno;DSELECTenamesaldeptnoFROMEMPouterWHEREsalSELECTAVGsalFROMEMPinnerWHEREouter.deptno=outer.deptno;168要查询出每个雇员的名称及其所在部门的名称以下哪个语句是错误的ASELECTenamednameFROMEMPNATURALJOINDEPT;BSELECTenamednameFROMEMPNATURALCROSSJOINDEPT;CSELECTenamednameFROMEMPJOINDEPTUSINGdeptno;DSELECTenamednameFROMEMPeDEPTdWHEREe.deptno=d.deptno;ESELECTenamednameFROMEMPeJOINDEPTdONe.deptno=d.deptno;169要查询出所有部门的名称以及部门中员工的名称没有没工的部门名称也要查询出来以下哪个语句是错误的Aselecte.enamed.dnamefromemperightouterjoindeptdone.deptno=d.deptno;Bselecte.enamed.dnamefromempeleftouterjoindeptdone.deptno=d.deptno;Cselecte.enamed.dnamefromdeptdleftouterjoinempeone.deptno=d.deptno;Dselecte.enamed.dnamefromempefullouterjoindeptdone.deptno=d.deptno;170对于oracle数据库,设计用户表时,家庭住址字段最好采用下面的哪个数据类型进行存储ACHARBCHAR2CVARCHARDVARCHAR2ELONG171以下的PL/SQL声明哪个是正确的?Av_idNUMBER4;Bv_xv_yv_zVARCHAR210;Cv_birthdateDATENOTNULL;Dv_in_stockBOOLEAN:=1;172Thetriggerheading:CREATEORREPLACETRIGGERsalary_checkBEFOREUPDATEOFsaljobONempFOREACHROWUnderwhichconditiondoesthistriggerfireAWhenarowisinsertedintotheEMPtableBWhenthevalueoftheSALorJOBcolumninarowisupdatedintheEMPtableCWhenanycolumnotherthantheSALandJOBcolumnsinarowareupdatedintheEMPtableDOnlywhenbothvaluesoftheSALandJOBcolumnsinarowareupdatedtogetherintheEMPtable173WhatshouldyoudoaftereachfetchstatementinthePL/SQLblockAOpenthecursorBClosethecursorCInitializetheloopDTestfortherowsusingthecursorattribute174YouareauserofPRODdatabasewhichcontainsover1000tablesandyouneedtodeterminethenumberoftablesyoucanaccess.WhichdatadictionaryviewcouldyouquerytodisplaythisinformationAUSER_OBJECTSBALL_OBJECTSCDBA_SEGEMENTSDDBA_TABLES175EvaluatethisPL/SQLblock.BEGINFORiIN
1..10LOOPIFI=4ORI=6THENnull;ELSEINSERTINTOtestresultVALUESI;ENDIF;COMMIT;ENDLOOP;ROLLBACK;END.HowmanyvalueswillbeinsertedintotheTESTtableA0B4C6D8E10Oracle的sql*plus是与oracle进行交互的客户端工具在sql*plus中,可以运行sql*plus命令与sql语句Sql*plus是一个最常用的工具,具有很强的功能,主要有
1.数据库的维护,如启动,关闭等,这一般在服务器上操作
2.执行sql语句执行pl/sql
3.执行sql脚本
4.数据的导出,报表
5.应用程序开发、测试sql/plsql
6.生成新的sql脚本
7.供应用程序调用,如安装程序中进行脚本的安装
8.用户管理及权限维护等下面就介绍一下一些常用的sql*plus命令
1.执行一个SQL脚本文件SQLstartfile_nameSQL@file_name我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理@与@@的区别是什么?@等于start命令,用来运行一个sql脚本文件@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件该命令使用是一般要指定要执行的文件的全路径,否则从缺省路径可用SQLPATH变量指定下读取指定的文件@@用在sql脚本文件中,用来说明用@@执行的sql脚本文件与@@所在的文件在同一目录下,而不用指定要执行sql脚本文件的全路径,也不是从SQLPATH环境变量指定的路径中寻找sql脚本文件,该命令一般用在脚本文件中如在c:\temp目录下有文件start.sql和nest_start.sql,start.sql脚本文件的内容为@@nest_start.sql--相当于@c:\temp\nest_start.sql则我们在sql*plus中,这样执行SQL@c:\temp\start.sql
2.对当前的输入进行编辑SQLedit
3.重新运行上一次运行的sql语句SQL/
4.将显示的内容输出到指定文件SQLSPOOLfile_name在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句
5.关闭spool输出SQLSPOOLOFF只有关闭spool输出,才会在输出文件中看到输出的内容6.显示一个表的结构SQLdesctable_name
7.COL命令主要格式化列的显示形式该命令有许多选项,具体如下COL[UMN][{column|expr}[option...]]Option选项可以是如下的子句:ALI[AS]aliasCLE[AR]FOLD_A[FTER]FOLD_B[EFORE]FOR[MAT]formatHEA[DING]textJUS[TIFY]{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}LIKE{expr|alias}NEWL[INE]NEW_V[ALUE]variableNOPRI[NT]|PRI[NT]NUL[L]textOLD_V[ALUE]variableON|OFFWRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
1.改变缺省的列标题COLUMNcolumn_nameHEADINGcolumn_headingForexample:Sqlselect*fromdept;DEPTNODNAMELOC-----------------------------------------------10ACCOUNTINGNEWYORKsqlcolLOCheadinglocationsqlselect*fromdept;DEPTNODNAMElocation------------------------------------------------10ACCOUNTINGNEWYORK
2.将列名ENAME改为新列名EMPLOYEENAME并将新列名放在两行上Sqlselect*fromempDepartmentnameSalary------------------------------10aaa11SQLCOLUMNENAMEHEADING’Employee|Name’Sqlselect*fromempEmployeeDepartmentnameSalary------------------------------10aaa11note:thecolheadingturnintotwolinesfromoneline.
3.改变列的显示长度FOR[MAT]formatSqlselectempnoenamejobfromemp;EMPNOENAMEJOB-----------------------------7369SMITHCLERK7499ALLENSALESMAN7521WARDSALESMANSqlcolenameformata40EMPNOENAMEJOB-----------------------------------------------------------7369SMITHCLERK7499ALLENSALESMAN7521WARDSALESMAN
4.设置列标题的对齐方式JUS[TIFY]{L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}SQLcolenamejustifycenterSQL/EMPNOENAMEJOB-----------------------------------------------------------7369SMITHCLERK7499ALLENSALESMAN7521WARDSALESMAN对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边
5.不让一个列显示在屏幕上NOPRI[NT]|PRI[NT]SQLcoljobnoprintSQL/EMPNOENAME--------------------------------------------------7369SMITH7499ALLEN7521WARD
6.格式化NUMBER类型列的显示SQLCOLUMNSALFORMAT990SQL/EmployeeDepartmentNameSalaryCommission---------------------------------------30ALLEN
6003007.显示列值时,如果列值为NULL值,用text值代替NULL值COMMNUL[L]textSQLCOLCOMMNUL[L]text
8.设置一个列的回绕方式WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]COL1--------------------HOWAREYOUSQLCOLCOL1FORMATA5SQLCOLCOL1WRAPPEDCOL1-----HOWAREYOUSQLCOLCOL1WORD_WRAPPEDCOL1-----HOWAREYOUSQLCOLCOL1WORD_WRAPPEDCOL1-----HOWA
9.显示列的当前的显示属性值SQLCOLUMNcolumn_name
10.将所有列的显示属性设为缺省值SQLCLEARCOLUMNS
8.屏蔽掉一个列中显示的相同的值BREAKONbreak_columnSQLBREAKONDEPTNOSQLSELECTDEPTNOENAMESALFROMEMPWHERESAL2500ORDERBYDEPTNO;DEPTNOENAMESAL------------------------------10CLARK2450MILLER130020SMITH800ADAMS
11009.在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行BREAKONbreak_columnSKIPnSQLBREAKONDEPTNOSKIP1SQL/DEPTNOENAMESAL------------------------------10CLARK2450MILLER130020SMITH800ADAMS
110010.显示对BREAK的设置SQLBREAK
11.删除
6、7的设置SQLCLEARBREAKS
12.Set命令该命令包含许多子命令SETsystem_variablevaluesystem_variablevalue可以是如下的子句之一APPI[NFO]{ON|OFF|text}ARRAY[SIZE]{15|n}AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}AUTOP[RINT]{ON|OFF}AUTORECOVERY[ON|OFF]AUTOT[RACE]{ON|OFF|TRACE[ONLY]}[EXP[LAIN]][STAT[ISTICS]]BLO[CKTERMINATOR]{.|c}CMDS[EP]{;|c|ON|OFF}COLSEP{_|text}COM[PATIBILITY]{V7|V8|NATIVE}CON[CAT]{.|c|ON|OFF}COPYC[OMMIT]{0|n}COPYTYPECHECK{ON|OFF}DEF[INE]{|c|ON|OFF}DESCRIBE[DEPTH{1|n|ALL}][LINENUM{ON|OFF}][INDENT{ON|OFF}]ECHO{ON|OFF}EDITF[ILE]file_name[.ext]EMB[EDDED]{ON|OFF}ESC[APE]{\|c|ON|OFF}FEED[BACK]{6|n|ON|OFF}FLAGGER{OFF|ENTRY|INTERMED[IATE]|FULL}FLU[SH]{ON|OFF}HEA[DING]{ON|OFF}HEADS[EP]{||c|ON|OFF}INSTANCE[instance_path|LOCAL]LIN[ESIZE]{80|n}LOBOF[FSET]{n|1}LOGSOURCE[pathname]LONG{80|n}LONGC[HUNKSIZE]{80|n}MARK[UP]HTML[ON|OFF][HEADtext][BODYtext][ENTMAP{ON|OFF}][SPOOL{ON|OFF}][PRE[FORMAT]{ON|OFF}]NEWP[AGE]{1|n|NONE}NULLtextNUMF[ORMAT]formatNUM[WIDTH]{10|n}PAGES[IZE]{24|n}PAU[SE]{ON|OFF|text}RECSEP{WR[APPED]|EA[CH]|OFF}RECSEPCHAR{_|c}SERVEROUT[PUT]{ON|OFF}[SIZEn][FOR[MAT]{WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]}]SHIFT[INOUT]{VIS[IBLE]|INV[ISIBLE]}SHOW[MODE]{ON|OFF}SQLBL[ANKLINES]{ON|OFF}SQLC[ASE]{MIX[ED]|LO[WER]|UP[PER]}SQLCO[NTINUE]{|text}SQLN[UMBER]{ON|OFF}SQLPRE[FIX]{#|c}SQLP[ROMPT]{SQL|text}SQLT[ERMINATOR]{;|c|ON|OFF}SUF[FIX]{SQL|text}TAB{ON|OFF}TERM[OUT]{ON|OFF}TI[ME]{ON|OFF}TIMI[NG]{ON|OFF}TRIM[OUT]{ON|OFF}TRIMS[POOL]{ON|OFF}UND[ERLINE]{-|c|ON|OFF}VER[IFY]{ON|OFF}WRA[P]{ON|OFF}
1.设置当前session是否对修改的数据进行自动提交SQLSETAUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}2.在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句SQLSETECHO{ON|OFF}
3.是否显示当前sql语句查询或修改的行数SQLSETFEED[BACK]{6|n|ON|OFF}默认只有结果大于6行时才显示结果的行数如果setfeedback1,则不管查询到多少行都返回当为off时,一律不显示查询的行数
4.是否显示列标题SQLSETHEA[DING]{ON|OFF}当setheadingoff时,在每页的上面不显示列标题,而是以空白行代替
5.设置一行可以容纳的字符数SQLSETLIN[ESIZE]{80|n}如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示
6.设置页与页之间的分隔SQLSETNEWP[AGE]{1|n|NONE}当setnewpage0时,会在每页的开头有一个小的黑方框当setnewpagen时,会在页和页之间隔着n个空行当setnewpagenone时,会在页和页之间没有任何间隔
7.显示时,用text值代替NULL值SQLSETNULLtext
8.设置一页有多少行数SQLSETPAGES[IZE]{24|n}如果设为0,则所有的输出内容为一页并且不显示列标题
9.是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息SQLSETSERVEROUT[PUT]{ON|OFF}在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上
10.当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句SQLSETWRA[P]{ON|OFF}当输出的行的长度大于设置的行的长度时(用setlinesizen命令设置),当setwrapon时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示
11.是否在屏幕上显示输出的内容,主要用与SPOOL结合使用SQLSETTERM[OUT]{ON|OFF}在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置settermspooloff后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度
12.将SPOOL输出中每行后面多余的空格去掉SQLSETTRIMS[OUT]{ON|OFF}13显示每个sql语句花费的执行时间setTIMING{ON|OFF}
14.遇到空行时不认为语句已经结束,从后续行接着读入SETSQLBLANKLINESONSql*plus中不允许sql语句中间有空行这在从其它地方拷贝脚本到sql*plus中执行时很麻烦.比如下面的脚本:selectdeptnoempnoenamefromempwhereempno=7788;如果拷贝到sql*plus中执行就会出现错误这个命令可以解决该问题
15.设置DBMS_OUTPUT的输出SETSERVEROUTPUTONBUFFER20000用dbms_output.put_linestrin_content;可以在存储过程中输出信息,对存储过程进行调试如果想让dbms_output.put_lineabc;的输出显示为SQLabc,而不是SQLabc,则在SETSERVEROUTPUTON后加formatwrapped参数
16.输出的数据为html格式setmarkuphtml在
8.
1.7版本也许是816不太确定以后sql*plus中有一个setmarkuphtml的命令可以将sql*plus的输出以html格式展现.注意其中的spoolon当在屏幕上输出的时候我们看不出与不加spoolon有什么区别但是当我们使用spoolfilename输出到文件的时候会看到spool文件中出现了等tag.14.修改sqlbuffer中的当前行中,第一个出现的字符串C[HANGE]/old_value/new_valueSQLl1*select*fromdeptSQLc/dept/emp1*select*fromemp15.编辑sqlbuffer中的sql语句EDI[T]16.显示sqlbuffer中的sql语句,listn显示sqlbuffer中的第n行,并使第n行成为当前行L[IST][n]17.在sqlbuffer的当前行下面加一行或多行I[NPUT]18.将指定的文本加到sqlbuffer的当前行后面A[PPEND]SQLselectdeptno2dname3fromdept;DEPTNODNAME------------------------10ACCOUNTING20RESEARCH30SALES40OPERATIONSSQLL22*dnameSQLaloc2*dnamelocSQLL1selectdeptno2dnameloc3*fromdeptSQL/DEPTNODNAMELOC-------------------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON19.将sqlbuffer中的sql语句保存到一个文件中SAVEfile_name20.将一个文件中的sql语句导入到sqlbuffer中GETfile_name21.再次执行刚才已经执行的sql语句RUNor/22.执行一个存储过程EXECUTEprocedure_name23.在sql*plus中连接到指定的数据库CONNECTuser_name/passwd@db_alias24.设置每个报表的顶部标题TTITLE25.设置每个报表的尾部标题BTITLE26.写一个注释REMARK[text]27.将指定的信息或一个空行输出到屏幕上PROMPT[text]28.将执行的过程暂停,等待用户响应后继续执行PAUSE[text]SqlPAUSEAdjustpaperandpressRETURNtocontinue.29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)COPY{FROMdatabase|TOdatabase|FROMdatabaseTOdatabase}{APPEND|CREATE|INSERT|REPLACE}destination_table[columncolumncolumn...]USINGquerysqlCOPYFROMSCOTT/TIGER@HQTOJOHN/CHROME@WESTcreateemp_tempUSINGSELECT*FROMEMP30.不退出sql*plus,在sql*plus中执行一个操作系统命令HOSTSqlhosthostname该命令在windows下可能被支持31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus!sql!$hostname$exitsql该命令在windows下不被支持32.显示sql*plus命令的帮助HELP如何安装帮助文件Sql@\sqlplus\admin\help\hlpbld.sql\sqlplus\admin\help\helpus.sqlSqlhelpindex33.显示sql*plus系统变量的值或sql*plus环境变量的值SyntaxSHO[W]optionwhereoptionrepresentsoneofthefollowingtermsorclauses:system_variableALLBTI[TLE]ERR[ORS][{FUNCTION|PROCEDURE|PACKAGE|PACKAGEBODY|TRIGGER|VIEW|TYPE|TYPEBODY}[schema.]name]LNOPARAMETERS[parameter_name]PNOREL[EASE]REPF[OOTER]REPH[EADER]SGASPOO[L]SQLCODETTI[TLE]USER
1.显示当前环境变量的值Showall
2.显示当前在创建函数、存储过程、触发器、包等对象的错误信息Showerror当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译
3.显示初始化参数的值showPARAMETERS[parameter_name]
4.显示数据库的版本showREL[EASE]
5.显示SGA的大小showSGA
6.显示当前的用户名showuser
34.查询一个用户下的对象SQLselect*fromtab;SQLselect*fromuser_objects;
35.查询一个用户下的所有的表SQLselect*fromuser_tables;
36.查询一个用户下的所有的索引SQLselect*fromuser_indexes;
37.定义一个用户变量方法有两个a.defineb.COL[UMN][{column|expr}NEW_V[ALUE]variable[NOPRI[NT]|PRI[NT]]OLD_V[ALUE]variable[NOPRI[NT]|PRI[NT]]下面对每种方式给予解释a.SyntaxDEF[INE][variable]|[variable=text]定义一个用户变量并且可以分配给它一个CHAR值assignthevalueMANAGERtothevariablePOStype:SQLDEFINEPOS=MANAGERassigntheCHARvalue20tothevariableDEPTNOtype:SQLDEFINEDEPTNO=20listthedefinitionofDEPTNOenterSQLDEFINEDEPTNO―――――――――――――――DEFINEDEPTNO=”20”CHAR定义了用户变量POS后,就可以在sql*plus中用POS或POS来引用该变量的值,sql*plus不会再提示你给变量输入值b.COL[UMN][{column|expr}NEW_V[ALUE]variable[NOPRI[NT]|PRI[NT]]NEW_V[ALUE]variable指定一个变量容纳查询出的列值例:columncol_namenew_valuevar_namenoprintselectcol_namefromtable_namewhere……..将下面查询出的col_name列的值赋给var_name变量.一个综合的例子:得到一个列值的两次查询之差此例为10秒之内共提交了多少事务:columnredo_writesnew_valuecommit_countselectsumstat.valueredo_writesfromv$sesstatstatv$statnamesnwherestat.statistic#=sn.statistic#andsn.name=usercommits;--等待一会儿此处为10秒;executedbms_lock.sleep10;setverioffselectsumstat.value-commit_countcommits_addedfromv$sesstatstatv$statnamesnwherestat.statistic#=sn.statistic#andsn.name=usercommits;
38.定义一个绑定变量VAR[IABLE][variable[NUMBER|CHAR|CHARn|NCHAR|NCHARn|VARCHAR2n|NVARCHAR2n|CLOB|NCLOB|REFCURSOR]]定义一个绑定变量,该变量可以在pl/sql中引用可以用print命令显示该绑定变量的信息如columninst_numheadingInstNumnew_valueinst_numformat99999;columninst_nameheadingInstancenew_valueinst_nameformata12;columndb_nameheadingDBNamenew_valuedb_nameformata12;columndbidheadingDBIdnew_valuedbidformat9999999999justc;promptpromptCurrentInstanceprompt~~~~~~~~~~~~~~~~selectd.dbiddbidd.namedb_namei.instance_numberinst_numi.instance_nameinst_namefromv$databasedv$instancei;variabledbidnumber;variableinst_numnumber;begin:dbid:=dbid;:inst_num:=inst_num;end;/说明在sql*plus中,该绑定变量可以作为一个存储过程的参数,也可以在匿名PL/SQL块中直接引用为了显示用VARIABLE命令创建的绑定变量的值,可以用print命令注意绑定变量不同于变量1.定义方法不同2.引用方法不同绑定变量:variable_name变量variable_nameorvariable_name
3.在sql*plus中,可以定义同名的绑定变量与用户变量,但是引用的方法不同
39.与的区别用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样当用命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值selectcount*fromempwheredeptno=deptnoval;selectcount*fromempwheredeptno=deptnoval;selectcount*fromempwheredeptno=deptnoval;将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值selectcount*fromempwheredeptno=deptnoval;selectcount*fromempwheredeptno=deptnoval;selectcount*fromempwheredeptno=deptnoval;40.在输入sql语句的过程中临时先运行一个sql*plus命令#有没有过这样的经历在sql*plus中敲了很长的命令后突然发现想不起某个列的名字了如果取消当前的命令待查询后再重敲那太痛苦了.当然你可以另开一个sql*plus窗口进行查询但这里提供的方法更简单.比如说你想查工资大于4000的员工的信息输入了下面的语句:SQLselectdeptnoempnoename2fromemp3where这时你发现你想不起来工资的列名是什么了.这种情况下只要在下一行以#开头就可以执行一条sql*plus命令执行完后刚才的语句可以继续输入SQLselectdeptnoempnoename2fromemp3where6#descempNameNullType---------------------------------------------------------------EMPNONOTNULLNUMBER4ENAMEVARCHAR210JOBVARCHAR29MGRNUMBER4HIREDATEDATESALNUMBER72COMMNUMBER72DEPTNONUMBER26sal4000;DEPTNOEMPNOENAME------------------------------107839KING
41.SQLPlus中的快速复制和粘贴技巧1鼠标移至想要复制内容的开始2用右手食指按下鼠标左键3向想要复制内容的另一角拖动鼠标,与Word中选取内容的方法一样4内容选取完毕后(所选内容全部反显),鼠标左键按住不动,用右手中指按鼠标右键5这时,所选内容会自动复制到SQL*Plus环境的最后一行
42、得到当前数据库中当前用户可见的所有表名selecttable_namefromuser_tables;。