当前位置:文档之家› 数据库及Oracle基础知识培训自学教材试题_V1 0

数据库及Oracle基础知识培训自学教材试题_V1 0

Oracle初级试题一、选择题(20% 不定项每题2分)1.对于Oracle用户方案下,根据模式/映像,请选出不属于模式的对象(D)A.表B.索引C.视图D.约束2.在客户端配置哪个文件,可以使客户端访问oracle server?(A)A.tnsnames.ora B.sqlnet.ora C.listener.ora D.init.ora3.搜索列中的数据,但只记得部分字符串,通常可以用以下哪种运算?(C)A.in B.between C.like D.exists4.如从表中删除了一条记录,以下哪个语句可以保存数据库中的改变?(B)A.savepoint B.commit C.rollback D.update5.下面关于视图的说法,请选出正确的(ABCD)A.一个视图可以创建为只读B.一个视图可以用来连接两张或更多的表而被创建C.在视图中不能含有order by子句D.在视图中不能含有group by子句6.在select语句中包含了where子句,请问group by子句可以放在哪里?(D)A.where子句前面B.from子句前面C.order by子句后面D.where子句后面7.关于having子句,以下说法正确的是:(C)A.having与where相同B.having用于单行条件查询C.having用于已分组的条件查询D.having子句必须紧跟在where子句后面使用8.能够在外部表上进行的操作有:(A)A.select B.update C.insert D.delete9.在更改索引的操作(alter index)中,以下哪些子句可以定期优化索引?(AC)A.rename B.coalesce C.rebuild D.deallocate unused10.请选出能够产生锁的操作:(AB)A.select … for update B.commit C.rollback D.lock table二、填充题(20% 每空4分)1.数据库最常用的DML操作有SELECT、UPDATE 、DELETE 和INSERT等(要求写出操作命令)。

2.假设有两个数据N1和N2,请用函数实现如下算法:当N1>N2时,返回“大于”;当N1=N2时,返回“等于”;当N1<N2时,返回“小于”。

答:create function or replace compare_numN1 number;N2 number;BeginIf N1>N2 thenReturn ‘大于’;If N1 = N2 thenReturn ‘等于’;ElseReturn ‘小于’;End;3.数据库中表的分类有:标准表、索引表、簇表和分区表。

4.查询的集合运算中,对结果按第一列排序的有union 、minus 和intersect ;对结果不消除重复行,也不排序的有union all 。

5.创建视图的一般过程为:创建select语句、测试select语句、视图修饰,规范格式和建立视图。

三、简答题(20% 每题10分)1.简述索引的作用原理与分类。

答:索引的基本原理是:为表中的数据按照某个规则建一个目录,目录会告诉数据库你要找的记录在哪里。

这样就避免了全表查询。

根据索引的顺序与数据表的物理顺序是否相同,可以把索引分成两种类型。

一种是数据表的物理顺序与索引顺序相同的聚簇索引,另一种是数据表的物理顺序与索引顺序不相同的非聚簇索引2.简述外部表的应用过程及注意点。

答:外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表。

这个外部表对于Oracle数据库来说,就好像是一张视图,在数据库中可以像试图一样进行查询等操作。

这个试图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。

不过需要注意是,外部数据表都是只读的,不能够更改。

四、操作题(40% 每题10分请将操作截图粘贴于答题区)1.按要求完成操作1)创建表DEPT(DEPT_NO varchar2(5), DEPT_NAME varchar2(30))并插入以下记录:[2%]10 销售一部10 销售一部10 销售一部20 销售二部20 销售二部20 销售二部30 销售三部30 销售三部30 销售三部Create table DEPT (Dept_no varchar2(5),Dept_name varchar2(30))Insert into dept (dept_No ,dept_name) values (‘10’,’销售一部’);Insert into dept (dept_No ,dept_name) values (‘20’,’销售二部’)Insert into dept (dept_No ,dept_name) values (‘30’,’销售三部’)2)创建表EMP(EMP_NO number, EMP_NAME varchar2(50), DEPT_NOvarchar2(5))并插入以下记录:[2%]EMP_NO7369 SMITH 207499 ALLEN 307521 WARD 307566 JONES 207654 MARTIN 307698 BLAKE 307782 CLARK 107788 SCOTT 207839 KING 107844 TURNER 307876 ADAMS 207900 JAMES 307902 FORD 207934 MILLER 10答:create table emp(EMP_NO number, EMP_NAME varchar2(50), DEPT_NO varchar2(5) );Insert into emp(emp_no ,emp_name,dept_no) values (7369,’SMITH’,’20’)……3)创建表SAL(EMP_NO number, SAL_COUNT number),并插入以下记录:[2%]EMP_NO SAL_COUNT73698007499160075211250756629757654125076982850778224507788300078395000784415007876110079009507902300079341300答:Create table sal(EMP_NO number, SAL_COUNT number) values(7369,800);Insert into sql(emp_no,sal_count) values (7369,800);……4)创建索引:在相应表的EMP_NO列上创建索引。

[1%]答:create index emp_no_index sal( emp_no);5)创建视图V_EMP_INFO,要求视图中包含职员编号、职员姓名、部门名称和销量等字段。

[3%]答:create or replace view v_emp_info select asSelect emp.emp_no,emp.emp_name,dept.dept_name,sal.sal_countfrom emp,dept,sqlWhere emp.dept_no = dept.dept_no and emp.emp_no = sal.emp_no2.消除DEPT表中的重复记录,要求以SQL方式完成。

[10%]答:3.修改EMP表,增加JOB_RANK字段,将每个部门销量最高的职员置为“MGR”。

[10%]答:alter table emp add job_rank varchar2(10);Update salSet sal_count = ‘MGR’Where sal.emp_no in (Select emp.emp_no from emp,sal,dept where emp.emp_no = dept.emp_no and emp.emp_no = sal.emp_no group by dept.dept_no having max(sum(sal.sal_count)))4.统计出最高个人销量和最低个人销量及所属部门,写出SQL并实现。

[10%]答:出最高个人销量:select emp.emp_name,max(sal.sal_count),(select dept.dept_name from emp.emp_no = dept.emp_no)From emp,salWhere emp.emp_no = sal.emp_no最低个人销量select emp.emp_name,min(sal.sal_count),(select dept.dept_name from emp.emp_no = dept.emp_no)From emp,salWhere emp.emp_no = sal.emp_no五、附加题:一句SQL完成以下任务每部门取销量前两名,作为部门统计数据,找出销量最高的部门和最低的部门。

[20%]。

相关主题