目 录 1
导读 1
第1章简单查询语句 4
1.1最简单的查询语句 4
1.2在查询语句中如何选择特定的列 5
1.3如何书写查询语句 7
1.4列标题和数据的默认显示格式 9
1.5如何在SQL语句中使用算术表达式 10
1.6怎样在SQL语句中使用列的别名 12
1.7连接运算符 13
1.8 DISTINCT运算符 15
1.9基本查询语句的格式 17
1.10应该掌握的内容 17
2.1如何限制所选择的数据行 18
第2章限制性查询和数据的排序 18
2.2比较运算符(operators) 19
2.3 如何使用BETWEEN AND比较运算符(operators) 19
2.4在SQL语句中使用字符串和日期 21
2.5使用IN比较运算符(operators) 22
2.6使用LIKE比较运算符(operators) 23
2.7如何使用转义(escape)操作符 25
2.8 ORDERBY子句 27
2.9在ORDERBY子句中使用别名或表达式 28
2.10在ORDER BY子句中使用列号 30
2.11在ORDERBY子句中使用多列 31
2.12在ORDER BY子句中使用在SELECT列表中没有的列 31
2.13扩充后的查询语句的格式 32
2.14应该掌握的内容 33
第3章常用的SQL*PLUS命令 34
3.1 DESC[RIBE]命令 34
3.2 SETLINE[SIZE]{80|n}命令 35
3.3 L(LIST)命令和n text命令 36
3.4 ‘/’(RUN)命令 38
3.5 n(设置当前行)命令和A[PPEND](附加)命令 38
3.6 del命令 41
3.7 C[HANGE]命令 42
3.8如何生成脚本文件 45
3.9如何编辑脚本文件 47
3.10如何直接运行脚本文件 49
3.11 SPOOL命令 49
3.12应该掌握的内容 50
第4章单行函数 52
4.1什么是函数 52
4.2单行函数简介 52
4.3单行字符型函数 53
4.4使用单行字符型函数的实例 58
4.5数字型函数 59
4.6 日期型数据的处理 62
4.7 日期函数 65
4.8 ROUND和TRUNC函数用于日期型数据 68
4.9不同数据类型之间的隐含转换 71
4.10不同数据类型之间的显式转换 71
4.11应该掌握的内容 79
第5章NULL值的处理、逻辑操作和函数嵌套 80
5.1 什么是空值(NULL) 80
5.2含有空值(NULL)的表达式的运算 81
5.3 空值(NULL)的排序 83
5.4逻辑表达式和逻辑运算符 85
5.5运算符的优先级 88
5.6 用AND和OR替代BETWEEN AND和IN运算符 89
5.7 NVL函数 91
5.8 DECODE函数 93
5.9单值函数的嵌套 94
5.10 Oracle9i新增加的单值函数和表达式 96
5.11 应该掌握的内容 101
第6章综合数据和分组函数 102
6.1五个常用的分组函数 102
6.2 COUNT函数 102
6.3 AVE和SUM函数 103
6.4 MIN和MAX函数 104
6.5 GROUP BY子句的应用 105
6.6改变GROUP BY子句的排序次序 105
6.7 GROUP BY子句的特殊用法 106
6.8 分组函数与GROUP BY子句的非法操作 107
6.9 HAVING子句的使用 108
6.11 分组函数的空值问题 110
6.10分组函数的嵌套 110
6.12 NVL函数在分组函数中的使用 111
6.13 是否在分组函数中使用NVL函数的商业背景 112
6.14其他的分组函数和分组函数的小结 113
6.15应该掌握的内容 113
第7章多表查询 114
7.1数据库的规范化(Normalization) 114
7.2主键(Primary Key)和实体完整性(Entity Integrity) 115
7.3第一范式(1NF) 115
7.4消除部分依赖 116
7.5 外键(Foreign Key)和引用完整性(Referential Integrity) 117
7.6第二范式(2NF) 118
7.7第三范式(3NF) 118
7.8规范化过程小结 120
7.9多表连接 120
7.10相等连接 120
7.11 连接中表别名的使用 122
7.12笛卡尔乘积(乘积连接) 123
7.13 自连接(Selfioin) 125
7.14两个以上的表的连接 126
7.15 不等连接 127
7.16外连接 129
7.17 SQL:1999语法的连接 130
7.18 SQL:1999语法的自然连接 130
7.19使用USING子句的连接 131
7.20使用ON子句的连接 132
7.21 使用ON子句的多表连接和附加条件 132
7.22左外连接 134
7.23右外连接 135
7.24全外连接 136
7.25 应该掌握的内容 139
8.1 为什么引入单行子查询 140
第8章子查询 140
8.2 WHERE子句中的单行子查询 141
8.3 HAVING子句中的单行子查询 144
8.4 FROM子句中的单行子查询 145
8.5多行子查询 145
8.6使用IN操作符的多行子查询 146
8.7使用ALL操作符的多行子查询 147
8.8使用ANY操作符的多行子查询 148
8.9子查询中的空值(NULL)问题 150
8.10多列子查询 152
8.11成对比较(Pairwise Comparison)的多列子查询 152
8.12非成对比较(Nonpairwise Comparison)的多列子查询 153
8.13小结 154
8.14应该掌握的内容 155
9.1控制SQL*PLUS的环境 156
9.2 SQL*PLUS的环境变量ECHO 156
第9章控制SQL*PLUS的环境和数据字典简介 156
9.3 SQL*PLUS的环境变量FEEDBACK 159
9.4 SQL*PLUS其他常用的环境变量 160
9.5 SQL*PLUS的COLUMN格式化命令 160
9.6 SQL*PLUS的其他格式化命令 166
9.7数据字典和数据字典视图 169
9.8格式化数据字典视图的输出 171
9.9如何使用数据字典视图 173
9.10小结 177
9.11应该掌握的内容 177
第10章创建表 179
10.1创建表的语句和例子 179
10.2命名和引用规则 180
10.3列的数据类型和默认值 183
10.4创建表的例子 185
10.5利用子查询来创建表 186
10.6修改表的结构 188
10.7改变对象的名字 195
10.8为表和列加注释 197
10.9截断表和删除表 199
10.10小结 202
10.11应该掌握的内容 206
第11章替代变量 207
11.1 替代变量引入的原因 207
11.2 以&开始的替代变量 207
11.3字符型和日期型替代变量 210
11.4以&&开始的替代变量 213
11.5替代变量可以出现的地方 215
11.6使用DEFINE定义替代变量 216
11.7使用ACCEPT定义替代变量 218
11.8如何使用ACCEPT命令的HIDE的选项 221
11.9ACCEPT命令的格式和选项 224
11.10小结 224
11.11应该掌握的内容 224
第12章数据的维护 226
12.1准备工作 226
12.2 INSERT语句 227
12.3 INSERT语句中的空值(NULL)问题 229
12.4如何向表中插入特殊的值 232
12.5如何利用子查询向表中插入数据 233
12.6如何利用替代变量向表中插入数据和将INSERT语句存入脚本文件 234
12.7利用ACCEPT在INSERT语句中产生用户友好的系统提示 236
12.8 UPDATE语句 238
12.9基于另一个表来修改记录 241
12.10利用多列子查询来修改记录 243
12.11 DELETE语句 245
12.12在使用DELETE时可能出现的问题 247
12.13基于另一个表来删除行 248
12.14引入事务(Transactions)处理的原因 249
12.15什么是Oracle数据库的事务(Transactions) 250
12.16利用COMMIT和ROLLBACK语句进行事务控制 250
12.17利用DDL和DCL语句进行事务控制 252
12.18非正常退出和正常退出SQL*PLUS对事务控制的影响 255
12.19利用AUTOCOMMIT进行事务控制 257
12.20有关事务处理应注意的一些问题 258
12.21应该掌握的内容 259
第13章索引与约束(Indexes and Constraints) 260
13.1 为什么引入索引 260
13.2如何建立索引 260
13.3如何查看索引 262
13.4使用索引时应注意的问题 264
13.5基于函数的索引 265
13.6怎样确认Oracle系统是否使用了索引 267
13.7怎样删除索引 269
13.8 为什么要引入约束及如何定义约束 272
13.9 非空(NOT NULL)约束 273
13.10查看有关约束的信息 276
13.11 惟一(UNIQUE)约束 278
13.12 条件(CHECK)约束 281
13.13 主键(PRIMARY KEY)约束 285
13.14 外键(FOREIGN KEY)约束 289
13.15 外键(FOREIGN KEY)约束对INSERT语句的影响 293
13.16外键(FOREIGN KEY)约束对DELETE语句的影响 294
13.17 外键(FOREIGN KEY)约束对UPDATE语句的影响 295
13.18外键(FOREIGN KEY)约束对DDL语句的影响 298
13.19 外键(FOREIGN KEY)的ON DELETE SETNULL和ON DELETE CASCADE子句 300
13.20约束的维护 306
13.21 约束小结 311
13.22应该掌握的内容 312
第14章视图(Views) 314
14.1为什么引入视图(Views) 314
14.2使用视图(Views)的好处 315
14.3如何创建视图(Views) 317
14.4如何修改视图(Views) 320
14.5 Oracle系统如何管理视图(Views) 321
14.6如何使用视图(Views)来进行DML操作 322
14.7 怎样使用视图(Views)的WITH CHECK OPTION子句 323
14.8 为什么要使用WITH READ ONLY子句 326
14.9如何删除视图(Views) 328
14.10内嵌式视图(Inline Views) 330
14.11前n行查询/分析(Top n queries/analysis) 331
14.12应该掌握的内容 332
15.2创建序列号(Sequence)语句的格式 334
15.1序列号(Sequence)的引入 334
第15章序列号(Sequence)和同义词(Synonym) 334
15.3怎样创建序列号(Sequence) 335
15.4怎样使用创建序列号(Sequence) 337
15.5使用序列号(Sequence)的实例 340
15.6 NEXTVAL和CURRVAL虚(伪)列介绍和它们的使用规则 343
15.7序列号(Sequence)的修改 346
15.8删除序列号(Sequence) 349
15.9引入同义词(Synonym)的原因 350
15.10怎样创建同义词(Synonym) 351
15.11创建公用同义词(Synonym) 353
15.12删除同义词(Synonym) 355
15.13应该掌握的内容 356
第16章用户管理 358
16.1控制用户对数据库的访问 358
16.2创建用户及给用户赋口令 358
16.3 Oracle数据库管理系统中的权限 361
16.4怎样将系统权限授予用户 362
16.5怎样查看用户具有的系统权限 367
16.6引入角色(Role)的原因 369
16.7角色(Role)的创建和使用 370
16.8对象的权限和授权语句 374
16.9对象权限授权实例 375
16.10权限的回收 387
16.11 改变用户的口令 392
16.12删除用户 394
16.13 CONNECT和RESOURCE角色 397
16.14应该掌握的内容 402
附录 403
参考文献 413
结束语 415
鸣谢 417