Oracle8i/9i
数据库基础
(初稿)
赵元杰
2003 年 01 月 26 日
前 言
本讲稿(ORACLE8i 数据库基础)是作者在多年的工作和授课中的总结,主要包括两个部分,
第一部分是 ORACLE SQL*PLUS 基础,主要讲述 ORACLE 应用系统设计的基本知识和给出
一 些 有 用 的 实 例 ; 第 二 部 分 是 介 绍 ORACLE PL/SQL 知 识 , 主 要 讲 述 ORACLE 数 据
库 PL/SQL 程序设计所用到基本知识,这部分给出进行应用设计所必需的基础知识。这两部
分的内容都尽可能做到内容简洁而全面。特点是,1.用简单明了的语句对解释各个部分的内
容,省去一些理论性的解释;2.给出作者在应用设计和开发中的一些具体的例子,为软件人
员提供一些借鉴,省去查阅大量资料的时间。3.给出了许多资料所没有提供的一些使用技巧,
如导出触发器等。总之,内容基本上包括当前 Oracle8I 的最新内容。同时也覆盖了最新的
ORACLE8i OCP 培训大纲的内容。不仅包含 ORACLE 程序设计人员、DBA 所必须掌握的知
识,而且还含盖了系统分析员所要求的内容。与本书(讲稿)相伴的还有《 Oracle8i/9i 初级
数据库管理》和《Oracle8i/9i 高级数据库管理》。
全书内容简练实用,可作为 ORACLE 数据库管理人员参考,也可作为应用开发人员
和系统分析与设计人员以及大学计算机专业教学的参考资料。由于作者水平所限,加之
ORACLE 的产品与内容的浩瀚,在资料的整理与收集中可能有不少错误和不妥之处,希望
读者给予批评制正。作者联系电话是:010-6234 6242(home);1360 136 5681。
E_Mail
是
zyj5681@yahoo.com.cn
2
目 录
第一部分 Oracle SQL*PLUS 基础...................................................................................................23
第一章 Oracle 数据库基础................................................................................................................23
§1.1 理解关系数据库系统(RDBMS)..................................................................................23
§1.1.1 关系模型..................................................................................................................23
§1.1.2 Codd 十二法则........................................................................................................24
§1.2 关系数据库系统(RDBMS)的组成..............................................................................24
§1.2.1 RDBMS 内核...........................................................................................................25
§1.2.2 数据字典概念..........................................................................................................25
§1.3 SQL、SQL*Plus 及 PL/SQL.............................................................................................25
§1.3.1 SQL 和 SQL*PLUS 的差别....................................................................................25
§1.3.2 PL/SQL 语言...........................................................................................................27
§1.4 登录到 SQL*PLUS............................................................................................................27
§1.4.1 UNIX 环境...............................................................................................................28
§1.4.2 Windows NT 和 WINDOWS/2000 环境................................................................30
§1.5 常用 SQL*PLUS 附加命令简介.......................................................................................32
§1.5.1 登录到 SQL*PLUS.................................................................................................32
§1.5.2 EXIT 和 QUIT.........................................................................................................33
§1.5.3 DESCRIBE(显示表、视图结构)...........................................................................33
§1.5.4 LIST(列出)命令......................................................................................................34
§1.5.5 Change(替换字符串)命令......................................................................................34
§1.5.6 Append(追加字符串)命令.................................................................................35
§1.5.7 Save 保存当前缓冲区命令到文件.........................................................................35
§1.5.8 GET 将命令文件读到缓冲区.................................................................................36
§1.5.9 SPOOL 将信息记录到文件中................................................................................36
§1.5.10 再运行当前缓冲区的命令...................................................................................37
§1.6 常用数据字典简介.............................................................................................................37
§1.7 ORACLE 数据类型............................................................................................................39
§1.8 SQL 语句基础....................................................................................................................46
§1.8.1 SQL 语句所用符号.................................................................................................46
§1.8.2 简单 select 查询.......................................................................................................48
§1.9 伪列及伪表.........................................................................................................................48
§1.10 使用 SQL Worksheet 工作...............................................................................................49
第二章 查询基础................................................................................................................................52
§2.1 SELECT 语句.....................................................................................................................52
§2.2 SQL 中的单记录函数........................................................................................................52
§2.2.1 单记录字符函数.....................................................................................................53
§2.2.2 单记录数字函数.....................................................................................................58
§2.2.3 单记录日期函数.....................................................................................................64
§2.2.4 单记录转换函数.....................................................................................................67
§2.2.5 其它的单记录函数.................................................................................................70
§2.3 SQL 中的组函数................................................................................................................76
3
§2.3.1 多记录组函数..........................................................................................................76
§2.3.2 带 GROUP BY 的计算...........................................................................................77
§2.3.3 用 HAVING 来限制分组的计算............................................................................78
§2.4 控制和格式化输出.............................................................................................................78
§2.4.1 用 ORDER BY 子句来对结果进行排序...............................................................78
§2.4.2 用 BREAK 命令 来对结果进行排列....................................................................79
§2.4.3 用 COMPUTE 命令对结果进行格式化................................................................81
§2.5 配置会话环境.....................................................................................................................85
§2.5.1 ARRAYSIZE(取回的行数)...............................................................................85
§2.5.2 AUTOCOMMIT(自动提交)...................................................................................85
§2.5.3 LINESIZE(行显示宽度).........................................................................................85
§2.5.4 LONG(长类型显示字节数)....................................................................................86
§2.5.5 PAGESIZE(页行数)................................................................................................86
§2.5.6 PAUSE(暂停)...........................................................................................................86
§2.5.7 SPACE(列间空格)...................................................................................................86
§2.5.8 Termout (启/停屏幕显示).......................................................................................87
§2.5.9 ECHO (启/停命令显示)..........................................................................................87
§2.5.10 TRANSACTION (启动事务)...............................................................................87
§2.5.11 SHOW ALL(列出所有参数).................................................................................88
§2.6 格式化输出.........................................................................................................................89
§2.6.1 一般数据的格式化输出.........................................................................................89
§2.6.2 日期的格式化输出.................................................................................................91
§2.7 加标题.................................................................................................................................92
§2.8 建立简单报告.....................................................................................................................92
§2.9 输入变量.............................................................................................................................94
第三章 表及索引的定义操作...........................................................................................................97
§3.1 建立表结构.........................................................................................................................97
§3.1.1 建立表结构命令.....................................................................................................97
§3.1.2 建立表结构例子.....................................................................................................99
§3.1.3 建立临时表结构...................................................................................................100
§3.3 修改表结构.......................................................................................................................101
§3.3.1 修改表结构命令...................................................................................................101
§3.3.2 修改表结构例子...................................................................................................102
§3.3.3 删除表结构............................................................................................................104
§3.3.4 使用 CHECK 作限制约束....................................................................................104
§3.3.5 使用 UNRECOVERABLE 创建表.......................................................................105
§3.3.6 将表移动到新的数据段或新的表空间...............................................................105
§3.3.7 手工分配表的存储空间.......................................................................................107
§3.3.8 标记不使用的列和删除不使用的列...................................................................107
§3.3 主键...................................................................................................................................109
§3.3.1 创建主键................................................................................................................109
§3.3.2 改变主键................................................................................................................112
§3.3.3 删除主键................................................................................................................113
§3.4 外部键...............................................................................................................................113
4
§3.4.1 建立外部键............................................................................................................113
§3.4.2 修改外部键............................................................................................................115
§3.4.3 删除外部键............................................................................................................115
§3.5 索引...................................................................................................................................115
§3.5.1 建立索引................................................................................................................116
§3.5.2 修改索引................................................................................................................117
§3.5.3 删除索引................................................................................................................118
§3.6 新索引类型.......................................................................................................................118
§3.6.1 基于函数的索引....................................................................................................118
§3.6.2 反向键索引............................................................................................................120
§3.6.3 索引组织表............................................................................................................121
§3.7 抽象数据类型的使用......................................................................................................122
§3.8 大数据类型的使用...........................................................................................................123
§3.8.1 可用数据类型.......................................................................................................123
§3.8.2 为 LOB 数据类型指定存储..................................................................................124
§3.8.3 操作和检索 LOB 数据..........................................................................................125
§3.9 表和索引有关的数据字典..............................................................................................128
§3.9.1 表和索引数据字典...............................................................................................128
§3.9.2 数据字典查询例子...............................................................................................129
第四章 视图、同义词和序列.........................................................................................................132
§4.1 视图...................................................................................................................................132
§4.1.1 使用视图来修改表中数据...................................................................................132
§4.1.2 创建一个新视图...................................................................................................132
§4.1.3 删除一个视图.......................................................................................................134
§4.1.4 改变视图................................................................................................................135
§4.2 实体视图(MATERIALIZED VIEW)...............................................................................135
§4.2.1 创建实体视图.......................................................................................................135
§4.2.2 创建实体视图日志...............................................................................................141
§4.2.3 修改实体视图.......................................................................................................143
§4.2.4 修改实体视图日志...............................................................................................145
§4.2.5 实体视图完整例子...............................................................................................146
§4.3 序号(sequence).................................................................................................................150
§4.3.1 建立序号................................................................................................................150
§4.3.2 修改序号................................................................................................................151
§4.3.3 使用序号................................................................................................................151
§4.3.4 删除序号................................................................................................................152
§4.4 同义词...............................................................................................................................152
§4.4.1 建立同义词............................................................................................................152
§4.4.2 删除同义词............................................................................................................153
§4.5 视图、同义词和序列有关的数据字典..........................................................................154
第五章 簇与分区..............................................................................................................................155
§5.1 簇( cluster ).......................................................................................................................155
§5.1.0 簇概念....................................................................................................................155
§5.1.1 建立簇....................................................................................................................157
5