收藏 分享(赏)

数据库笔试面试题及答案解析(一).pdf

上传人:weiwoduzun 文档编号:3261575 上传时间:2018-10-09 格式:PDF 页数:41 大小:854.79KB
下载 相关 举报
数据库笔试面试题及答案解析(一).pdf_第1页
第1页 / 共41页
数据库笔试面试题及答案解析(一).pdf_第2页
第2页 / 共41页
数据库笔试面试题及答案解析(一).pdf_第3页
第3页 / 共41页
数据库笔试面试题及答案解析(一).pdf_第4页
第4页 / 共41页
数据库笔试面试题及答案解析(一).pdf_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、 1 易 错题 1.1 基础 1) 用户不能在下面哪一个视图上执行任何 DML操作? a) 使用 WITH CHECK OPTION 选项创建的视图 b) 包括 DISTINCT 关键字的视图 c) 包括 GROUP BY 子句的视图 d) 上面所有视图都允许 DML操作 e)上面所有视图都不允许 DML操作 答案: E 解析: DML(数据操作语言,它是对表记录的操作 (增、删、改 )! ) 2) 下面哪一个是有效的命令? a) SELECT*FROM books FOR UPDATE USING book_profit_idx WHERE(retail-cost)10; b) CREATE

2、 INDEX book_profit_idx ON(retail-cost) WHERE(retail-cost) 10 c) CREATE FUNCTION INDEX book_profit_idx ON books WHERE(retail-cost)10; d) a和 c e)以上命令都不是 答案: E 解析: CREATE INDEX: SQL CREATE INDEX 语法 在表上创建一个简单的索引。允许使用重复的值: CREATE INDEX index_name ON table_name (column_name) SQL CREATE UNIQUE INDEX 语法 在表上

3、创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。 Creates a unique index on a table. Duplicate values are not allowed: CREATE UNIQUE INDEX index_name ON table_name (column_name) CREATE FUNCTION INDEX: create function 函数名(参数) return 返回值数据类型 with Encryption | Schemabinding as begin SQL语句 (必须有 return 变量或值 ) E

4、nd Schemabinding :将函数绑定到它引用的对象上(注:函数一旦绑定,则不能删除、修改,除非删除绑定) 3) 下列属于关系型数据库的是() A. Oracle B MySql C IMS D MongoDB 答案: AB 解答: IMS( Information Management System )数据库是 IBM 公司开发的两种数据库类型之一 ; 一种是关系数据库,典型代表产品: DB2; 另一种则是层次数据库,代表产品: IMS 层次数据库。 非关系型数据库有 MongoDB、 memcachedb、 Redis 等。 4) 以下 SQL语句执行结果是什么? SELECT s

5、al sarisy FROM customer ORDER BY sarisy SELECT sal “sarisy“ FROM customer ORDER BY sarisy ASC a)结果完全一样 b) 第一句查出记录,第二句出现语法错误 c) 两句都查出记录,但结果不一样 答案: A 5) 简述 oracle 中 dml、 ddl、 dcl 的使用 Dml 数据操纵语言,如 select、 update、 delete, insert Ddl 数据定义语言,如 create table 、 drop table 等等 Dcl 数据控制语言, 如 commit、 rollback、 g

6、rant、 revoke 等 grant:授权。 revoke:回收授权。 6) 什么是事务、特点、在 Oracle 中具体的应用? 事务是数据库中最小的一个逻辑工作单元。 特点: ACID,分别指 事务的原子性:就是事务所包含的数据库操作要么都做 ,要么都不做 ; 事务的一致性:是事务原子性的体现,事务所对应的数据库操作要么成功要么失败没有第三种情况。事务不管是提交成功与否都不能影响数据库数据的一致 性状态 ; 事务的隔离性:事务对数据的操作不能够受到其他事务的影响 ; 事务的持续性:也就是说事务对数据的影响是永久的。 在 oracle 中已 commit 或 rollback 作为上一个事

7、务的结束标志及下一个新事物开始的标志。 7) Truncate 与 delete 的区别? delete 一般用于删除少量记录的操作,而且它是要使用回滚段并且要进行显示的提交事务。而 truncate 则使用于大量删除数据,而且隐式提交事务,其速度要比使用 delete 快的 1). Truncate 和 delete 都可以将数据实体删掉, truncate 的操作并不记录到 rollback 日志,所以操作速度较快,但同时这个数据不能恢复 2). Delete 操作不腾出表空间的空间 3). Truncate 不能对视图等进行删除 4). Truncate 是数据定义语言( DDL),而

8、delete 是数据操纵语言 (DML) 8) Oracle 使用什么语句给用户分配权限? GRANT 权限列表 TO 用户 。 9) E-R 模型 的组成包括那些元素 ( 实体 )( 属性 )( 关系 ) 10) 如果指定参照完整性的删除规则为 “级联 “,则当删除父表中的记录时( C )。 A:系统自动备份父表中被删除记录到一个新表中 B:若子表中有相关记录,则禁止删除父表中记录 C:会自动删除子表中所有相关记录 D:不作参照完整性检查,删除父表记录与子表无关 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。参照完整性又

9、称引用完整性。 参照完整性是关系模型的完整约束之一,属于数据完整性的一种,其余还有:实体完整性、用户自定义完整性。 “级联”的含义是 ( )。更新父表中的连接字段值时,用新的连接字段值 自动修改字表中的所有相关记录 实体(行)完整性: 实体完整性是对关系中的记录唯一性,也就是主键的约束。准确地说,实体完整性是指关系中的主属性值不能为 Null 且不能有相同值。定义表中的所有行能唯一的标识 ,一般用主键 ,唯一索引 unique关键字 ,及 identity属性比如说我们的身份证号码 ,可以唯一标识一个人 . 参照完整性: 参照完整性是对关系数据库中建立关联关系的数据表间数据参照引用的约束,也就

10、是对外键的约束。准确地说,参照完整性是指关系中的外键必须是另一个关系的主键有效值,或者是 NULL。参考完整性维护表间数据的有效性 ,完整性 ,通常通过建立外部键联系另一表的主键实现 ,还可以用触发器来维护参考完整性 用户自定义完整性: 用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在 0-100 之间等。 任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一

11、具体关系数据库的唯 一约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。 不同的应用有着不同的具体要求,这些约束条件就是用户根据需要自己定义的。对于这类完整性,关系模型只提供定义和检验这类完整性的机制,以使用户能够满足自己的需求,而关系模型自身并不去定义任何这类完整性规则。 11) 设有两个数据库表,父表和子表之间是一对多的联系,为控制子表和父表的关联,可以设置 “参照完整性规则 “,为此要求这两个表 ( B )。 A:在父表连接字段上建立普通索引,在子表连接字段上建立主索引 B:在父表连接字段上建立主索引,在子表连接 字段上建立普通索引 C:在父表连接字段上不需要建立任何索引,在子

12、表连接字段上建立普通索引 D:在父表和子表的连接字段上都要建立主索引 12) 数据库系统中采用封锁技术的目的是为了保证( A)? A. 数据的一致性 B. 数据的可靠性 C. 数据的完整性 D. 数据的安全性 封锁技术: 锁分为两种:一种是排他型锁( X 锁),另一种是共享型锁( S 锁)。 1、排他锁:若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A,其他事务都不能再对 A 加任何类型的所。直到 T 释放 A 上的锁。可见 X锁只允许一个事务独锁某个数据,具有排他性。 2、共享锁:若事务 T 对数据对象 A 加上 S 锁,则只允许 T 读取 A,但不能修改 A,其他事务

13、只能再对 A 加上 S 锁,这就保证了其他事务可以读 A,但在 T 释放 A 上的 S 锁之前不能对 A 进行任何修改。(允许并发读,但不允许修改。) 封锁协议: 1、一级封锁协议:事务在修改数据 A 之前必须先对其加 X 锁,直到事务结束才释放。一级封锁协议可以解决丢失更新问题。(事务结束包括正常结束( COMMIT)和非正常结束( ROLLBACK)。) 2、二级封锁协议:在一级封锁协议的基 础上,加上事务 T 在读数据 A之前必须先对其加 S 锁,读完后即可释放 S 锁。二级封锁协议可以解决读“脏”数据的问题。 3、三级封锁协议:在一级封锁协议的基础上,加上事务 T 在读数据 A之前必须

14、先对其加 S 锁,直到事务结束时释放 S 锁。三级封锁协议除了防止丢失更新和读“脏”数据外,还进一步防止了不可重复读。 13) 在数据库设计中,表示用户业务流程的常用方法是( A)? A. DFD B. 程序流程图 C. E-R 图 D. 数据结构图 DFD 图即为数据流图( Data Flow Diagram) 14) Oracle 的索引有几种,各有何用途 ? 唯一索引:索引列的所有值都只能出现一次,即必须唯一 非唯一索引:索引列的值可以重复 函数索引:保存了数据列基于 function 返回的值 反向索引:转了索引码中的字节,是索引条目分配更均匀,用于减少索引叶的竞争。 位图索引:适合与

15、决策支持系统;做 UPDATE 代价非常高;非常适合 OR操作符的查询;基数比较少的时候才能建位图索引 域索引:主要用于多媒体数据 ; 15) mysql 存储引擎常用的有 3 种,分别是什么,各自分别有什么特点,应用场景是哪些? 1.1 innoDB 优点: 支 持事务管理,崩溃修复能力和并发控制,支持自动增长列,支持外键; 缺点: 读写效率较差,占用数据空间大; 应用场景:适合于对事务完整性要求高,要求并发控制,需要频繁更新,删除等操作的数据库; 1.2 MyISAM 优点: 占用空间小,处理速度快; 缺点: 不支持事务的完整性和并发性 ; 应用场景:适用于表主要用于插入新纪录和读出记录,

16、对应用完整性和并发性要求低; 1.3 MEMORY 存储引擎 优点: 处理速度快; 缺点: 数据易丢失,生命周期短 ; 应用场景: 适用于读写速度快,对数据安全性要求低,使用相对较小的数据库表; 16) 请描述 char, varchar, nvarchar 的区别? CHAR:存储定长数据 VARCHAR:存储变长数据 NVARCHAR:存储变长数据 , Unicode 编码,支持多语言 17) 何为范式,有几种,试列举并简要描述之? 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小 第一范式(

17、1NF)实体中的某个属性有多个值时,必须拆分为不同的属性 ,确保 每一列的原子性 第二范式( 2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分 ,非键字段必须依赖于键字段 第三范式( 3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息 , 在 1NF基础上,除了主键以外的其它列都不传递依赖于主键列,或者说: 任何非主属性不依赖于其它非主属性(在 2NF基础上消除传递依赖) 18) 试论 Oracle 与 SQL Server, MYSQL 三类之区别? Oracle。 Oracle 的应用,主要在传统行业的数据化业务中,比如:银行、金融这样的对 可用性、健壮性、安全性、实

18、时性要 求极高的业务 ; 零售、物流这样对海量数据存储分析要求很高的业务 。此外,高新制造业如芯片厂也基本都离不开 Oracle;电商也有很多使用者 。 建立支持高并发的 Oracle 数据库,通过 OLTP系统用来对海量数据实时处理、操作,建立高运算量的 Oracle 数据仓库,用 OLAP系统用来分析营收数据及提供自动报表。 MySQL。 MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向, MySQL 的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于 MySQL的开 源特性,针对一些对数据库有特别要求的应用,可以

19、通过修改代码来实现定向优化,例如SNS、 LBS 等互联网业务。 MS SQL Server。 windows 生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套 win 系统装下来就齐活了。因此,不那么缺钱,但很缺 IT 人才的中小企业,会偏爱 MS SQL Server 。例如,自建 ERP 系统、商业智能、垂直领域零售商、餐饮、事业单位等等。 19) 数据库怎样实现每隔 30 分钟备份一次? 通过操作系统的定时任务调用脚本导出数据库 20) 以下不属于 Oracle 数据类型的是( C )。 A number B date C varchar

20、D varchar2 21) 如何删除 mysql 表中的重复数据,只保留一条记录? select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp 22) with check option 选项创建的视图? 首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。 1.对于 update,有 with check option,要保证 update 后,数据要被视图查询出来 2.对于 del

21、ete,有无 with check option 都一样 3.对于 insert,有 with check option,要保证 insert 后,数据要被视图查询出来 4.对于没有 where 子句的视图,使用 with check option 是多余的 23) 自然连接与内连接分别如何实现? 自然连接只对两个关系 模型中都出现的属性上取值相同的元组对进行匹配,不允许使用 ON 指定匹配条件。 24) check 约束? CHECK 约束用于限制列中的值的范围。 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。 如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进

22、行限制。 可以在定义表时添加,也可以使用 SQL语句对 Check 约束进行增删。 1.2 SQL 1) Oracle 是怎样分页的? Oracle中使用 rownum来进行分页 , 这个是效率最好的分页方法, hibernate也是使用 rownum 来进行 oralce分页的 select * from ( select rownum r,a from tabName where rownum 10 2) OLAP 和 OLTP 分别是什么有什么区别? 联机事务处理 OLTP( on-line transaction processing) 主要是执行基本日常的事务处理,比如数据库记录的增

23、删查改。比如在银行的一笔交易记录,就是一个典型的事务。 OLTP 的特点一般有: 1.实时性要求高。我记得之前上大学的时候,银行异地汇款,要隔天才能到账,而现在是分分钟到账的节奏,说明现在银行的实时处理能力大大增强。 2.数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应的数据处理与转移。 3.交易一般是确定的,比如银行存取款的金额肯定是确定的,所以 OLTP是对确定性的数据进行存取 4.高并发,并且要求满足 ACID原则。比如两人同时操作一个银行卡账户,比如大型的购物网站秒杀活动时上万的 QPS 请求。 联机分析处理 OLAP( On-Line Analytical Proces

24、sing) 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。 OLAP 的特点一般有: 1.实时性要求不是很高,比如最常见的应用就是天级更新数据,然后出对应的数据报表。 2.数据量大,因为 OLAP 支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大 ; 3.OLAP 系统的重点是通过数据提供决策支持,所以查询一般都是动态,自定义的。所以在 OLAP 中,维度的概念特别重 要。一般会将用户所有关心的维度数据,存入对应数据平台。 3) 哪 几个命令会隐

25、式产生事务 ? 隐式事务又称自动提交事务。如果运行一条 I N S E RT 语句, SQL Server将把它包装到事务中,如果此 I N S E RT 语句失败, SQL Server 将回滚或取消这个事务。每条 S Q L语句均被视为一个自身的事务。 事务的分类: 1、显式事务: ( 1)要去显式的调用 DCL。 ( 2)只有用到 COMMIT 以后才会真正写入数据库,也持久化了。 2、隐式事务: ( 1)如果人工要使用隐式事务, SET AUTOCOMMIT ON (只针对一个连接 ) ( 2)以下情况为自动提交: 1)正常执行完成的 DDL(数据定义语句)语句: create:创建

26、alter:改变 Drop:删除 Truncate:截断 /摧毁 2)正常执行完场的 DCL(数据控制语句)语句 GRANT、 REVOKE 3)正常退出的 SQLPlus 或者 SQL Developer 等客户端 DML( data manipulation language)数据操纵语言:就是我们最经常用到的 SELECT、 UPDATE、 INSERT、 DELETE。 主要用来对数据库的数据进行一些操作。 DDL( data definition language)数据库定义语言:其实就是我们在创建表的时候用到的一些 sql,比如说: CREATE、 ALTER、 DROP、 Tru

27、ncate。 DDL主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上。 DCL( Data Control Language)数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括( grant, deny, revoke 等)语句。这个比较少用到。 4) Oracle 数 据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学运算时的查询组件? A列子句 B表子句 C DUAL表 D Where子句 D dual 是一个虚拟表,用来构成 select 的语法规则, oracle 保证 dual 里面永远只有一条记录。我们可以用它来做很多事情,如

28、下: 1、查看当前用户,可以在 SQL Plus 中执行下面语句 select user from dual; 2、用来调用系统函数 select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual;-获得当前系统时间 select SYS_CONTEXT(USERENV,TERMINAL) from dual;-获得主机名 select SYS_CONTEXT(USERENV,language) from dual;-获得当前 locale select dbms_random.random from dual;-获得一个随机数 3、得到序列的下

29、一个值或当前值,用下面语句 select your_sequence.nextval from dual;-获得序列 your_sequence 的下一个值 select your_sequence.currval from dual;-获得序列 your_sequence 的当前值 4、可以用做计算器 select 7*9 from dual 5) Oracle 发出下列 select 语句: SQL select e.empno, e.ename, d.loc from emp e, dept d where e.deptno = d.deptno and substr(e.ename,

30、1, 1) = S; 下列哪个语句是 Oracle 数据库中可用的 ANSI兼容等价语句? A select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where ubstr(emp.ename, 1, 1) = S; B select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = S; C select empno, ename, loc from emp join

31、dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = S; D select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = S; A 6) 你要对操纵 Oracle 数据库中的数据。下列哪个选项表示 Oracle 中 select语句的功能,并且不需要使用子查询? A可以用 select 语句改变 Oracle 中的数据 B可以用 select 语句删除 Oracl

32、e 中的数据 C可以用 select 语句和另一个表的内容生成一个表 D可以用 select 语句对表截断 C 子查询的话就是 其实就是嵌套查询的意思 一个查询语句嵌套在另一个查询语句 中 那么称该查询语句为子查询 子查询中常用方法 1。 any 即任何一个。如果在 where 条件中加入 any,意思是大于任何 一个,也就是大于最小的 select * from emp t where t.sal any(select sal from hhgy.emp where deptno=30) 2。 some 即一些。和 any 的用法基本相同。用 any 的地方都可以用 some代替。不过 so

33、me 大多用在 =操作中。表示等于所选集合中的任何一个。当然any也可以用于 =操作中,效果和 some 相同。 select * from emp t where t.sal= some(select sal from hhgy.emp where deptno=30) 3。 all 即所有。如果在 where 条件中加入 all,意思是大于每一个,也就是大于最大的。 select * from emp t where t.sal all(select sal from hhgy.emp where deptno=30) 4。 In select * from emp t where t.d

34、eptno in(30,40) 5。 exists select * from hhgy.emp where exists(select * from hhgy.emp where deptno=30) 如果子查询得出的结果集记录较少,主查询中的表较大且又有索引时应该用 in,反之如果外层的主查询记录较少,子查询中的表大,又有索引时使用 exists。 其实我们区分 in和 exists主要是造成了驱动顺序的改变(这是性能变化的关键),如果是 exists,那么以外层表为驱动表,先被访问,如果是 IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标,那么就会考虑到索引及结果集的关系了 另

35、外 IN 是不对 NULL进行处理 7) 你要在 Oracle 中定义 SQL查询。下列哪个数据库对象不能直 接从 select语句中引用? A表 B序列 C索引 D视图 C 索引是程序自动判断是否调用的,建立完索引,直接使用查询语句即可 。建立索引的目的是为了提高查询效率。 视图 (view),也称虚表 , 不占用物理空间,这个也是相对概念,因为视图本身的定义语句还是要存储在数据字典里的。视图只有逻辑定义。每次使用的时候 ,只是重新执行 SQL。 tips: 查询视图没有什么限制 , 插入 /更新 /删除视图的操作会受到一定的限制 ; 所有针对视图的操作都会影响到视图的基表 ; 为了防止用户

36、通过视图间 接修改基表的数据 , 可以将视图创建为只读视图 (带上 with read only选项 ) 8) PROFITS 表存储公司不同地区、产品类型和季度的利润信息。下列哪个SQL语句显示不同地区、产品类型和季度的利润的交叉表输出? A select region, product_type, time, sum(profit) from profits group by region, prod_type, time; B select region, product_type, time from profits group by rollup(region, prod_type,

37、 time); C select region, product_type, time, from profits group by cube(region, prod_type, time); D select region, product_type, time,sum(profit) from profits group by cube(region, prod_type, time); D group by; group by 的顺序和 order by的顺序有讲究,必须是先分组,再排序,类似先根据专业分组,然后再按这个专业排成绩,这样更具有可比性 。 Oracle 的 group b

38、y除了基本使用方法以外,还有 3 种扩展使用方法,各自是 rollup、 cube、 grouping sets。 扩展后增加了一些实用性功能。 rollup: 假设使用 group by rollup(a,b),首先会对 (a,b)进行 group by ,然后对 a 进行 group by 。最后对全表进行 group by 操作。 Rollup 有向上归纳的意思,因此其结果也是,从后往前减少分组条件,其层次共 n+1 曾, n 为分组字段数量。 cube: 假设使用 group by cube(a,b),,则首先会对 (a,b)进行 group by,然后依次是 (a), (b),最后对

39、全表进行 group by 操作,一共是 22=4 次 grouping。比 rollup 信息更加完整,针对每一个组合都会有一次分组结果。 9) 对数据库运行下列哪个 group by查询时会从 Oracle 产生错误? A select deptno, job, sum(sal) from emp group by job, deptno; B select sum(sal), deptno, job from emp group by job, deptno; C select deptno, job, sum(sal) from emp; D select deptno, sum(sa

40、l), job from emp group by job, deptno; C 10) 要查询的 PROFITS表存储公司不同地区、产品类型和季度的利润信息。下列哪个 SQL 语句按不同地区、产品类型和季度求出平均利润大 于100000 美元的利润? A select region, prod_type, period, avg(profits) from profits where avg(prodit) 100000 group by region, prod_type, period; B select region, prod_type, period, avg(profits) f

41、rom profits where avg(prodit) 100000 order by region, prod_type, period; C select region, prod_type, period, avg(profits) from profits group by region, prod_type, period having avg(prodit) 100000; D select region, prod_type, period, avg(profits) from profits group by region, prod_type, period having

42、 avg(prodit) select dname, avg(sal) as dept_avg from emp, dept where emp.deptno = dept.deptno group by dname having avg(sal) ( select avg(sal)*1/4 from emp,dept where emp.deptno = dept.deptno ) order by avg(sal); 可以用下列哪个子句重新定义这个查询,删除子查询与主查询中组函数执行的重复? A group by B order by C with D having C With 查询语句

43、不是以 select 开始的,而是以“ WITH”关键字开头 可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理 WITH Clause 方法的优点 增加了 SQL的易读性,如果构造了多个子查询,结构会更清晰;更重要的是:“一次分析,多次使用”,这也是为什么会提供性能的地方,达到了“少读”的目标。 第一种使用子查询的方法表被扫描了两次,而使用 WITH Clause 方法,表仅被扫描一次。这样可以大大的提高数据分析和查询的效率。 另外,观察 WITH Clause 方法执行计划,其中“ SYS_TEMP_XXXX”便是在运行过程中构造的中间统计结果临时表。 1

44、2) 检查下列代码段中的脚本 dates.sql: accept v_hiredate prompt enter hire date = select empno, ename, job from emp where trunc(hiredate) = trunc( 为了使脚本正确工作,要改变哪个方面? A变量 v_hiredate 应变成接受 DATE 信息。 B查询中的 trunc()函数应删除。 C accept 命令中的 prompt 子句是多余的。 D这个脚本很好。 A ACCEPT variable NUMBER | CHAR | DATE | BINARY_FLOAT | BIN

45、ARY_DOUBLE FORMAT format DEFAULT default PROMPT text|NOPROMPT HIDE / 这里的 prompt 的作用相当于一般的操作系统命令 echo,输出后面的信息 1.TRUNC( for dates) TRUNC 函数为指定元素而截去的日期值。 其具体的语法格式如下: TRUNC( date,fmt) 其中: date 一个日期值 fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去 2.TRUNC( for number) TRUNC 函数返回处理后的数值,其工作机制与 ROUND 函数极为类似,只是该函数不对指定

46、小数前或后的部分做相应舍入选择处理,而统统截去。 其具体的语法格式如下 TRUNC( number,decimals) 其中: number 待做截取处理的数值 decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分 13) Oracle 中要生成数据库表 ,下列哪个选项是无效表生成 的语句? A create table cats(c_name varchar2(10), c_weight number, c_owner varchar2(10); B create table my_cats as select * from cats where owner =

47、ME ; C create global temporary table temp_cats(c_name varchar2(10), c_weight number, c_owner varchar2(10); D create table 51cats as select c_name, c_weight from cats where c_weight 5; D 14) 试图在 Oracle 生成表时遇到下列错误: ORA-00955-name is already used by existing object。下列哪个选项无法纠正这个错误? A以不同的用户身份生成对象。 B删除现有同

48、名对象 C改变生成对象中的列名。 D更名现有同名对象。 C 15) 员工 KING 于 1981 年 11 月 17 日聘用,你对 Oracle 数据库发出下列查询: select vsize(hiredate) from emp where ename = KING。下列哪个选项是返回的值? A 4 B 7 C 9 D 17 B, vsize(hiredate) 其实 LENGTH 与 VSIZE 这两个函数联系不大,区别很大。虽然都是“取长度”,但是 LENGTH 函数结果是“有多少个字符”, VSIZE结果是“需要多少 bytes”。 DATE 7 个字符长度,分表代表 century,

49、year,month,day,minute,second 16) SQL语句中修改表结构的命令是 ( C )_。 A: MODIFY TABLE B: MODIFY STRUCTURE C: ALTER TABLE D: ALTER STRUCTURE 17) 怎样创建一个一个索引 ,索引使用的原则 ,有什么优点和缺点 创建标准索引: CREATE INDEX 索引名 ON 表名 (列名 ) TABLESPACE 表空间名 ; 创建唯一索引 : CREATE unique INDEX 索引名 ON 表名 (列名 ) TABLESPACE 表空间名 ; 创建组合索引 : CREATE INDEX 索引名 ON 表名 (列名 1,列名 2) TABLESPACE 表空间名 ; 创建反向键索引 : CREATE INDEX 索引名 ON 表名 (列名 ) rever

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报