SQL宝典

SQL宝典
作 者: Alex Kriegel Boris Trukhnov 陈冰
出版社: 电子工业出版社
丛编项: 美国计算机“宝典”丛书
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Sever
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《SQL宝典》作者简介

内容简介

现在拿到的这本书,是有关SQL的可用的最新最完整的参考。它包含了经核准的最新的SQL规范SQL99,以它的标准格式,可以把本书中的代码和技术应用到来自任何主要开发商的SQL数据库中,这些数据库包括Microsoft SQL Server,Oracle以及IBM DB2。因为作者强调的是标准的SQL,因此,可以执行不同的数据库应用程序,并可以确信这些代码将在任何主要的开发商提供的产品中都能工作得很好。无论是一位准备尝试数据库编程的数据库管理员,还是一位有经验的希望查找有关SQL99内容的数据库程序员,都将发现《SQL宝典》是完整的解决方案。本书的主要内容包括:SQL的基本概念和原理、创建和修改数据库对象、数据操作和事务控制、检索和转换数据、利用系统目录来实现安全、超越SQL:过程化程序设计和数据库访问机制等内容。附录中介绍了本书附带光盘的内容及大量的对读者极有价值的参考资料。本书适用于广泛使用SQL的读者,从初级到高级的读者都有参考价值。

图书目录

前言 1

第1部分 SQL的基本概念和原理 5

第1章 SQL和关系型数据库管理系统 7

1.1 理想的数据库特征 7

1.1.1 充足的容量 7

1.1.2 足够的安全 8

1.1.3 多用户环境 8

1.1.4 效率 8

1.1.5 可伸缩性 8

1.1.6 用户友好 8

1.2 选择数据库软件 9

1.2.1 市场份额 9

1.2.2 所有权的总成本 9

1.2.3 支持和持续 10

1.3 一切的细节:DBMS实现 10

1.4 现实中的数据库例子 11

1.4.1 订购管理系统数据库 11

1.4.2 健康护理提供者数据库 12

1.4.3 科学数据库 12

1.4.4 非盈利组织数据库 13

1.5 旧有数据库 13

1.5.1 平面文件数据库 13

1.5.2 层次数据库 14

1.5.3 网状数据库 15

1.6 关系型数据库 16

1.6.1 表 16

1.6.2 关系 17

1.6.3 主键 18

1.6.4 外键 18

1.6.5 RDBMS的发展 19

1.7 对象数据库和对象关系型数据库模型 19

1.8 SQL和SQL标准简史 20

1.8.1 卑微的开始:RDBMS和SQL的演变 20

1.8.2 SQL标准简史 22

1.9 小结 24

第2章 SQL基本概念和原理 25

2.1 SQL标准回顾 25

2.2 SQL初探 28

2.2.1 数据库范例 28

2.2.2 获取和导出数据 29

2.2.3 从不同的角度查看数据 31

2.2.4 聚合 32

2.2.5 数据安全 33

2.2.6 从客户端应用程序访问数据 34

2.2.7 新的发展 34

2.3 平台无关性 35

2.4 小结 37

第3章 SQL数据类型 39

3.1 字符串与二进制串 40

3.1.1 字符串 40

3.1.2 二进制串 46

3.2 数字 48

3.2.1 精确的数字 48

3.2.2 近似的数字 51

3.3 日期和时间数据类型 52

3.3.1 复杂数据类型入门 52

3.3.2 日期和时间实现 53

3.4 对象和用户定义的数据类型 58

3.4.1 SQL99 59

3.4.2 Oracle 9i 59

3.4.3 DB2 UDB 8.1 61

3.5 其他数据类型 62

3.5.1 BOOLEAN 62

3.5.2 ROWID 63

3.5.3 UROWID 63

3.5.4 BFILE 63

3.5.5 DATALINK 63

3.5.6 BIT 63

3.5.7 TIMESTAMP 63

3.6 NULL 64

3.7 小结 64

第2部分 创建和修改数据库对象 65

第4章 创建RDBMS对象 67

4.1 表 67

4.1.1 CREATE TABLE语句 68

4.2 索引 88

4.2.1 CREATE INDEX语句 90

4.3 视图 93

4.3.1 CREATE VIEW语句 93

4.3.2 创建复杂视图 98

4.4 别名和同义词 100

4.4.1 SQL99 102

4.4.2 Oracle 9i的CREATE SYNONYM语句 102

4.4.3 DB2 UDB 8.1 的CREATE ALIAS/SYNONYM语句 103

4.4.4 MS SQL Server 2000 103

4.5 模式 103

4.5.1 CREATE SCHEMA语句 103

4.6 其他SQL99和实现专有的对象 107

4.6.1 SQL99中的域 107

4.6.2 表空间和文件组 107

4.6.3 序列 109

4.6.4 物化视图(Oracle 9i) 114

4.6.5 数据库链接(Oracle 9i) 115

4.7 CREATE语句交叉参考 116

4.8 小结 118

第5章 修改和删除RDBMS对象 119

5.1 表 119

5.1.1 ALTER TABLE语句 119

5.1.2 DROP TABLE语句 127

5.2 索引 129

5.2.1 Oracle 9i中的ALTER INDEX语句 129

5.2.2 DROP INDEX语句 130

5.3 视图 131

5.3.1 ALTER VIEW语句 131

5.3.2 DROP VIEW语句  132

5.4 别名和同义词 133

5.5 模式 134

5.6 其他实现专有的对象 134

5.6.1 表空间 134

5.6.2 序列 136

5.7 ALTER和DROP语句交叉参考 137

5.8 小结 139

第3部分 数据操作和事务控制 141

第6章 数据操作语言 143

6.1 INSERT:用数据来填充表 143

6.1.1 一般的INSERT语句子句 144

6.1.2 与开发商有关的特殊的INSERT语句 151

6.2 UPDATE:更新表的数据 155

6.2.1 一般的UPDATE语句子句 156

6.2.2 开发商特有的UPDATE语句细节 159

6.3 DELETE:从表中删除数据 160

6.3.1 一般的DELETE语句子句 161

6.3.2 开发商特有的DELETE语句子句 163

6.4 其他用于操作数据的SQL语句 163

6.4.1 MERGE语句 163

6.4.2 TRUNCATE语句 164

6.5 小结 165

第7章 会话. 事务和锁定 167

7.1 会话 167

7.2 事务 174

7.2.1 什么是一个事务 174

7.2.2 事务的COMMIT和ROLLBACK 175

7.2.3 事务隔离级别 180

7.3 理解锁定 182

7.3.1 锁定模式 183

7.3.2 处理死锁 185

7.4 小结 186

第4部分 检索和转换数据 187

第8章 理解SELECT语句 189

8.1 单一表SELECT语句语法 189

8.2 SELECT子句:到底要选择什么 190

8.2.1 单一列选择 190

8.2.2 多列SELECT 190

8.2.3 使用字面值. 函数和计算列 193

8.2.4 在一个SELECT子句中使用子查询 197

8.3 FROM子句 198

8.3.1 从表和视图中选择 198

8.3.2 在一个FROM子句中使用别名 198

8.3.3 在一个FROM子句中使用子查询 199

8.4 WHERE子句:设置水平限制 200

8.4.1 使用比较运算符 200

8.4.2 复合运算符:使用AND和OR 201

8.4.3 使用BETWEEN运算符 202

8.4.4 使用IN运算符:设置成员资格测试 203

8.4.5 使用IS NULL运算符:针对NULL的专门测试 204

8.4.6 在一个WHERE子句中使用子查询 205

8.5 GROUP BY和HAVING子句:汇总结果 208

8.6 ORDER BY子句:排序查询的输出 211

8.7 联合多个查询的结果 214

8.7.1 UNION 214

8.7.2 EXCEPT 218

8.8 小结 220

第9章 多表查询 221

9.1 内连接 221

9.1.1 用于内连接的两个语法 221

9.1.2 同等连接 223

9.1.3 非同等连接 225

9.1.4 自连接 227

9.1.5 交叉连接 229

9.1.6 连接两个以上的表 230

9.2 外连接:基于包含NULL值的列连接表 233

9.2.1 外连接的两个语法 233

9.2.2 左外连接 234

9.2.3 右外连接 237

9.2.4 全外连接 238

9.2.5 合并连接 239

9.3 涉及内联视图的连接 239

9.4 使用相关查询的多表连接 240

9.5 提高多表查询的效率 241

9.6 小结 242

第10章 SQL函数 243

10.1 数字函数 245

10.1.1 CEIL 246

10.1.2 ROUND 246

10.1.3 TRUNC 247

10.1.4 RAND 248

10.1.5 SIGN 249

10.2 字符串函数 249

10.2.1 CONCAT 250

10.2.2 CHARINDEX, INSTR, LOCATE以及POSSTR 251

10.2.3 SUBSTR和SUBSTRING 253

10.2.4 LENGTH 254

10.2.5 LOWER和UPPER 255

10.2.6 TO_CHAR, CHAR以及STR 255

10.2.7 REPLACE 256

10.2.8 REPLICATE和REPEAT 256

10.2.9 TRANSLATE 257

10.2.10 TRIM, LTRIM以及RTRIM 258

10.3 日期和时间函数 259

10.3.1 GETDATE, SYSDATE以及CURRENT DATE时区函数 260

10.3.2 ADD_MONTHS和DATEADD 262

10.3.3 EXTRACT和DATEPART 264

10.3.4 DAYNAME, MONTHNAME以及DATENAME 264

10.3.5 MONTHS_BETWEEN和DATEDIFF 265

10.4 聚合函数 266

10.4.1 SUM 267

10.4.2 COUNT 268

10.4.3 AVG 269

10.4.4 MIN和MAX 270

10.5 转换函数 271

10.5.1 不同数据类型之间的转换 272

10.5.2 在不同的字符集之间转换 278

10.5.3 Oracle 9i的CONVERT,TRANSLATE … USING和UNISTR 278

10.5.4 数据类型专有的转换函数 279

10.6 混杂函数 280

10.6.1 DECODE和CASE 281

10.6.2 COALESCE和NULLIF 283

10.6.3 NVL, NVL2以及ISNULL转换中易犯的错误 285

10.7 用户定义的函数 286

10.8 小结 286

第11章 SQL运算符 287

11.1 算术运算符 287

11.2 逻辑运算符 290

11.2.1 ALL 291

11.2.2 ANY | SOME 291

11.2.3 BETWEEN AND 291

11.2.4 IN 293

11.2.5 EXISTS 294

11.2.6 LIKE 295

11.2.7 AND 297

11.2.8 NOT 297

11.2.9 OR 298

11.3 运算符优先级 298

11.4 赋值运算符 300

11.5 比较运算符 301

11.6 位运算符 303

11.7 用户定义的运算符 305

11.8 小结 306

第5部分 利用系统目录来实现安全 307

第12章 SQL和RDBMS的安全 309

12.1 基本的安全机制 309

12.1.1 标识和身份验证 309

12.1.2 授权和访问控制 309

12.1.3 加密 310

12.1.4 完整性和一致性 310

12.1.5 审核 310

12.2 定义一个数据库用户 310

12.3 使用特权来管理安全 314

12.3.1 GRANT语句 314

12.3.2 REVOKE特权 326

12.4 使用角色管理安全 331

12.5 利用视图实现安全 336

12.6 利用约束实现安全 338

12.7 利用存储过程和触发器实现安全 339

12.8 数据加密 341

12.9 数据库审核 345

12.10 安全标准 348

12.10.1 国际安全标准 348

12.11 小结 350

第13章 系统目录和INFORMATION_SCHEMA 351

13.1 SQL系统目录 351

13.2 Oracle 9i数据字典 353

13.2.1 Oracle数据字典结构 353

13.2.2 Oracle数据字典和SQL99标准 355

13.2.3 更深一级:有关元数据的数据 356

13.3 IBM DB2 UDB 8.1系统目录 358

13.3.1 DB2中的INFORMATION_SCHEMA对象 358

13.3.2 获得有关INFORMATION_SCHEMA对象的信息 360

13.4 Microsoft SQL Server 2000系统目录 361

13.4.1 MS SQL Server 2000的INFORMATION_SCHEMA视图 361

13.4.2 Microsoft SQL Server系统存储过程 364

13.4.3 Microsoft SQL Server 2000系统函数 368

13.5 小结 370

第6部分 超越SQL:过程化程序设计和数据库访问机制 371

第14章 存储过程. 触发器以及用户定义的函数 373

14.1 过程化扩展的用途和好处 374

14.1.1 性能和网络通信量 374

14.1.2 数据库安全 375

14.1.3 代码的可重用性 375

14.2 SQL过程化语言的关键元素 375

14.2.1 变量和赋值 375

14.2.2 模块化. 子程序以及块结构 376

14.2.3 传递参数 377

14.2.4 有条件地执行 380

14.2.5 重复地执行 382

14.2.6 游标 383

14.2.7 错误处理 387

14.3 存储过程 389

14.3.1 CREATE PROCEDURE语法 389

14.3.2 创建一个简单的存储过程 390

14.3.3 删除一个存储过程 395

14.4 用户定义函数 396

14.4.1 CREATE FUNCTION语法 396

14.4.2 创建一个简单的函数 397

14.4.3 删除一个用户定义函数 399

14.5 触发器 400

14.5.1 CREATE TRIGGER语法 400

14.5.2 删除一个触发器 403

14.6 小结 403

第15章 动态和嵌入式SQL概述 405

15.1 SQL语句处理步骤 405

15.2 嵌入式(静态)SQL 406

15.2.1 嵌入式SQL和SQL99标准 406

15.2.2 嵌入式SQL基本原理 407

15.3 动态SQL技术 416

15.3.1 动态SQL的两个变种 416

15.3.2 动态SQL和SQL99标准 416

15.3.3 动态SQL的基本原理 417

15.4 嵌入式SQL的未来 425

15.5 小结 426

第16章 SQL API 427

16.1 SQL/CLI标准 427

16.2 Microsoft开放式数据库连接:ODBC 430

16.2.1 在Windows上配置一个ODBC数据源名称 431

16.3 Java数据库连接:JDBC 433

16.4 IBM DB2 UDB调用级接口:CLI 437

16.5 Oracle调用接口:OCI 439

16.6 用于OLE的Oracle对象 442

16.7 Microsoft数据访问接口 444

16.8 小结 451

第17章 新的发展:XML. OLAP以及对象 453

17.1 XML 453

17.1.1 Oracle 9i 454

17.1.2 IBM DB2 UDB 8.1 455

17.1.3 Microsoft SQL Server 2000 456

17.2 OLAP和商业智能 457

17.2.1 Oracle 9i 459

17.2.2 IBM DB2 UDB 8.1 459

17.2.3 Microsoft SQL Server 2000 459

17.3 对象 460

17.3.1 OOP 460

17.3.2 Oracle 9i的支持 462

17.3.3 IBM DB2 UDB 8.1的支持 462

17.3.4 Microsoft SQL Server 2000 463

17.3.5 抽象数据类型 464

17.3.6 面向对象的数据库 464

17.4 小结 466

附录A 光盘中的内容 467

附录B ACME样例数据库 471

附录C 关系型数据库设计基础 485

附录D 安装RDBMS软件 491

附录E 访问RDBMS 521

附录F 安装ACME数据库 531

附录G SQL函数 535

附录H SQL语法参考 553

附录I SQL保留的关键字 561

附录J 不同的RDBMS对SQL99主要功能的遵从性 571

附录K 其他的RDBMS 581

附录L 记数系统. 布尔代数以及集合论的简短介绍 585