目录 1
引言 1
关于这本书 1
什么是SQL? 1
谁应该读这本书? 1
第五部分:在应用程序中使用SQL 2
第四部分:控制操作 2
第三部分:检索信息 2
第二部分:使用SQL建立数据库 2
第一部分:基本概念 2
这本书的结构 2
第六部分:十点集粹 3
这本书中使用的图标 3
让我们现在开始 3
第一部分 基本概念 3
第一章 关系数据库的基本准则 3
跟踪事件 3
什么是数据库? 4
什么是数据库管理系统? 5
数据库的大小和复杂程序 5
平面文件 6
数据库模型 7
等级模型 7
网络模型 8
关系模型 8
为什么关系模型更好一点? 9
关系数据库的组成 11
猜猜谁来吃晚餐? 11
欣赏一个(窗口)图画 12
模式、定义域、约束 13
数据库设计的几点考虑 15
第二章 客户/服务器结构 17
数据库结构 17
孤立数据库系统 17
多用户数据库系统 17
为什么要用客户/服务器结构? 20
在客户/服务器系统中使用SQL 21
理想服务器的属性 22
服务器做什么 22
什么是服务器 22
服务器 22
客户机 23
客户机是什么 23
客户机做什么 23
理想客户机属性 23
第三章SQL基础 25
什么是SQL? 25
一小段历史 26
用这些少为人知的故事,给你的朋友留下深刻印象 26
SQL标准 27
SQL命令 28
保留字 28
数据类型 28
精确数字 29
近似数字 31
字符串 32
Bit串 33
日期和时间 33
数据类型总结 34
Intervals数据类型 34
NULL值 35
约束 36
第四章 SQL的内容 37
数据定义语言DDL 37
生成表 38
ROOM WITH VIEW 39
将表集中到模式中 44
使用目录排序 44
DDL命令 45
数据操作语言(DML) 46
值表达式 47
判断 48
逻辑连接 49
集合函数 49
子查询 51
数据控制语言(DCL) 51
事件 51
用户和特许权 52
引用的整体性约束可能会危害你的数据 54
第二部分 使用SQL建立数据库 59
第五章 建立和维护一个简单数据库结构 59
用RAD工具建立一个简单数据库 60
相似情况 60
太多就是不足 60
生成表的真正RAD方法 61
生成一个索引 63
修改表结构 65
中止一个表 66
用SQL数据定义语言(DDL)建立、维护相同的数据库 67
生成一个表 68
生成一个索引 69
修改表结构 69
中止一个表 70
中止一个索引 70
可移植性考虑 70
第六章 建立一个多表数据库 71
标识表和列 72
定义对象 72
设计数据库 72
定义表 73
域、字符组、排序和转换 76
用关键字更快地进入你的数据库 76
索引 78
什么是索引 78
为什么我们要这个? 79
如果选取的道路太长不能处理没有索引的大表, 80
为什么不一开始就生成一个索引? 80
实体完整性 81
完整性 81
定义域完整性 82
引用完整性 82
可能的问题范围 85
约束 86
标准化数据库 88
第一正常格式 90
第二正常格式 90
第三正常格式 91
定义域关键字正常格式 92
异常格式 93
第三部分 检索信息 97
第七章 处理数据库的数据 97
SQL数据处理语言(DML) 97
检索数据 98
生成视图 99
更新视图 101
添加新数据 102
一次添加一行数据 103
往一个选定列中添加数据 104
往表中添加几行数据 104
更新现存数据 106
删除过时数据 108
第八章 特殊值 111
数值 111
行值 112
文字值 112
变量 113
列引用 115
特殊变量 115
函数 116
集合函数的概述 116
数值函数 119
值表达式 124
串表达式 125
数值表达式 125
日期时间表达式 126
区间表达式 126
条件表达式 127
第九章 SQL-92中的高级值表达式 129
CASE条件表达式 129
使用带有查询条件的CASE 130
使用带有数值的CASE 132
一种特殊的CASE_NULLIF 134
另一种特殊的CASE_COALESCE 135
CAST数据类型转换 135
在SQL中使用CAST 136
在SQL和主语言之间使用CAST 137
行值表达式 137
修饰分句 141
第十章 把注意力集中到所需数据上 141
FROM分句 142
WHERE分句 143
比较判断 144
BETWEEN 144
IN和NOT IN 145
LIKE和NOT LIKE 146
NULL 148
ALL,SOME,ANY 149
EXISTS 150
UNIQUE 151
OVERLAPS 151
MATCH 152
完整性规则 153
逻辑连接符 155
AND 155
OR 156
NOT 156
HAVING分句 157
GROUP BY分句 157
ORDER BY分句 158
第十一章 关系操作符 161
UNION 161
INTERSECT 163
EXCEPT 165
联合(Joins) 165
基本联合(Basic join) 165
等同联合(Equi-join) 167
自然联合(Natural join) 169
交叉联合(Cross join) 169
条件联合(Condition join) 170
按列名联合(Column-name join) 170
内部联合(Inter join) 171
外部联合(Outer join) 171
并联合(Union join) 174
ON与WHERE做比较 179
第十二章 深入讨论嵌套查询 181
为什么用子查询? 182
返回行集合的子查询 182
子查询所做的事情 182
由关键字IN引入的子查询 183
由关键字NOT IN引出的子查询 184
返回单个值的子查询 186
ALL,SOME和ANY量词 188
作为存在性检测的子查询 190
EXISTS 191
NOT EXISTS 191
其他相关的子查询 191
由比较操作符引入的子查询 192
由IN引入的子查询 192
HAVING分句中的子查询 194
UPDATE,DELETE和INSERT语句 194
第四部分 控制操作 201
第十三章 提供数据库的安全性 201
SQL的数据控制语言(DCL) 201
用户访问权限 201
数据库的管理者 202
把权限交给用户 203
公共用户 203
数据库对象的所有者 203
插入数据 204
查看数据 205
修改表数据 205
从表中删除过时的行 205
引用相关表 206
使用域、字符集、排序和转换 206
转让授予权 207
取消权限 208
把GRANT和REVOKE一起使用省时又省力 209
第十四章 保护数据 211
对数据完整性的威胁 211
软件平台的不稳定性 211
设备故障 212
并行访问数据库 212
减少对数据的干扰性 213
使用SQL的事务 214
缺省事务 215
独立级别 215
隐含事务-开始语句 216
SET TRANSACTI0N 217
CONMMIT 218
ROLLBACK 218
锁定 218
备份 218
事务中的约束 219
第五部分 在应用程序中使用SOL 225
第十五章 SQL的实际使用 225
应用程序中的SQL 225
SQL与过程语言连接中的问题 226
过程语言的优缺点 226
SQL的优缺点 226
被嵌套的SQL 227
说明主变量 229
数据类型的转换 229
模块语言 229
面向对象的RAD工具 231
R:BASE 233
第十六章 光标 235
ORDER BY分句 236
查询表达式 236
说明一个光标 236
具有更新能力的分句 239
敏感度 239
滚动能力 240
打开一个光标 240
从单独一行读取数据 242
句法 242
滚动光标的定位 242
关闭光标 243
定位删除和定位修改语句 243
第十七章 动态的SQL 245
有准备的和无准备的动态SQL 246
预备部分 246
开始执行 246
PREPARE语句 247
描述动态SQL的语句 247
ALLOCATE DESCRIPTOR语句 250
DESCRIBE语句 250
GET DESCRIPTOR语句 253
SET DESCRIPTOR语句 255
EXECUTE语句 256
DEALLOCATE PREPARE语句和DEALLOCATE DESCRIPTOR语句 256
光标与动态SQL 257
动态定位语句 258
关于动态SQL的最后忠告 258
第十八章 错误处理 259
SQLCODE 259
SQLSTATE 260
WHENEVER分句 261
诊断域 262
第六部分 十点集粹 269
第十九章 普通的错误 269
当客户请你设计并建立一个数据库系统时,应当相信他知道自己的需要 269
在工程开始阶段时,不要为协议的范围所烦恼 270
在确定可行性时,只考虑技术因素 270
在设计数据库时,不要求用户反馈信息 270
选择熟悉的开发环境,而不管它是否适合于这个工作 270
选择熟悉的系统结构,而不管它是否适合于这个工作 270
不想在新系统的文档上花时间,因为它设计得那么好,不会有人想修改它 271
把新系统立刻作为产品出售,而忽略第二位的测试 271
跳过设计检查,因为设计检查是浪费编程时间 271
定义数据库的表,而不管它们是如何彼此相关的 271
第二十章 检索忠告 273
检查数据库的结构是否合理 273
首先在一个试验数据库上完成查询 273
检查三次含有联合的查询 274
检查三次含有子查询的查询 274
为了对表中或视图中的组数据求和,使用GROUP BY分句与集函数 274
注意在GROUP BY分句上的约束 274
定期地对数据库做备份 275
妥善地处理错误问题 275
把圆括号用于逻辑连接符AND,OR和NOT 275
不应把检索权限授予不应有此权的人们 275
附录A SQL-92保留字 277
附录B SQL-92说明中的三个层:条目层、简介层和详细层 279
SQL-92的条目 279
SQL-92的简介层 279
SQL-92的详细说明层 280
词汇表 281