1、ELT笔试题 资料仅供参考 ELT 笔试题 (难易比例 60%,40%) 一 .选择题 (每题 1分) 1、在sql的查询语句中,用于分组查询的语句是( c )。 a)order by b)where c)group by d)having 2、在“学生情况.dbf”表中,查询计算机专业、助学金大于40元的学生的姓名,正确的语句是( c )。 a)select 姓名 from 学生情况 where 计算机 .and.助学金<40 b)select 姓名 from 学生情况 where 专业=“计算机”.or.助
2、学金>40 c)select 姓名 from 学生情况 where 专业=“计算机”.and.助学金>40 d)select 姓名 from 学生情况 where 专业=“计算机”.and.助学金<40 3、下列sql语句中,修改表结构的是( a )。 a)alter b)create c)desc d)rename 4、已知职工表emp有工号e_no和工资e_sal两个字段。从职工关系中检索所有工资值,要求在输出结果中没有重复的工资值,则sql的命令语句能实现上述功能的是( b )。 a)select all
3、 e_sal from emp b)select distinct e_sal from emp c)select e_sal from emp d)select e_sal where emp 5、请选出属于dml的选项( c ) a) truncate b)creat c)delete d)commit 6、视图存放在哪里( b ) a.数据库的表中 b.数据字典的select语句中 c.from列表的第一个表格的select语句中 d.列
4、表的第二个表格的select语句中 7、当fetch执行失败时,哪种游标的属性值为true( c ) a.%isopen b.%found c.%notfound d.%rowcount 8、下列那些说法是正确的( b ) a) 一个事务中的某条sql命令提交时,其它sql命令能够不提交。 b) 在一个关系表中,主键可唯一标识一行记录。 c) 一个关系表中的外键必定是另一表中的主键。 d) 回滚能够在事务失败时,回到操作事务前的数据状态。 9、假如
5、一个变量的值为null,有一条if语句, if变量=null 分支1 else 分支2 请问最终执行的结果是( b ) a) 分支1 b)分支2 c)系统错误提示 d)都没有执行 10、关于主键(primary key)和唯一索引(unique index)的说法哪些是错误的?( c ) a、 唯一索引的列允许为null值 b、 主键的列不允许为null值 c、 一个表只能有一个唯一索引 二 基础概念 (每题2分 ) 1 oracle 索引的种类及它们各自有缺点? 树形 适用于冗
6、余度低的字段, SELECT语句、UPDATE和DELETE命令的WHERE子句的性能(当访问的行较少时)能够从索引中获益 位图 适用于冗余度高的字段,在批量dml操作时没有性能影响 2 Oracle 中那些情况不会使用到索引 ? 列上含有 null值 在索引列上使用函数时 当查询的数据量占整个表的比重较大时或索引对象超过表大小时 <> like '%dd'百分号在前 not in ,not exist. 3 触发器中能否使用commit,为什么? 不能,触发器随事务提交 4 Oracle 中视图的种类及其各自的特点 ? 普通视图 固化视图 5
7、为什么存储过程要比单纯的Sql 语句执行起来要快? 存储过程预编译 6 Oracle 中 dba ,all user 开头的视图有什么区别 ? User 该用户自己创立的对象 All 该用户自己创立和能够访问的对象 Dba 数据库所有对象 7 写出该函数的作用 Round 四舍五入 Mod 取余 To_date 日期字符转换时间格式 To_char 时间格式转换日期字符 Sqrt 开平方 Trim 去掉空格 Replace 替换字符 Concat 字符连接 8 具体写出oracle 内存的主要组成, ? UGA Shared poo
8、l Database Buffer cache Large pool Redo Log Buffer Java Pool 9 请简述 Rowid 对应的块(行号+行对应的偏移量) 作用:快速定位一条记录及所在物理文件 10 什么是事务,它和锁有什么关系 ? 事务 :是一个逻辑工作单元内的sql,要么都执行,要么都不执行 锁 :是实现事务的关键,锁能够保证事务的完整性和并发性 11 写出 truncate 和 delete 的区别 ? 两者都能够用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动 HWK,不需要rollback segm
9、ent . 而Delete是DML操作, 需要rollback segment 且花费较长 时间. 12 union all 与 union 性能上的区别 ? union all 直接连接查询两张表中相同列名的所有数据 union 排序连接查询的两张表中相同列名的数据的并集 13 请具体说明 exists 与 in 的 区别 ? Exists 其运行方式是先运行主查询一次 再去子查询里查询与其对应的结果 In返回结果集的子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表 14 数据库正常启动经历的过程? Nomount 读取spfile文件 Mo
10、unt 读取控制文件 Open 打开数据 15 select deptno,sum(sal) from emp where sal<3000 group by deptno having sum(sal)>1000 order by sum(sal) 写出这题sql语句的执行顺序 先where 再group 再having 再select 后order 三 简答题(或者上机) (前3题每题10分,4题每问6分) 1)不借助第三方工具查看执行计划 答 方法1.set autot on 方法2.创立 plan_table表 EXPLAIN PLAN
11、FOR select * from emp1; select * from table(dbms_xplan.display) dbms_xplan.display_cursor('sql_id') v$sql_plan 方法3.sql_trace 方法4.10046 事件 2) 学生 科目 成绩 student1 语文 80 student1 数学 70 student1 英语 60 student2 语文 90 student2 数学 80 student2 英语 100 将上述表结构信息转换为 学生 语文 数学 英语 studen
12、t1 80 70 60 student2 90 80 100 答 : select student,sum(decode(subject,‘语文‘, grade,null)) "语文", sum(decode(subject,‘数学‘, grade,null)) "数学", sum(decode(subject,‘英语‘, grade,null)) "英语" from table group by student 3) RID RNAME PID ISLEAF ALEVEL 1 1 IT课程 0 0
13、0 2 2 开发类 1 0 1 3 3 Shell编程 2 1 2 4 4 C# 2 1 2 5 5 Oracle 2 0 2 6 6 pl/sql 5 1 3 7 7 维护类 1 0 1 8 8 Linux维护 7 1 2 9 9 JAVA 2 0 2 10 10 JSP 9 1 3 isleaf 0非叶子节点(下面还有数据) 1叶子节点(下面没有数据) alevel 为第几节点 0 为根节点 将上述能容以树形结构显示 IT课程 开发类 Shell编程
14、 C# Oracle pl/sql JAVA JSP 维护类 Linux维护 答 : create or replace procedure p_recursion (v_pid recursion.pid%type,v_alevel binary_integer) is cursor c is select * from recursion where pid=v_pid; v_preStr varchar2(50):=''; beg
15、in for i in 1..v_alevel loop v_preStr:=v_preStr||' '; end loop; for v_recursion in c loop dbms_output.put_line(v_preStr||v_recursion.rname); if (v_recursion.isleaf=0) then p_recursion(v_recursion.rid,v_recursion.alevel+
16、1); end if; end loop; end; 4) EMP 表 EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 1 7369 SMITH CLERK 7902 1980-12-17 800.00 20 2 7499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 30 3 7521 WARD SALESMAN 7698 1981-2-22 1250.00 500.00
17、 30 4 7566 JONES MANAGER 7839 1981-4-2 2975.00 20 5 7654 MARTIN SALESMAN 7698 1981-9-28 1250.00 1400.00 30 6 7698 BLAKE MANAGER 7839 1981-5-1 2850.00 30 7 7782 CLARK MANAGER 7839 1981-6-9 2450.00 10 8 7788 SCOTT ANALYST 7566 1987-4-19 3000.00 20 9
18、7839 KING PRESIDENT 1981-11-17 5000.00 10 10 7844 TURNER SALESMAN 7698 1981-9-8 1500.00 0.00 30 11 7876 ADAMS CLERK 7788 1987-5-23 1100.00 20 12 7900 JAMES CLERK 7698 1981-12-3 950.00 30 13 7902 FORD ANALYST 7566 1981-12-3 3000.00 20 14 7934 MILLER
19、 CLERK 7782 1982-1-23 1300.00 10 DEPT 表 DEPTNO DNAME LOC 1 10 ACCOUNTING NEW YORK 2 20 RESEARCH DALLAS 3 30 SALES CHICAGO 4 40 OPERATIONS BOSTON 1.每组工资最高的人的资料 select ename , sal , deptno from emp where sal in (select max(sal) from emp group by deptno); 2.每个部
20、门中低于本部门平均工资的人
select ename,sal,emp.deptno,t.sal_avg from emp join (select avg(sal)sal_avg,deptno from emp group by deptno) t on (emp.sal
21、4 and r<=8; 4.不用组函数求薪水最高 select sal from emp where sal not in (select distinct e1.sal from emp e1,emp e2 where e1.sal < e2.sal ) 5.直属领导下大于2名员工的人 select count(mgrNO),mgrName from (select e1.empno mgrNO,e1.ename mgrName,'--',e2.empno em,e2.ename en from emp e1 ,emp e2 where e1.empno=e2.mgr) group by mgrName having count(mgrNO)>2;






