一、Oracle数据库体系结构和SQL*Plus

1. 掌握Oracle服务器体系结构的以下概念:

l Oracle服务器是由什么组成的?由Oracle数据库和Oracle实例组成。熟悉Oracle的构架。

l 掌握Oracle数据字典的概念、结构和作用。

l 了解Oracle 服务器的工作过程。

l 掌握数据字典视图类别(DBA_***,ALL_***,USER_***)和动态性能视图(V$视图)。

l 何谓Oracle的实例?Oracle实例是运行在内存中的Oracle软件,主要包括Oracle内存结构和一些Oracle进程。

2. 掌握Oracle的内存结构:

l 内存结构的组成:系统全局区(SGA)+程序全局区(PGA)。在共享特性方面,SGA与PGA有何区别?程序全局区(PGA)是由单个进程使用的内存区域,它是不共享的;系统全局区(SGA)为所有数据库进程所共享,是ORACLE的通信中心。

l 了解SGA的结构。主要掌握数据库高速缓存(Database Buffer Cache)的作用。

l 何谓Oracle进程?进程结构的组成:用户进程(User Process)和Oracle进程。用户进程和服务器进程的功能是什么?

3. 了解Oracle数据库存储结构。Oracle数据库采用了两种存储结构:逻辑存储结构和物理存储结构

l 掌握逻辑存储结构中段、区间和数据块之间的关系。

l 哪个表空间是Oracle数据库必备的?系统表空间(System Tablespace)。

l Oacle数据库存储的最小I/O单位是什么?

l Oracle物理存储结构的组成是什么?数据文件、控制文件、重做日志文件和归档日志文件。

4. 何谓SQL*PLUS? 掌握SQL语句与SQL*Plus 命令的比较。

SQL语句 SQL*Plus 命令
一种语言 一种环境
为ANSI标准 由Oracle提供
Keyword不能简写 Keyword可以简写
SQL语句能操纵数据库中的数据和表 SQL*Plus 命令不能操纵数据库中的数据值
句末用 ;号结束 无须 ;号结束,立即执行
用函数来实现数据的格式化 用命令来格式化数据

5. 会用一些常用的SET命令来设置SQL*PLUS环境。(linesize,pagesize)

6. 在SQL*Plus中,用来执行缓冲区中的SQL语句所使用的命令是什么?

7. 查看表结构和表有什么方式?掌握这些方式。(DESC[RIBE]命令、USER_TABLES字典、SELECT * FROM tab;)

二、SQL语句

8. 熟悉Oracle的常用字段类型。

9. 熟练掌握创建表、修改表和删除表的方法。主要是创建表的方法,创建表包括如下因素:创建表的基本命令格式、合法的表名、模式名、字段描述、表的各种约束(值约束:NOT NULL、UNIQUE和CHECK; 完整性约束:Primary Key、Foreign Key。共5种约束)、列级约束和表级约束、On Delete Cascade(连带删除)选项。

  1. 10. 熟练掌握SQL语句的各种查询方法:

l 简单查询:连接符||的使用、原义字符串、distinct的使用、关系代数运算中选择和投影的实现、替代变量、伪列(ROWNUM和ROWID)、null值(任何包含空值的算术表达式运算后的结果都为空值NULL,能处理NULL值的比较运算符是什么?)、列标题的别名、查询条件句中的between、not between、like(通配符%和_的使用),复杂查询条件中逻辑运算符NOT,AND和OR的优先级顺序。

l 分组查询(单表上):对查询结果的排序、分组统计与筛选技术

select…from… where…group by…having

聚集函数:count, sum, avg, max, min

l 连接查询:不等值连接、内连接、外连接和自身连接查询

l 子查询:嵌套查询、相关与不相关子查询和带谓词演算的查询:
in(等价于 =ANY )、not in、all、any、exists)。

子查询的应用(与其他DML和DDL语言一同使用子查询)包括:

1)用子查询创建表:create table…as select …

2)使用(多列)子查询更新记录:Update 表名 set 字段名=select…

3)使用子查询插入多行:insert into 表名…select …

4)使用子查询删除记录:可以在DELETE语句中基于另一个表删除本表记录,DELETE FROM表名 where字段名=select …

5)在 FROM 子句中使用子查询

6)TOP-N分析

注意:

1) 单行运算符(>, =, >=, <, <>, <=)与多行子查询是不匹配的。多行运算符 (IN, ANY, ALL)才能匹配多行子查询。

2) 子查询中的空值:所有的条件和空值比较结果都是空值。

  1. 11. 了解SQL对传统集合运算并、交、差的实现技术。
  2. 12. 掌握DDL,DML和DCL的含义。
  3. 13. 掌握SQL常用函数的使用方法:

单行函数:

数值型函数:ceil(),floor(),mod(),round(),sqrt(),abs(),
trunc(),sign()

字符型函数:instr(),concat(),lower(),upper(),substr(),
length(),trim(),ascii(),chr(),rpad(),lpad()

日期型函数:sysdate,months_between(),NEXT_DAY()。日期可以进行运算并返回日期型数据或数值型数据。

转换函数:to_char(),to_date()

多行函数:

聚集函数(又称组函数):avg(),count(),min(),max(),sum()。组函数会忽略列中的空值,除了COUNT(*)。如果在查询中使用了组函数,任何不在组函数中的列或表达式都必须包含在GROUP BY子句中。注意聚集函数对DATA类型数据的处理。

decode函数:decode()

NVL 函数:

可使用虚拟表DUAL查看函数。

  1. 14. 熟练掌握SQL对记录的插入、删除和修改技术:

插入单行:insert语句;插入多行(使用子查询):insert…select;

表间数据复制(用子查询创建表):create table…as select;

修改记录值:update语句, update语句中的CASE语句

删除记录值:delete语句;

删除所有记录值(但没有删除表本身):truncate(为永久删除,不能rollback)语句;

  1. 15. 熟练掌握某些数据库对象的创建、删除与使用方法。包括索引、视图、序列和同义词。
  2. 16. 索引的作用是什么?应创建索引的列具有什么特征?
  3. 17. 要求在序列使用中会正确运用NEXTVAL 和 CURRVAL 伪列。
  4. 18. 了解创建同义词的意义是什么?

三、游标与程序设计

  1. 19. 熟悉PL/SQL变量类型(标量、复合、引用和大型对象LOB类型)及其各自的组成。
  2. 20. 掌握PL/SQL变量和常量的声明、初始化和赋值的方法。
  3. 21. 熟悉PL/SQL的基本标量类型:

字符族:char、varchar2、long;

数字族:number、binary_integer、pls_integer;

日期族:date;

原族:raw、long raw;

布尔族:boolean;

  1. 22. 布尔变量有哪几种值可使用?(TRUE、FALSE和 NULL)
  2. 23. 掌握PL/SQL复合数据类型(表类型和记录类型)的声明、创建和使用方法。重点掌握复合数据类型的正确引用方法。

l  PL/SQL 记录(RECORD):记录结构、引用和初始化记录中的域和记录赋值。

l  PL/SQL 表(了解):[索引]表TABLE和嵌套表Nested TABLE。表的结构、引用表、表元素的赋值。

l  PL/SQL 表记录(二维结构)(了解):表记录的结构、引用表记录、为表元素赋值。

l  数组(VARRAY)(了解)

  1. 24. 掌握 PL/SQL 表内置方法的使用(表名.方法名)。通过内置方法,可以获得表信息。
  2. 25. 熟练掌握用%type属性声明变量和用%rowtype属性声明记录变量的方法。使用%rowtype属性声明记录变量的优点是什么?
  3. 26. 熟练掌握利用DBMS_OUTPUT包在PL/SQL中显示输出结果的方法。(SET SERVEROUTPUT ON)
  4. 27. 何谓游标?游标有哪几种?会区分显式游标和隐式游标。
  1. 28. 隐式游标的名称是什么(SQL游标)?隐式游标的属性有哪些(SQL%rowcount、SQL%found、SQL%notfound和SQL%isopen)?
  2. 29. 控制显示游标的基本操作流程是什么?游标中的数据能否被修改?
  3. 30. 熟练掌握游标操作流程 (声明declare、打开open、提取fetch、游标的属性测试、关闭close游标) 和游标命令的使用方法。
  4. 31. 游标有哪几种属性?熟练掌握用游标属性获取游标状态信息的方法。显式游标的属性:%rowcount、%found、%notfound和%isopen。
  5. 32. 掌握参数化游标的使用方法。
  6. 33. 了解游标变量的概念和使用方法。游标变量类型包括:弱类型和强类型。
  7. 34. 熟练掌握在FOR循环中使用游标的方法(Cursor FOR循环
  8. 35. )和使用子查询的游标式FOR循环。
  9. 36. PL/SQL程序块由哪几部分组成?其中哪一部分是不可缺少的?
  10. 37. 熟悉PL/SQL块类型(匿名块、过程、函数)。
  11. 38. 掌握PL/SQL的注释方法。熟练掌握嵌套块和变量的作用域的概念。
  12. 39. 熟练掌握PL/SQL的控制结构:
  13. 40. 选择结构:
  14. 41.
  15. 42.
  16. 43.
  17. 44.
    IF-THEN-END IF    IF-THEN-ELSE-END IF    IF-THEN-ELSIF-END IF

循环结构:
基本循环: loop-exit-end循环和loop-exit when-end循环

FOR 循环: for-in-loop-end loop循环

WHILE循环::while-loop-end loop循环

CASE结构:

基本CASE结构语句,表达式结构CASE语句(CASE Expressions)和搜索式CASE语句和搜索式CASE表达式结构语句(Searched CASE Expression)

  1. 45. PL/SQL块中使用的SELECT语句必须包括INTO子句。必须遵循以下原则:查询仅返回单行值。无返回值或返回多行值均会产生错误,对于这些错误,在PL/SQL块的异常处理部分,以 NO_DATA_FOUND 和 TOO_MANY_ROWS 标明。
  2. 46. 学会根据算法选择最佳的控制结构的编程法。

四、PL/SQL编程(子程序)

  1. 47. 掌握PL/SQL中控制结构的用途和类型:
  2. 48. 熟练掌握PL/SQL对象(过程、函数)的创建、查询、调用和删除方法。
  3. 49. 掌握匿名块和过程、函数之间,过程和函数之间的主要区别。
  4. 50. 根据位置的不同,子程序分几类?它们分别位于何处?
  5. 51. 如何查询PL/SQL对象(过程、函数和包)的源代码(USER_SOURCE)。
  6. 52. 过程参数有哪几种模式(IN、OUT、IN OUT)?其含义分别是什么?

注意:

1)所有的形参都只能定义数据类型,不能定义长度。

2)IN参数(默认模式)具有只读属性不能对其修改。可以对IN参数设置默认值。IN参数对应的实参可以是字面值、常量、变量和表达式

3)OUT模式对应的实参只能是变量。形参必须被赋值,该变量具有读写属性。

4)IN OUT参数相当于一个初始化后的变量,可读可写。对应的实参也只能是变量。

  1. 53. 掌握形参和实参的匹配方法:位置对应法(positional notation)和名称对应法(named notation:formalparametername => argumentvalue)。
  2. 54. 按引用和按值传递参数。按引用传递的效率比按值传递的效率高。
  3. 55. 了解使用NOCOPY参数指定按引用方式传递大的数据结构(: 集合,记录和对象)的方法。
  4. 56. 掌握包的概念。包分为哪两大部分?包规范(包头)和包体是否存放在相同之处?
  5. 57. 熟练掌握包头和包体的关系。(如:谁要先建立?谁要先删除?等)
  6. 58. 了解如何调用包中的过程和函数?
  7. 59. 触发器有何特点?触发器分为哪三类(DML触发器、INSTEAD-OF触发器和系统触发器)?INSTEAD-OF触发器只是基于视图的。
  8. 60. 熟练掌握DML触发器的编程方法。
  9. 61. DML触发器的触发事件包括哪些事件?了解触发语句和触发器的相互影响。
  10. 62. 行级触发器与语句级触发器的区别是什么?行级触发器用什么关键字说明(FOR EACH ROW子句)?标识符:old和:new只能在何种触发器中使用(行级触发器)?
    注意:在PL/SQL块外访问时标识符不需要加冒号。
  11. 63. 正确掌握用于行级别触发器的WHEN子句方法。
  12. 64. 熟悉DML触发器的激发顺序:Before语句级→before行级→触发语句→after行级→after语句级。
  13. 65. 了解触发器谓词的作用:Inserting、updating和deleting。
  14. 66. 从何字典中能找到触发器的信息和源代码?(user_triggers)。
  15. 67. 何谓异常?何时触发异常?如何处理异常?
  16. 68. 异常的类型包括:Oracle 服务器的预定义异常(隐式触发)、Oracle 服务器的非预定义异常(隐式或显式触发)和用户自定义异常(显式触发)。
  17. 69. 熟悉常见的系统预定义异常(INVALID_CURSOR、NO_DATA_FOUND、TOO_MANY_ROWS、ZERO_DIVIDE等)。
  18. 70. 了解非预定义Oracle服务器错误是用什么编译器指令(PRAGMA EXCEPTION_INIT)声明的?掌握非预定义异常的截获方法。
  19. 71. 掌握截获异常信息的函数:SQLCODE和SQLERRM。
  20. 72. 熟练掌握用户自定义异常的使用方法。包括命名异常、使用 RAISE语句显式发布异常和处理出现的异常。
  21. 73. 会用Raise_application_error过程发布用户自定义的错误消息的方法。

五、事务处理

  1. 74. 事务的概念,Oracle事务的开始(开始于第一条可执行的SQL语句的执行)与结束(COMMIT 或 ROLLBACK;DDL 或 DCL 语句被执行,或自动提交;用户退出;系统崩溃)。事务点的保存(SAVEPOINT)。
  2. 75. 事务的显式提交与隐式提交,哪些SQL语句需要显式提交。
  3. 76. 删除表记录的DELETE语句和截断表的TRUNCATE TABLE语句的区别。(使用TRUNCATE移除记录后不能回滚)

思考与问答题:

  1. 77. 在PL/SQL程序中,进行用户自定义异常处理的3个步骤是什么?
  2. 78. 触发触发器的数据操作有哪些?
  3. 79. 解释视图的含义以及使用视图的好处。
  4. 80. 简述ORACLE中5种约束及其作用。
  5. 81. ORACLE中过程和函数的异同点。
  6. 82. 使用%rowtype属性声明记录变量的优点是什么?