从零开始学 Oracle 练习题答案(7-8)
前言: 在阅读《从零开始学 Oracle 》的时候,发现课后习题可以帮助自己回忆这一章节的内容。但是,没能找到题目的答案,于是自己总结了一份,这里是第7章、第8章。
第七章 序列和同义词
一、填空题
- 在Oracle中,可以使用CREATE SEQUENCE语句创建序列。
- 要获取序列的下一个值,需要使用NEXTVAL伪列。
- 要获取序列的当前值,需要使用CURRVAL伪列。
- 在Oracle中,同义词可以分为两种类型,分别是公有同义词和私有同义词。
二、选择题
当使用CREATE SYNONYM语句创建同义词时,默认创建的是:
A. 公有同义词
B. 私有同义词
C. 序列
D. 伪列【B】默认创建的是私有同义词,公有同义词需要加PUBLIC
如果要使序列在达到MAX VALUE值后再重新开始,则需要在创建序列时指定哪个关键字?
A. INCREMENT BY
B. CYCLE
C. NOCYCLE
D. CACHE【B】INCREMENT BY用于定义序列的步进值;CYCLE代表序列达到最大值后循环生成;NOCYCLE代表序列达到最大值后不循环;CACHE定义存放序列的内存块大小
三、问答题
比较Oracle序列与SLQ Server自增字段的不同之处。
数据序列与数据库表进行分离,使得序列具有了全局特性,这在进行SQL编程或者是PL/SQL程序设计是有时候非常有用。序列不再像自增字段那样无法控制,也就是说在编程时可以提前获知当前的序列号,避免了在程序设计时要往返查询的麻烦。
请介绍一下同义词的使用时机。
同义词的出现为Oracle解决了很多命名的问题。例如在书中介绍Oracle使用方案对数据库进行管理时,如果用户scott用户要访问hr方案下的employees表,必须要使用hr.employees这样的名称,否则系统在当前方案下找不到相应的对象时就会提示“表或视图找不到”的错误。很多时候,这样的名称会导致后期的维护出现大的问题,而通过Oracle的同义词,可以为hr方案下的部分对象编写同义词,这样其他用户就可以通过同义词来访问employees对象,而不用通过hr.employees,既方便了用户,又使得以后的维护变得更轻松。
第八章 SQL查询
一、填空题
- 在SELECT语句中,如果要查询所有的字段内容,则使用通配符** \*。
- ORDER BY子句指定了排序方式,其中升序使用关键字ASC, 降序使用关键字DESC。
- 要查询不重复的字段列的数据,需要使用关键字DISTINCT。
- 在表中 ROWID 伪列记录了行的物理地址,ROWNUM 伪列是对行的动态编号。
二、选择题
现有 emp 和 dept 表,通过 deptno 进行主外键关联,如果要查询 emp 表中所有的内容,下面的连接语法哪种是正确的?
A. emp.deptno(+)=dept.deptno
B. emp.deptno(+)=dept.deptno(+)
C. emp.deptno=dept.deptno(+)
D. emp.deptno=dept.deptno【C】emp表是左表,当 + 出现在右边,表示返回左表的所有数据。
如果有一个测试环境要产生大量的随机数据,可以选择哪种连接来轻松完成?
A. 左连接
B. 右连接
C. 交叉连接
D. 自然连接【C】交叉连接是将A表中的记录行数与B表中的记录行数相乘得到的结果,交叉查询可以很方便地产生大量数据。
三、问答题
请简单介绍一下分组查询的作用。
分组查询又称为同级查询,通常用来对数据进行汇总计算,比如想知道每个部门中所有员工的最高工资,想了解每个部门的人员分布情况或者是每种类型的职位的平均薪资,这些需求可以使用SQL的分组查询来实现。
使用左连接的情况。
当需要获取连接的左边的表的所有数据时使用左连接。
还没有评论,来说两句吧...