第1部分 SQL基本概念和原理 3
第1章SQL和关系数据库管理系统 3
理想的数据库特征 3
充足的容量 3
足够的安全和审核 4
多用户环境 4
效率和查找能力 4
可伸缩性 4
用户友好 4
选择数据库软件 5
市场占有率 5
总拥有成本 5
支持和持久性 6
主要DBMS实现 6
现实中的数据库例子 7
订购管理系统数据库 7
健康护理提供者数据库 8
视频共享和编辑数据库 8
科学数据库 8
非营利组织数据库 8
早期数据库 9
平面文件数据库 9
层次数据库 9
网状数据库 10
关系数据库 11
表 11
关系 12
主键 12
外键 13
RDBMS的发展 13
其他DBMS模型 13
SQL和SQL标准简史 14
卑微的开始:RDBMS和SQL的演变 14
SQL标准简史 16
小结 18
第2章SQL基本概念和原理 19
约定和要求 19
SQL初探 22
数据库示例 22
获取和导出数据 22
从不同角度看数据 24
聚合 25
数据安全 25
从客户端应用程序访问数据 26
新的发展 26
平台和时间无关性 27
小结 28
第3章SQL数据类型 30
不附加字符串 31
字符串 31
二进制字符串 35
数字 36
精确数字 37
近似数字 38
日期和时间数据类型 39
复杂数据类型介绍 39
日期和时间实现 40
XML数据类型 44
结构数据类型和用户定义数据类型 44
SQL:2003 45
Oracle 11g 46
DB2 9.5 47
Microsoft SQL Server 2008 48
其他数据类型 48
BOOLEAN 48
ROWID 49
UROWID 49
BFILE 49
DATALINK 49
BIT 49
TIMESTAMP 49
SQL_VARIANT 49
NULL 49
小结 50
第2部分 创建和修改数据库对象 53
第4章 创建RDBMS对象 53
表 53
索引 70
视图 74
CREATE VIEW语句 74
创建复杂视图 77
别名和同义词 79
SQL:2003 80
Oracle 11 g的CREATE SYNONYM语句 80
DB2 9.5的CREATE ALIAS语句 80
Microsoft SQL Server 2008的CREATE SYNONYM语句 81
架构 81
序列 83
SQL:2003中的外部序列生成器 84
Oracle 11g中的序列 84
DB2 9.5 85
其他SQL:2003以及特定于实现的对象 86
域(SQL:2003) 86
字符集(SQL:2003) 87
排序规则(SQL:2003) 87
表空间和文件组 87
物化视图(Oracle 11g) 88
数据库链接(Oracle 11g) 89
目录(Oracle 11g) 90
CREATE语句交叉参考 90
小结 92
第5章 修改和删除RDBMS对象 93
表 93
ALTER TABLE语句 93
DROP TABLE语句 99
索引 100
ALTER INDEX语句 100
DROPINDEX语句 101
视图 102
ALTER VIEW语句 102
DROP VIEW语句 103
别名和同义词 103
架构 104
SQL:2003 104
DB2 9.5 104
Microsoft SQL Server 2008 104
序列 105
ALTER SEQUENCE语句 105
DROP SEQUENCE语句 105
其他特定于实现的对象 106
域(SQL:2003) 106
字符集(SQL:2003) 106
排序规则(SQL:2003) 106
表空间 106
物化视图(Oracle 11 g) 107
数据库链接(Oracle 11 g) 107
目录(Oracle 1 1g) 107
ALTER和DROP语句交叉参考 108
小结 110
第3部分 数据操作和事务控制 113
第6章 数据操作语言 113
INSERT:用数据来填充表 113
一般的INSERT语句子句 114
供应商相关的特定INSERT语句 118
UPDATE:修改表数据 123
一般的UPDATE语句子句 123
供应商特定的UPDATE语句细节 126
DELETE:从表中删除数据 127
一般的DELETE语句子句 128
供应商特定DELETE语句子句 129
MERGE:将INSERT、 UPDATE以及DELETE结合到一个语句中 129
一般的MERGE语句子句 129
供应商特定的MERGE语句子句 130
TRUNCATE语句 132
小结 133
第7章 会话、事务和锁 134
会话 134
事务 139
什么是事务 139
事务的COMMIT和ROLLBACK 141
事务隔离级别 145
理解锁 147
锁定模式 147
处理死锁 149
小结 150
第4部分 检索和传送数据 153
第8章 理解SELECT语句 153
单表SELECT语句语法 153
SELECT子句:选取什么? 154
单列选取 154
多列SELECT 154
使用常量、函数和计算列 156
在SELECT子句中使用子查询 159
FROM子句:从哪里选取? 159
从表和视图中选取 159
在FROM子句中使用别名 160
在FROM子句中使用子查询(内联视图) 160
WHERE子句:设置水平限制 161
使用比较运算符 161
复合运算符:使用AND和OR 162
使用BETWEEN运算符 162
使用IN运算符:集成员身份测试 163
NOT运算符 164
使用IS NULL运算符:NULL值的专用测试 164
在WHERE子句中使用子查询 165
GROUP BY和HAVING子句:汇总结果 167
ORDER BY子句:对查询结果排序 169
联合多个查询的结果 170
UNION 171
INTERSECT 172
EXCEPT(MINUS) 173
SQL分析函数和TOP N查询 175
分析函数和SQL:2003标准 175
top N查询设计 176
Limit N查询 177
小结 178
第9章 多表查询 179
内部联接 179
内部联接的两个语法 179
同等联接 180
非同等联接 182
自联接 183
交叉联接(笛卡尔积) 184
对两个以上的表进行联接 185
外部联接:根据包含NULL值的列联接表 186
外部联接的两个语法 186
左外部联接 188
右外部联接 189
完全外部联接 190
合并联接 191
包含内联视图的联接 191
包含相关查询的多表联接 193
提高多表查询效率 193
小结 194
第10章SQL函数 195
数字函数 197
CEIL 198
ROUND 198
TRUNC 199
RAND 199
SIGN 200
字符串函数 200
CONCAT 201
CHARINDEX、INSTR、LOCATE和POSSTR 202
SUBSTR和SUBSTRING 203
LENGTH 204
LOWER和UPPER 205
TO_CHAR、CHAR和STR 205
REPLACE 206
REPLICATE和REPEAT 206
TRANSLATE 206
TRIM、LTRIM和RTTIM 207
日期和时间函数 208
GETDATE、SYSDATE和CURRENTDATE 209
ADD_MONTHS、DATEADD和日期算法 211
EXTRACT和DATEPART 211
DAYNAME、MONTHNAME和DATENAME 212
MONTHS_BETWEEN和DATEDIFF 213
聚合函数 213
SUM 215
COUNT 216
AVG 217
MIN和MAX 217
转换函数 218
不同数据类型之间的转换 218
在不同字符集之间转换 224
Oracle 11g的CONVERT、TRANSLATE...USING和UNISTR 224
特定于数据类型的转换函数 225
系统函数 226
杂项函数 228
DECODE和CASE 229
COALESCE和NULLIF 230
NVL、NVL2和ISNULL 230
用户定义函数 232
小结 232
第11章SQL运算符 233
算术运算符和字符串串联运算符 233
逻辑运算符 235
ALL 236
ANY│SOME 236
BETWEEN<expression>AND<expression> 236
IN 237
EXISTS 238
LIKE 238
AND 241
NOT 241
OR 241
运算符优先级 241
赋值运算符 243
比较运算符 243
位运算符 246
小结 247
第5部分 使用系统目录实现安全 251
第12章SQL和RDBMS的安全 251
基本安全机制 251
标识和身份验证 251
授权和访问控制 251
加密 252
完整性和一致性 252
审核 252
定义数据库用户 252
使用特权来管理安全 256
GRANT语句 256
REVOKE特权 264
使用角色管理安全 267
使用视图实现安全 271
利用约束实现安全 273
利用存储过程和触发器实现安全 274
数据加密 275
数据库审核 278
安全标准 280
国际安全标准 281
规章制度的遵从性 282
小结 283
第13章 系统目录和INFORMATION_SCHEMA 284
SQL系统目录 284
Oracle 11g数据字典 286
Oracle数据字典结构 287
Oracle数据字典和SQL:2007标准 288
更深一层:有关元数据的数据 289
IBM DB2 9.5系统目录 290
DB2中的INFORMATION_SCHEMA对象 290
获得有关INFORMATION_SCHEMA对象的信息 292
Microsoft SQL Server 2008系统目录 293
MS SQL Server 2008的INFORMATION_SCHEMA视图 293
Microsoft SQL Server系统存储过程 295
Microsoft SQL Server 2008系统函数 297
小结 299
第6部分 超越SQL:过程编程和数据库访问机制 303
第14章 存储过程、触发器和用户定义函数 303
过程化扩展的用途和好处 304
性能和网络通信量 304
数据库安全 304
代码的可重用性 305
SQL过程化语言的关键元素 305
变量和赋值 305
模块化、子程序和块结构 306
参数传递 307
有条件地执行 309
重复执行 310
游标 310
错误处理 313
存储过程 315
CREATE PROCEDURE语法 315
创建一个简单的存储过程 315
删除存储过程 319
用户自定义函数 319
CREATE FUNCTION语法 319
创建一个简单的函数 320
删除用户定义函数 322
触发器 322
CREATE TRIGGER语法 322
删除触发器 324
.Net存储过程和函数 324
小结 325
第15章SQL和XML 326
简介 326
XML的结构 326
格式化XML 327
DTD和架构 327
命名空间 328
作为数据源的XML 329
在应用程序里访问XML文档 329
XPath 330
XQuery 330
编码XML 330
表示XML文档 331
XML和RDBMS 332
Oracle 1 1g XML DB 333
IBM DB 9.5 pureXML 337
Microsoft SQL Server 2008 339
小结 343
第16章SQL和过程化程序设计 344
SQL语句的处理步骤 344
嵌入式SQL和动态SQL 345
嵌入式SQL 345
动态SQL技术 348
SQL/CLI标准 352
开放式数据库连接以及数据库对象链接和嵌入 355
ODBC 355
OLEDB 356
SQL和Java 356
Java数据库连接(JDBC) 356
SQLJ 359
Oracle API选项 360
Oracle调用接口 360
OLE的Oracle对象 361
.NET的Oracle数据提供程序 362
IBM DB2调用级接口 362
Microsoft数据访问接口 362
ActiveX数据对象 363
ADO.NET 363
小结 366
第17章SQL的未来 367
OLAP和商业智能 367
Oracle 11g 369
IBM DB2 9.5 369
Microsoft SQL Server 2008 370
SQL的LINQ 370
对象 371
OOP范例 371
SQL: 2003标准中的对象语言绑定(SQL/OLB) 372
Oracle 11g的支持 372
IBM DB2 9.5的支持 373
Microsoft SQL Server 2008 374
抽象数据类型 374
面向对象的数据库 375
小结 376
附录A配套网站 377
附录B ACME示例数据库 378
一般信息和业务规则 378
命名约定 379
表间关系 379
列约束和默认值 380
索引 380
视图 380
创建ACME数据库对象的SQL脚本 380
附录C关系数据库设计基础 387
标识实体和属性 388
规范化 388
第一范式 388
第二范式 389
第三范式 390
指定约束 391
OLTP与OLAP设计 391
数据仓库和数据市场 391
星型和雪花型架构 391
关系数据库设计的缺陷 392
附录D安装RDBMS软件 393
安装Oracle 11g 393
在Linux上安装Oracle 11g release 1(11.1.0.6.0)企业版 393
在Windows上安装Oracle11 g release 1(11.1.0.6.0)个人版 399
安装IBM DB2 9.5 401
安装Microsoft SQL Server 2008 404
安装Microsoft SQL Server 2008(CTP,2007年11月发布)的必备条件 404
在Windows Vista Enterprise Edition上安装 405
附录E访问RDBMS 409
使用ORACLE 11 g实用工具访问RDBMS 409
SQL*Plus 409
SQL Developer 411
Oracle企业管理器(SQL Worksheet) 412
使用IBM DB2 9.5实用工具访问RDBMS 413
命令行处理器(Command-Line Processor, CLP) 413
命令编辑器 414
使用Microsoft SQL Server 2008实用工具访问RDBMS 415
使用SQLCMD 415
使用SQL Server Management Studio 416
附录F安装ACME数据库 417
在Oracle 11g上使用SQL*Plus安装ACME数据库 417
Linux/UNIX 417
Microsoft Windows 417
在DB2 9.5 (Windows)上使用CLP安装ACME数据库 418
在Microsoft SQL Server 2008上使用SQLCMD实用工具安装ACME数据库 419
附录G SQL函数 420
附录H SQL语法参考 437
DDL语句 437
表 437
索引 438
视图 438
架构 438
存储过程 438
用户定义函数 438
触发器 438
DCL语句 439
DML语句 439
DQL语句 439
单表SELECT 439
多表SELECT 439
事务控制语句 440
谓词 440
附录I SQL保留关键字 442
未来的关键字 446
ODBC的保留关键字 447
附录J其他RDBMS 449
附录K数值系统、布尔代数和集合论简介 452
数值系统 452
RDBMS连接 452
转换数值 453
布尔代数的逻辑元素 453
NOT(补集或求反) 454
AND(布尔积) 454
OR(布尔和) 454
XOR(异或) 454
NAND(与非) 454
NOR(或非) 454
优先级规则 455
集合论 456
集合列表 456
子集 456
集合等式 456
集合运算 457
集合代数恒等式 459