第1章 Linux基础 1
1.1 系统介绍 2
1.1.1 Linux的特性综述 2
1.1.2 涉及Linux的Web网址和新闻讨论组 3
1.2 Red Hat Linux基本安装 4
1.2.1 了解Linux的硬件要求 4
1.2.2 了解计算机 7
1.2.3 对硬盘进行分区 7
1.2.4 什么是LILO 8
1.2.5 制作安装软盘 9
1.2.6 用Linux启动计算机 9
1.2.7 从光盘安装Red Hat Linux 10
1.2.8 选择安装类型 13
1.2.9 定制(Custom)安装 14
1.2.10 从FTP安装Red Hat Linux 26
1.3 小结与练习 28
1.3.1 小结 28
1.3.2 习题与思考 28
第2章 数据库基础 29
2.1 数据库基本概念 30
2.1.1 数据与数据库 30
2.1.2 数据库管理系统 31
2.1.3 数据库语言 32
2.1.4 数据库系统 32
2.2 数据模型 34
2.2.1 数据模型的三要素 34
2.2.2 主要数据模型 35
2.3.1 数据库系统三级模式结构 38
2.3 数据库系统的结构 38
2.3.2 数据独立性 39
2.3.3 数据库操作过程 40
2.4 小结与练习 41
2.4.1 小结 41
2.4.2 习题与思考 41
第3章 Linux上安装Oracle8i 43
3.1 基本概念 44
3.1.1 系统全局区域 44
3.1.2 程序全局区域 45
3.1.3 表空间 45
3.1.4 数据文件 45
3.1.5 区 45
3.1.9 回退段 46
3.1.10 参数文件 46
3.1.7 控制文件 46
3.1.8 重做日志 46
3.1.6 段 46
3.1.11 版本标识符 47
3.1.12 PL/SQL 47
3.1.13 模式 47
3.2 系统需求 47
3.2.1 硬件需求 47
3.2.2 磁盘空间需求 48
3.2.3 操作系统软件需求 48
3.2.4 工具和预编译器 49
3.3 预备安装 49
3.4 安装Oracle8i 53
3.5.2 参数文件的配置 63
3.5 安装后设置 63
3.5.1 SYS和SYSTEM账号 63
3.5.3 检查数据库安全性 64
3.5.4 自动启动及关闭 65
3.5.5 网络配置 66
3.6 小试牛刀 68
3.6.1 启动和关闭数据库 68
3.6.2 创建账号 70
3.6.3 简单的SQL*PLUS应用 71
3.7 小结与练习 74
3.7.1 小结 74
3.7.2 练习与思考 74
第4章 在Linux上安装Informix 75
4.1.1 数据库服务器 76
4.1 Informix数据库产品介绍 76
4.1.2 应用开发工具 77
4.1.3 网络连接软件 77
4.2 Informix Online Dynamic Server的安装 77
4.2.1 软件的获取 78
4.2.2 创建Linux环境 78
4.2.3 实际安装 80
4.2.4 关于Informix的数据文件 81
4.3 配置 82
4.3.1 $INFORMIXDIR/etc/$ONCONFIG 82
4.3.2 $INFORMIXDIR/etc/sqlhosts 88
4.3.3 其他连接性文件 91
4.3.4 /opt/data/rootdbs 91
4.3.5 利用oninit启动并初始化数据库服务器 92
4.4.2 习题与思考 93
4.4.1 小结 93
4.3.6 终止引擎 93
4.4 小结与练习 93
第5章 在Linux上安装MySQL 95
5.1 MySQL简介 96
5.2 安装MySQL 97
5.2.1 MySQL安装包的获取 97
5.2.2 使用何种版本 97
5.2.3 安装布局 98
5.2.4 安装MySQL二进制分发包 99
5.2.5 安装MySQL源代码分发包 100
5.2.6 安装后的操作和链接测试 101
5.4 小结与练习 103
5.4.1 小结 103
5.3 启动和关闭MySQL服务器 103
5.4.2 练习与思考 104
第6章 Oracle数据库编程 105
6.1 数据库 106
6.1.1 表空间 106
6.1.2 数据文件 108
6.2 数据库实例 109
6.3 Oracle数据库的逻辑结构 110
6.3.1 表 110
6.3.2 视图 111
6.3.3 索引 111
6.3.4 同义词 111
6.3.5 权限及角色 111
6.3.6 簇 112
6.3.7 快照 113
6.3.8 序列 113
6.4 Oracle数据库的内存结构 113
6.4.1 系统全局区 114
6.4.2 程序全局区 115
6.5 Oracle数据库的进程结构 115
6.5.1 服务器端后台进程 115
6.5.2 Oracle特定的进程结构 117
6.6 Oracle数据库的外部结构 118
6.6.1 重做日志 118
6.6.2 控制文件 119
6.7.2 习题与思考 120
6.7.1 小结 120
6.7 小结与练习 120
6.6.3 跟踪文件与警告日志 120
第7章 开始Oracle编程 121
7.1 术语 122
7.2 两种类型的SQL语言 123
7.2.1 DDL 123
7.2.2 DML 124
7.3 SQL*PLUS入门 125
7.3.1 一个简单例子 125
7.3.2 数据类型 126
7.3.3 创建语句 127
7.3.4 描述语句 128
7.3.5 插入语句 128
7.3.6 查询语句 130
7.3.7 where子句 131
7.4 数值型数据 135
7.5 字符型数据 136
7.6 日期性数据 137
7.6.1 日期型函数 138
7.6.2 特殊格式的日期型数据 138
7.6.3 日期运算 140
7.7 表列数据类型转换 140
7.8 Update、Delete和Alter等语句 141
7.8.1 update语句 141
7.8.2 delete语句 141
7.8.3 alter语句 142
7.9 连接两个表 142
7.10 格式化输出 143
7.10.3 页脚标 144
7.10.4 将SQL*Plus结果写到文件中 144
7.10.1 页和行的大小 144
7.10.2 页头标 144
7.10.5 格式化输出表列 145
7.11 小结与练习 150
7.11.1 小结 150
7.11.2 习题与思考 150
第8章 创建和修改表 153
8.1 基本CREATE TABLE语句 154
8.1.1 表名 154
8.1.2 列名 154
8.2 权限要求 155
8.3 表的存储空间 156
8.3.1 STORAGE子句 156
8.3.2 其他存储参数 157
8.3.3 表的位置 158
8.3.4 表的重建 159
8.4 描述表定义 160
8.4.1 DESC 160
8.4.2 系统表 160
8.5 修改表 160
8.5.1 修改列定义 160
8.5.2 修改存储参数 162
8.5.3 分配区间 162
8.6 改变表名 163
8.7 拷贝表 163
8.8.2 删除带约束的表 164
8.8.1 简单删除 164
8.8 删除表 164
8.9 小结与练习 165
8.9.1 小结 165
8.9.2 习题与思考 165
第9章 修改表数据 167
9.1 简单介绍 168
9.2 INSERT语句 168
9.2.1 插入单行 168
9.2.2 插入多行 170
9.3 UPDATE语句 171
9.4 DELETE语句 173
9.5 在语句中使用函数 174
9.6 TRUNCATE语句 174
9.7.1 系统权限 175
9.7 修改数据和权限 175
9.7.2 对象级权限 176
9.8 小结与练习 178
9.8.1 小结 178
9.8.2 习题与思考 178
第10章 Oracle基本查询 181
10.1 准备工作 182
10.2 一般的句法格式 183
10.3 使用表达式、条件和操作符 184
10.3.1 表达式 184
10.3.2 条件 185
10.3.3 操作符 185
10.4 使用DISTINCTION查询 189
10.5.1 sequence.CURRVAL和sequence.NEXTVAL 190
10.5 使用特殊的伪列 190
10.5.2 ROWID 191
10.5.3 ROWNUM 191
10.5.4 UID和USER 192
10.6 使用空值查询 192
10.7 小结与练习 194
10.7.1 小结 194
10.7.2 习题与思考 194
第11章 查询中的SQL子句 197
11.1 ORDER BY子句 198
11.2 GROUP BY子句 200
11.3 HAVING子句 206
11.4 复合子句 208
11.5 小结与练习 209
11.5.1 小结 209
11.5.2 习题与思考 210
第12章 连接表 211
12.1 单个SELECT语句中的多重表 212
12.2 相等连接 215
12.3 不等连接 217
12.4 表自身的连接 218
12.5 小结与练习 219
12.5.1 小结 219
12.5.2 习题与思考 219
第13章 子查询 221
13.1 子查询 222
13.2 在子查询中使用聚集函数 223
13.3 嵌套子查询 225
13.4 相关子查询 227
13.5.1 EXISTS关键字 229
13.5 使用EXISTS,ANY和ALL 229
13.5.2 ANY关键字 230
13.5.3 ALL关键字 231
13.6 小结与练习 232
13.6.1 小结 232
13.6.2 习题与思考 232
第14章 其他数据库对象 235
14.1 使用其他数据库对象的优点 236
14.1.1 简化数据访问 236
14.1.2 提高性能 236
14.1.3 灵活性 236
14.2 视图 237
14.2.1 简单视图 238
14.2.2 概括数据 238
14.2.3 视图与安全性 240
14.2.4 用视图简化复杂查询 242
14.2.5 删除视图——DROP VIEW语句 242
14.3 索引 242
14.3.1 创建索引 243
14.3.2 删除索引 245
14.4 簇 246
14.4.1 索引簇 246
14.4.2 散列簇 249
14.4.3 删除簇中的表 250
14.4.4 簇的优缺点 250
14.5 同义词 250
14.5.1 私有同义词 251
14.5.2 公共同义词 252
14.6 序列 253
14.7 小结与练习 255
14.7.1 小结 255
14.7.2 习题与思考 255
第15章 数据库安全性 257
15.1 Oracle用户 258
15.1.1 创建用户 258
15.1.2 修改用户 260
15.1.3 删除用户 261
15.2 用户权限 262
15.2.1 系统级权限 262
15.2.2 对象级权限 264
15.3 角色 265
15.3.1 角色的作用 265
15.3.3 给角色授权 266
15.3.2 创建、修改和删除角色 266
15.3.4 授予和收回角色 267
15.3.5 预定义角色 268
15.3.6 允许和禁止角色 269
15.3.7 与角色有关的数据字典视图 271
15.4 配置文件 273
15.4.1 缺省配置文件 273
15.4.2 创建、修改和删除配置文件 273
15.4.3 赋予配置文件 275
15.4.4 激活资源配置 275
15.5 小结与练习 276
15.5.1 小结 276
15.5.2 习题与思考 277
第16章 PL/SQL介绍及开发环境 279
16.1 引入PL/SQL语言 280
16.1.1 PL/SQL与网络传输 282
16.1.2 PL/SQL标准 282
16.2 PL/SQL的特点 282
16.2.1 PL/SQL的基本特点 282
16.2.2 PL/SQL的高级功能 286
16.2.3 PL/SQL内置包 290
16.3 本篇的约定 291
16.3.1 PL/SQL和Oracle数据库版本说明 291
16.3.2 Oracle数据库文档 292
16.4 本篇案例使用的通用数据库表 293
16.5 小结与练习 301
16.5.1 小结 301
16.5.2 习题与思考 302
第17章 PL/SQL开发和运行环境 303
17.1 应用模式和PL/SQL 304
17.1.1 两层模式 304
17.1.2 三层模式 306
17.2 PL/SQL开发工具介绍 307
17.3 小结与练习 312
17.3.1 小结 312
17.3.2 习题与思考 313
第18章 PL/SQL基础 315
18.1 PL/SQL块 316
18.2 词法单位 323
18.2.1 标识符 323
18.2.2 分界符 326
18.2.3 文字 327
18.2.4 注释 329
18.3 变量声明 330
18.3.1 声明变量 330
18.3.2 变量初始化 331
18.4 PL/SQL类型 332
18.4.1 标量类型 333
18.4.2 复合类型 335
18.4.3 引用类型 340
18.4.4 LOB类型 340
18.4.5 %TYPE 340
18.4.6 用户定义子类型 340
18.4.7 在数据类型之间进行转换 341
18.5 表属性 341
18.6.2 表达式 347
18.6.1 赋值 347
18.6 表达式和运算符 347
18.7 PL/SQL程序控制结构 349
18.7.1 条件语句 349
18.7.2 循环语句 352
18.8 PL/SQL的编程风格 356
18.8.1 注释风格 356
18.8.2 变量名风格 357
18.8.3 大写风格 357
18.8.4 缩进风格 358
18.8.5 常见风格 358
18.9 小结与练习 359
18.9.1 小结 359
18.9.2 习题与思考 359
第19章 PL/SQL中的SQL 361
19.1 在PL/SQL中调用SQL 362
19.1.1 SQL语句 362
19.1.2 SELECT 363
19.1.3 INSERT 364
19.1.4 UPDATE 365
19.1.5 DELETE 366
19.1.6 事务控制 366
19.1.7 COMMIT和ROLLBACK 367
19.1.8 SAVEPOINT 368
19.2 内置SQL函数 368
19.2.1 字符函数 369
19.2.2 字符函数—返回数字值 371
19.2.3 数值函数 372
19.2.4 日期函数 373
19.2.5 转换函数 374
19.2.6 分组函数 376
19.2.7 其他函数 378
19.3 小结与练习 381
19.3.1 小结 381
19.3.2 习题与思考 381
第20章 游标 383
20.1 什么是游标 384
20.1.1 处理显式游标 385
20.1.2 处理隐式游标 390
20.2 游标提取循环 392
20.2.1 简单循环 392
20.2.2 WHILE循环和FOR循环 394
20.2.3 SELECT FOR UPDATE游标 394
20.3.1 声明游标变量 398
20.3 游标变量 398
20.3.2 打开查询的游标变量 399
20.3.3 关闭游标变量 399
20.4 小结与练习 400
20.4.1 小结 400
20.4.2 习题与思考 400
第21章 子程序和包 401
21.1 过程和函数 402
21.1.1 创建子程序 403
21.1.2 过程和函数的撤消 407
21.1.3 子程序参数 408
21.1.4 过程与函数的比较 417
21.2 包 418
21.2.2 包体 419
21.2.1 包的说明 419
21.2.3 包和作用域 421
21.2.4 包的初始化 422
21.3 小结与练习 424
21.3.1 小结 424
21.3.2 习题与思考 424
第22章 触发器 427
22.1 触发器的类型 428
22.1.1 DML触发器 428
22.1.2 替代触发器 429
22.1.3 系统触发器 430
22.2 创建触发器 431
22.2.1 创建DML触发器 431
22.3.1 数据字典视图 434
22.3 触发器与数据字典 434
22.3.2 删除和禁止触发器 435
22.4 变异表 435
22.4.1 变异表示例 436
22.4.2 变异表错误的处理 437
22.5 小结与练习 439
22.5.1 小结 439
22.5.2 习题与思考 439
第23章 异常 441
23.1 什么是异常 442
23.1.1 声明声学 442
23.1.2 异常触发 445
23.1.3 异常处理 445
23.2.1 执行部分引发的异常 448
23.2 异常的传播过程 448
23.2.2 声明部分引发的异常 449
23.2.3 在异常处理部分引发的异常 449
23.3 小结与练习 449
23.3.1 小结 449
23.3.2 习题与思考 449
第24章 动态PL/SQL 451
24.1 概述 452
24.1.1 静态和动态SQL 452
24.1.2 DBMS_SQL概述 453
24.2 执行非查询DML和DDL语句 455
24.2.1 打开游标 455
24.2.2 分析语句 455
24.2.3 联编输入变量 456
24.2.6 执行DDL语句 457
24.3 执行查询 457
24.2.4 执行语句 457
24.2.5 关闭游标 457
24.3.1 分析语句 458
24.3.2 定义输出变量 458
24.3.3 提取行 459
24.3.4 将结果返回给PL/SQL变量 459
24.4 执行PL/SQL 460
24.4.1 分析语句 460
24.4.2 检索输出变量的取值 460
24.5 小结与练习 461
24.5.1 小结 461
24.5.2 习题与思考 461
附录 部分习题参考答案 463