第1章 关系型数据库与SQL概述 1
1.1 数据库系统概述 1
1.1.1 数据库系统的产生与发展 1
1.1.2 数据库的基本概念 3
1.1.3 数据库系统的组成 4
1.1.4 数据库系统体系结构 7
1.1.5 关系数据库 8
1.2 SQL基础 10
1.2.1 SQL的发展 10
1.2.2 SQL的特点 11
1.2.3 SQL数据库的体系结构 12
1.2.4 SQL语言的组成 13
1.2.5 SQL语句的结构 14
1.3 SQL环境 15
1.3.1 环境介绍 15
1.3.2 SQL的层次结构 15
1.4 SQL Server 2000介绍 16
1.4.1 SQL Server 2000简介 16
1.4.2 SQL Server 2000的版本 16
1.4.3 SQL Server 2000的特点 17
1.4.4 SQL Server 2000的工具 18
1.5 SQL Server 2008简介 21
1.5.1 SQL Server 2008概述 22
1.5.2 SQL Server 2008的版本 22
1.5.3 SQL Server 2008的新特性 22
1.5.4 SQL Server 2008的工具 25
1.6 本书使用的数据库和约定 29
1.6.1 图书信息表 29
1.6.2 用户信息表 29
1.6.3 图书类型表 30
1.6.4 订单表 30
1.6.5 图书评论表 30
第2章 数据库和表的操作 32
2.1 SQL Server数据库常用概念 32
2.2 数据库的操作 33
2.2.1 数据库的创建 33
2.2.2 数据库的删除 35
2.3 表的基础知识 35
2.4 SQL数据类型 36
2.4.1 字符型数据 36
2.4.2 数字型数据 37
2.4.3 日期型数据类型 38
2.4.4 二进制数据类型 39
2.4.5 文本和图形数据类型 40
2.4.6 自定义数据类型 40
2.5 表的创建 40
2.5.1 创建基本表 40
2.5.2 非空约束 42
2.5.3 DEFAULT指定缺省值 43
2.6 表的修改 45
2.6.1 增加新列 45
2.6.2 删除列 46
2.6.3 修改列 48
2.7 表的删除 51
2.8 表的重命名 52
第3章 数据的查询 53
3.1 准备知识 53
3.1.1 常量 53
3.1.2 运算符 54
3.1.3 表达式 54
3.1.4 内置函数 55
3.1.5 NULL值 57
3.2 查询的基本结构 57
3.2.1 SELECT语句结构 58
3.2.2 SELECT语句的执行步骤 58
3.3 列的查询 59
3.3.1 单列查询 59
3.3.2 多列查询 60
3.3.3 查询所有的字段 61
3.3.4 重复信息的去除 61
3.4 查询结果的排序 63
3.4.1 单列排序 63
3.4.2 多列排序 64
3.5 简单搜索条件的查询 65
3.5.1 WHERE子句单条件查询 65
3.5.2 WHERE子句运算符查询 66
3.5.3 BETWEEN子句条件查询 69
3.6 复杂搜索条件的查询 70
3.6.1 使用AND和OR运算符 70
3.6.2 使用IN运算符 74
3.6.3 使用NOT运算符 75
3.6.4 使用LIKE运算符 77
3.7 聚合函数与组合查询 82
3.7.1 聚合函数 82
3.7.2 GROUP BY子句 89
3.7.3 HAVING子句 90
3.8 多表查询 90
3.8.1 多表连接的目的 91
3.8.2 简单的二表连接与多表连接 91
3.8.3 多表连接的类型 96
3.8.4 UNION与UNIONJO子句 105
3.9 子查询 108
3.9.1 单行子查询的创建和使用 108
3.9.2 多行子查询的创建和使用 110
3.9.3 嵌套子查询的创建和使用 119
第4章 数据的插入 121
4.1 单行记录的插入 121
4.1.1 插入的基本语法 121
4.1.2 整行的插入 121
4.1.3 NULL值的插入 123
4.1.4 唯一值的插入 124
4.1.5 特定字段的插入 125
4.2 多行记录的插入 127
4.2.1 使用VALUES关键字 127
4.2.2 使用SELECT语句 128
4.3 数据转换服务(数据的导入/导出) 131
4.3.1 Access数据库数据的导出 131
4.3.2 Access数据库数据的导入 132
4.3.3 SQL Server 2000数据库数据的导出 134
4.3.4 SQL Server 2000数据库数据的导入 138
4.3.5 SQL Server 2008数据库数据的导出 140
4.3.6 SQL Server 2008数据库数据的导入 142
第5章 数据的更新和删除 148
5.1 数据的更新 148
5.1.1 UPDATE语句的简单结构 148
5.1.2 行值和列值的更新 149
5.1.3 UPDATE语句的复杂结构 152
5.1.4 数据分步更新 156
5.2 数据的删除 159
5.2.1 DELETE语句的结构 159
5.2.2 指定数据的删除 159
第6章 视图与索引的操作 164
6.1 视图的基础知识 165
6.1.1 视图的概念 165
6.1.2 视图的优缺点 165
6.2 视图的操作 167
6.2.1 视图的创建 167
6.2.2 视图数据的查询和修改 176
6.2.3 视图的删除 181
6.3 索引的基础知识 183
6.3.1 索引的概念 183
6.3.2 索引的分类 184
6.3.3 索引的使用原则 185
6.4 索引的操作 186
6.4.1 索引的创建 186
6.4.2 索引的删除 191
第7章 数据的完整性 192
7.1 数据完整性概述 192
7.1.1 数据完整性的定义 192
7.1.2 数据完整性的类型 192
7.2 约束 193
7.2.1 NOT NULL约束 193
7.2.2 UNIQUE约束 196
7.2.3 PRIMARY KEY约束 199
7.2.4 FOREIGN KEY约束 202
7.2.5 CHECK约束 216
7.3 规则和默认值 221
7.3.1 规则的操作 221
7.3.2 默认值的操作 224
第8章 SQL的安全性 228
8.1 SQL的安全模型概述 228
8.2 用户管理 230
8.2.1 SQL语句方式 230
8.2.2 存储过程方式 233
8.3 权限管理 234
8.3.1 GRANT语句授予权限 234
8.3.2 REVOKE语句取消权限 238
8.3.3 SELECT权限控制 242
8.3.4 INSERT权限控制 246
8.3.5 UPDATE权限控制 249
8.3.6 DELETE权限控制 253
8.4 角色管理 257
8.4.1 创建角色 257
8.4.2 删除角色 260
8.4.3 授予角色 260
8.4.4 取消角色 264
第9章 存储过程与用户自定义函数 267
9.1 Transact-SQL介绍 267
9.1.1 Transact-SQL概述 267
9.1.2 控制语句 272
9.2 存储过程概述 278
9.2.1 什么是存储过程 278
9.2.2 存储过程的优点 278
9.2.3 存储过程的种类 278
9.3 存储过程的创建和使用 279
9.3.1 存储过程的创建和执行 279
9.3.2 存储过程的使用 287
9.4 用户自定义函数概述 291
9.5 用户自定义函数的创建和使用 292
9.5.1 用户自定义函数的创建和调用 292
9.5.2 操作用户自定义函数 299
第10章 触发器 302
10.1 触发器概述 302
10.1.1 触发器的定义 302
10.1.2 触发器的作用 302
10.1.3 触发器的设计 304
10.2 DML触发器的创建及操作 305
10.2.1 创建DML触发器 305
10.2.2 DML触发器的操作 307
10.3 DML触发器的应用 310
10.3.1 INSERT触发器 310
10.3.2 DELETE触发器 316
10.3.3 UPDATE触发器 319
10.3.4 INSTEAD OF触发器 325
10.3.5 嵌套触发器 329
10.3.6 递归触发器 331
10.4 DDL触发器的创建及使用 333
第11章 游标 337
11.1 游标概述 337
11.1.1 游标的概念 337
11.1.2 游标的分类 338
11.2 游标的操作 339
11.2.1 游标的创建 339
11.2.2 游标的打开 342
11.2.3 获取游标数据 342
11.2.4 游标的关闭 343
11.2.5 游标的释放 344
11.3 游标的使用 345
11.3.1 基于游标的定位 345
11.3.2 基于游标的检索 346
11.3.3 利用游标对数据进行操作 348
11.3.4 在存储过程中使用游标 356
11.3.5 嵌套游标 360
第12章 事务控制与并发处理 363
12.1 事务的概述 363
12.1.1 事务的产生 363
12.1.2 事务的生命周期 364
12.1.3 事务的特性 364
12.2 事务控制的操作 365
12.2.1 事务处理语句 365
12.2.2 启动事务 366
12.2.3 提交和回滚事务 369
12.2.4 事务的保存点 371
12.3 事务的使用 372
12.3.1 嵌套事务 372
12.3.2 批处理中的事务 376
12.3.3 存储过程和触发器中的事务 377
12.3.4 应用游标的事务 380
12.4 并发处理 381
12.4.1 并发访问的问题 381
12.4.2 锁 382
12.4.3 事务的隔离级别 385
12.4.4 事务的阻塞及死锁 393
第13章 实例 399
13.1 实例数据库功能介绍 399
13.2 数据库和表的操作 400
13.2.1 数据库的创建 400
13.2.2 表的创建 400
13.2.3 表中数据的操作 402
13.3 完整性设置 405
13.3.1 约束的操作 406
13.3.2 规则的操作 408
13.3.3 默认值的操作 409
13.4 索引和视图的操作 409
13.4.1 索引的操作 409
13.4.2 视图的操作 410
13.5 安全性设置 410
13.5.1 用户的操作 410
13.5.2 角色的操作 411
13.5.3 权限的操作 412
13.6 存储过程及游标 414
13.6.1 利用存储过程来获得连接的信息 414
13.6.2 利用存储过程和游标来判断是否违反中断规则 415
13.7 触发器 417
13.7.1 INSERT触发器 417
13.7.2 UPDATE触发器 418
13.8 事务及并发处理 419