Oracle复习题
Oracle复习题
1、同义词是模式对象的一个别名,模式对象包括表、索引、视图等。
2、Oracle 11g的全局数据库名称由数据库名称和网域名称组成。
3、Oracle 11g数据库服务器由Oracle数据库软件和Oracle实例组成。
4、总体来说,数据库系统由数据库、硬件、软件和数据库管理员组成。
5、表空间有三种类型:永久性、临时性和还原性。
6、状态选项用于设置表空间状态,状态有读写、只读和脱机三种。
7、在Order By子句中,用于升序排列的关键字是ASC。
8、用户账号拥有的对象集称为用户的方案。
9、用于指出一个字符串是否与指定的字符串相匹配的谓词是Like。
10、禁用约束所使用的关键字是Disable。
11、段空间管理又分为手工段和自动段两种空间管理方式。
12、在Oracle系统中,为列指定别名既可以使用AS关键字,也可以不使用任何关键字而直接指定。
13、在Order By子句中,用于降序排列的关键字是DESC。
14、如果要在Oracle中另外创建索引,一般有两种方法:使用SQL Developer和PL/SQL命令。
15、激活约束所使用的关键字是Enable。
16、Oracle提供了3类运算符:算数运算符、关系运算符和逻辑运算符。
17、整个PL/SQL块分3部分:声明部分、执行部分和异常处理部分。
18、表空间有三种类型:永久性、临时性和还原性。
19、Oracle的自定义异常可以分为错误编号异常和业务逻辑异常两种。
20、能够引起触发器运行的操作就被称为触发事件。
21、一般情况下,Oracle的锁可以分为:DML锁、DDL锁和内部锁。
22、数据字典是Oracle存放数据库内部信息的地方,用来描述数据库内部的运行和管理情况。
23、用于消除结果集中的重复行的关键字是DISTINCT。
24、在Oracle中,通过游标操作数据主要使用显示游标和隐式游标。
25、事务的提交方式包括:显式提交、自动提交和隐式提交。
26、DDL锁有独占DDL锁、共享DDL锁和可破的分析DDL锁。
27、根据系统管理方式的不同,在Oracle数据库中将权限分为两大类:系统权限和对象权限。
28、角色是一个独立的数据库实体,它包括一组权限。
29、数据字典是Oracle存放数据库内部信息的地方,用来描述数据库内部的运行和管理情况。
30、按照索引列的个数又可以将索引分为单列索引和复合索引。
31、事务的状态分为:活动状态、部分提交状态、失败状态、提交状态和中止状态。
32、在建立数据库之前,必须指定数据库实例的系统表示符,此系统标识符就是SID。
33、PL/SQL中的循环语句主要包括:Loop语句、While语句和for语句3种。
34、根据异常产生的机理和原理,可将Oracle系统异常分为两大类:预定义异常和自定义异常。
35、审计用来监视和记录所选用的数据活动。
36、视图是一个虚拟表,它由存储的查询构成,可以将它的输出看作一个表。
名词解释
1、非归档模式。
非归档模式就是指在系统运行期间,所产生的日志信息不断地记录到日志文件组中,当所有重做日志组被写满后,又重新从第一个日志组开始覆写。
非归档模式的运行机制是:不备份,恢复能力有限。
特点是:缺点 占空间小 优点 恢复能力差。
2、归档模式。
归档模式就是指各个日志文件都被写满并即将被覆盖之前,先由递归进程将即将被覆盖的日志文件中的日志信息读出,并将“读出的日志信息”写入归档日志文件中,这个过程又被称为归档操作。
归档模式运行机制是:重复写数据,当文件写满重新备份再写、恢复强、占空间。
特点是:缺点 占地方 优点 恢复能力强。
3、B树索引。
Oracle的标准索引结构是是一个典型的B树结构,其包含的组件主要是:
叶子结点:包含条目直接指向表里的数据行
分支结点:包含的条目指向索引里其他的分支节点或者叶子节点
根节点:一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点

4、外键。
外键(foreign key)是指“当前表”引用“另外一个表”的某个列或某几个列,而“另外一个表”中被引用的列必须具有主键约束或者唯一性约束。
5、回退事务。
回退事务(rollback语句)是指撤销对数据库进行的全部操作,Oracle利用回退段来存储修改前的数据,通过重做日志来记录对数据所做的修改。
回退点又称为保存点,指在含有较多SQL语句的事务中间设定的回滚标记,其作用类似于调试程序的中断点。利用保存点可以将事务划分为若干部分,可以回滚到指定的保存点,保存点记录的是当前数据库的状态
在事务commit提交前,可以使用rollback 到指定的保存点,来回退到指定的保存点
在事务commit提交后,保存点会被删除,这个时候,就无法进行回退了
这里在使用保存点之前,强调一点,任何commit操作,也就是事务提交操作,都会导致savepoint的被删除!!!
6、提交事务
当执行使用commit语句可以提交事务.当执行了commit语句后,会确认事务的变化、结束事务、删除保存点、释放锁。在此之前,与当前事务相关的数据都会被加锁,直到当前事务进行了commit操作,如果在这个过程中有其他回话试图操作相关数据,(这些数据已经被当前事务加锁),那么其他回话会进行等待,或者直接返回错误。
注意:只有在提交事务之后也就是进行commit操作之后,数据才会真正的发生改变,在commit提交之前操作,全部被记录入Oracle日志系统
7、视图。
视图是一个虚拟表,它由存储的查询构成,可以将它的输出看作一个表。视图同真的表一样,也可以包含一系列带有名称的列和行数据,但是视图并不在数据库中存储数据值,其数据值来自定义视图的查询语句所引用的表,数据库只在数据字典中存储视图的定义信息。
视图是一个逻辑表,是查看表的一种方式。视图是对根据预定义的选择标准、由一个或者多个行的集合建立起来的动态表的静态定义。
8、变量。
变量是指其值在程序运行过程中可以改变的数据存储结构,定义变量必需的元素就是变量名和数据类型.另外还有可选择的初始值,其标准语法格式如下:
1 | |
9、常量。
常量是指其值在程序运行过程中不可改变的数据存储结构,定义常量必需的元素包括常量名、数据类型、常量值和constant关键字,例如一年四个季度,9月有30天,圆周率等,其标准语法格式如下:
1 | |
10、连接。
连接(Join)是把两个表中的行按照给定的条件进行拼接而形成新表。
多个数据表,每个表的信息不是独立存在,而是存在一定关系,当用户查询某个表的信息时,很可能需要查询关联数据表的信息,这就是多表关联查询。
简答题
1、在Oracle 11g系统中,约束的类型包括哪几种?
约束分为5种: 非空(NOT NULL)约束、 唯一性(UNIQUE)约束、主键(PRIMARY KEY)约束、外键(FOREIGN KEY)约束、检查(CHECK)约束。
非空(NOT NULL)约束:顾名思义,所约束的列不能为NULL值。否则就会报错
唯一(UNIQUE)约束:在表中每一行中所定义的这列或这些列的值都不能相同。必须保证唯一性。否则就会违法约束条件。主键(PRIMARY KEY)约束:唯一的标识表中的每一行,不能重复,不能为空。 创建主键或唯一约束后,ORACLE会自动创建一个与约束同名的索引(UNIQUENES为UNIQUE唯一索引)。需要注意的是:每个表只能有且有一个主键约束。
外键(FOREIGN KEY)约束:用来维护从表(Child Table)和主表(Parent Table)之间的引用完整性. 外键约束是个有争议性的约束,它一方面能够维护数据库的数据一致性,数据的完整性。防止错误的垃圾数据入库; 另外一方面它会增加表插入、更新等SQL性能的额外开销,不少系统里面通过业务逻辑控制来取消外键约束。例如在数据仓库中,就推荐禁用外键约束。
检查(CHECK)约束:表中每行都要满足该约束条件。条件约束既可以在表一级定义也可以在列一级定义。在一列上可以定义任意多个条件约束。
REF约束的定义:REF column by definition references an object in another object type or in a relational table. A REF constraint lets you further describe the relationship between the REF column and the object it references.
2、Oracle 11g默认创建的主要表空间有哪些?
SYSTEM、USERS、TEMP、SYSAUX、UNDOTBS1、EXAMPLE
SYSTEM:system表空间是永久表空间,用于存储SYS用户的表、视图、存储过程对象。
每个ORACLE数据库至少有一个SYSTEM表空间,这是数据库创建时自动创建的。
USERS:users表空间是永久表空间,存储数据库用户创建的数据库对象
TEMP:temp表空间是临时表空间,用户存储SQL语句处理的表示索引信息。
SYSAUX:作为SYSTEM的辅助表空间。
UNDOTBS1:Undotbs1表空间是存储撤销信息的undo表空间。
EXAMPLE:安装Oracle数据库示例的表空间
3、Oracle的系统全局(SGA)的主要部件有哪些?
SGA是所有用户进程共享的一块内存区域,主要部件有高速数据缓冲区、共享池、重做日志缓冲区、Java池和大型池。
(1)数据高速缓冲区:存放着Oracle系统最近使用过的数据库数据块。
(2)共享池:相当于程序高速缓冲区,所有的用户程序都存放在共享SQL池中。
(3)重做日志缓冲区:用于缓冲区在对数据进行修改的操作过程中生成的重做记录.
(4)大型池:在SGA区中不是必需的内存结构,只在某些特殊情况下,实例需要使用大型池来减轻共享池的访问压力,常用情况有:备份和恢复、执行具有大量排序操作的SQL语句、使用并行查询时。
4、在哪些情况下,实例需要使用大型池来减轻共享池的访问压力?
(1)使用恢复管理器进行备份和恢复操作时,大型池将作为I/O缓冲区使用。
(2)使用I/O Slave仿真异步I/O功能时,大型池将被作为I/O缓冲区使用。
(3)执行具有大量排序操作的SQL语句。
(4)当使用并行查询时,大型池作为并行查询进程彼此交换信息的地方。
5、回滚到指定保存点时,将完成哪些主要的工作?
- 回滚保存点之后的部分事务。
- 删除在该保存点之后建立的全部保存点,但保留该保存点,以便多次回避。
- 解除保存点之后表的封锁或行的封锁。
6、自治事务提供了一种利用PL/SQL控制事务的新方法,可以用于哪几种情况?
- 顶层匿名块
- 本地(过程中的过程)、独立或打包的函数和过程
- 对象类型的方法
- 数据库触发器
编程题
1、在scott模式下,创建学生表(XSB),其表结构如下:
| 列名 | 数据类型 | 是否可空 | 默认值 | 说明 | 列名含义 |
|---|---|---|---|---|---|
| XH | char(6) | ╳ | 无 | 主键 | 学号 |
| Xm | char(8) | ╳ | 无 | 姓名 | |
| Xb | char(2) | ╳ | “男” | 性别 | |
| Cssj | date | ╳ | 无 | 出生日期 | |
| Zy | char(12) | √ | 无 | 专业 | |
| Zxf | number(2) | √ | 0 | 总学分 | |
| Bz | varchar2(200) | √ | 无 | 备注 |
1 | |
2、在scott模式下,创建课程表(KCB),其表结构如下:
| 列名 | 数据类型 | 是否可空 | 默认值 | 说明 | 列名含义 |
|---|---|---|---|---|---|
| KCH | char(3) | ╳ | 无 | 主键 | 课程号 |
| KCM | char(16) | ╳ | 无 | 课程名 | |
| KKXQ | number(1) | √ | 1 | 开课学期 | |
| XS | number(2) | √ | 0 | 学时 | |
| XF | number(1) | ╳ | 0 | 学分 |
1 | |
3、假设有一个与jobs表结构一样的表jobs_temp,然后将jobs表中最高工资额(max_salary)大于10000的记录插入到新表jobs_temp中。
1 | |
4、在scott模式下,把emp表中职务为销售员(SALESMAN)的工资上调20%。
1 | |
5、在emp表中,查询工资大于部门编号为10的任意一个员工工资的其他部门的员工信息(包括部门编号,员工名和工资)。
1 | |
6、在Scott模式下,查询emp表中所有管理者所管理的下属员工信息。
1 | |
7、声明一个检索emp表中雇员信息的游标,该游标名为cur_emp,然后打开游标,并指定检索职务是“MANAGER”的雇员信息(包括:empno,ename,sal),接着使用fetch…into语句和while循环读取游标中的所有雇员信息,最后输出读取的雇员信息。
1 | |
8、在Scott模式下,把emp表中销售员(即SALESMAN)的工资上调20%,然后使用隐式游标sql的%rowcount属性输出上调工资的员工数量。
1 | |