目 录
第1章 数据库基础 1
1.1 数据库基础知识 2
1.1.1 几个数据库应用案例 2
1.1.2 相关数据库的名词 2
1.1.3 计算机数据管理 3
1.1.4 数据库系统的组成 4
1.1.5 数据库系统的特点 5
1.2 数据库发展史 6
1.2.1 第一代数据库 6
1.2.2 第二代数据库 7
1.2.3 第三代数据库 7
1.3 当今流行的数据库管理系统简介 7
第2章 设置SQL语句执行的环境 9
2.1 在Access 2003中执行SQL 10
2.1.1 Access 2003的安装与启动 10
2.1.2 通过Access的图形界面创建
数据库 10
2.1.3 在Access中执行SQL语句 11
2.2 在SQL Server中执行SQL 13
2.2.1 SQL Server 2000的安装 13
2.2.2 使用企业管理器创建数据库 13
2.2.3 使用查询分析器执行SQL语句 14
2.3 在Oracle 10g中执行SQL语句 15
2.3.1 安装Oracle 10g 15
2.3.2 使用SQL*Plus执行SQL语句 16
2.4 执行SQL脚本文件 19
2.4.1 SQL脚本文件 19
2.4.2 在SQL Server的查询分析器中
执行脚本文件 20
2.4.3 在Oracle的SQL*Plus中执行
脚本文件 21
第3章 SQL语言基础 23
3.1 SQL概述 24
3.1.1 SQL的历史 24
3.1.2 SQL的特点 24
3.1.3 SQL的功能 25
3.2 SQL语言的组成 25
3.3 探索SQL环境 27
3.3.1 了解SQL执行环境 27
3.3.2 了解SQL数据库的层次结构 27
3.3.3 在SQL环境中命名对象 28
第4章 数据表 29
4.1 数据类型 30
4.1.1 字符型数据 30
4.1.2 数字型数据 30
4.1.3 日期时间数据 30
4.1.4 二进制数据 31
4.1.5 图片、声音、视频数据 31
4.1.6 自定义数据类型 31
4.1.7 Access中的数据类型 31
4.1.8 MySQL中的数据类型 33
4.1.9 SQL Server中的数据类型 35
4.1.10 Oracle中的数据类型 37
4.2 数据表基础 38
4.2.1 记录和字段 38
4.2.2 表结构 39
4.3 表逻辑设计 39
4.3.1 E-R模型图 39
4.3.2 规范化与范式 41
4.4 表的创建(CREATE TABLE) 42
4.4.1 使用CREATE TABLE语句
创建表 42
4.4.2 创建带有主键的表 43
4.5 表结构的修改(ALTER TABLE) 44
4.5.1 ALTER TABLE语句格式 44
4.5.2 增加新字段 45
4.5.3 增加带有默认值的新字段 46
4.5.4 修改字段的类型和宽度 47
4.5.5 删除字段 48
4.5.6 删除带有默认值的字段 49
4.5.7 更改主键 50
4.6 表的删除、截断与重命名 51
4.6.1 删除表 51
4.6.2 截断表 51
4.6.3 重命名表 51
4.7 创建与删除数据库 52
4.7.1 创建数据库 52
4.7.2 删除数据库 53
4.7.3 创建本书使用的数据表 53
第5章 索引 57
5.1 索引基础 58
5.1.1 使用索引的原因 58
5.1.2 索引的种类 58
5.2 索引的创建和使用 59
5.2.1 创建索引前应当注意的内容 59
5.2.2 创建索引的SQL语句 59
5.2.3 创建和使用非聚簇索引 60
5.2.4 创建和使用唯一索引 62
5.3 索引的删除 63
第6章 查询数据——SELECT语句 65
6.1 SELECT语句的组成结构 66
6.1.1 最基本的语法格式 66
6.1.2 带有主要子句的语法格式 67
6.1.3 SELECT各子句的执行顺序 67
6.1.4 关于SELECT语句的一些说明 68
6.2 查询数据 68
6.2.1 查询单字段的方法 68
6.2.2 去除重复信息——DISTINCT 69
6.2.3 查询多字段 69
6.2.4 查询所有字段 70
6.2.5 根据现有字段值计算新字段值 71
6.2.6 命名新列(别名)——AS 72
6.2.7 将查询结果保存为新表 73
6.2.8 连接字段 74
6.3 排序数据 76
6.3.1 按单字段排序 76
6.3.2 设置排序方向 77
6.3.3 按多字段排序 77
6.3.4 按字段位置排序 78
第7章 条件查询 79
7.1 条件表达式 80
7.1.1 指针与字段变量的概念 80
7.1.2 条件表达式 80
7.2 使用WHERE关键字设置查询
条件 83
7.2.1 WHERE子句用法 83
7.2.2 查询数值数据 84
7.2.3 查询字符型数据 85
7.2.4 查询日期数据 87
7.2.5 按范围查询数据(BETWEEN) 88
7.2.6 查询空值 89
7.3 排序条件查询的结果 90
7.4 TOP与ROWNUM的使用 90
第8章 高级条件查询 93
8.1 组合WHERE子句 94
8.1.1 AND运算符 94
8.1.2 OR运算符 95
8.1.3 AND与OR的优先顺序问题 96
8.2 使用IN运算符 97
8.2.1 使用IN运算符 97
8.2.2 使用IN运算符的优点 99
8.3 NOT运算符 100
8.4 实现模糊查询 102
8.4.1 LIKE运算符 102
8.4.2 “%”通配符 103
8.4.3 使用“%”通配符查询日期型数据 105
8.4.4 “_”通配符 106
8.4.5 “[]”通配符 108
8.4.6 SQL Server、Access和Oracle
中的通配符比较 109
8.4.7 定义转义字符 109
第9章 SQL函数的使用 111
9.1 SQL函数的说明 112
9.2 SQL Server的函数 112
9.2.1 类型转换函数 112
9.2.2 日期函数 115
9.2.3 数学函数 118
9.2.4 字符函数 119
9.3 Oracle的函数 123
9.3.1 类型转换函数 123
9.3.2 日期函数 127
9.3.3 数值函数 130
9.3.4 字符函数 131
9.4 将NULL更改为其他值的函数 132
9.4.1 SQL Server的ISNULL函数 132
9.4.2 Oracle的NVL函数 133
9.5 IF…ELSE逻辑函数 133
9.5.1 DECODE函数 133
9.5.2 CASE函数 134
第10章 聚合函数与分组数据 137
10.1 聚合函数 138
10.1.1 使用COUNT函数求记录个数 138
10.1.2 使用SUM函数求某字段的和 140
10.1.3 使用AVG函数求某字段的
平均值 141
10.1.4 使用MAX、MIN函数求最大、
最小值 142
10.1.5 统计汇总相异值(不同值)记录 143
10.1.6 聚合函数对NULL值的处理 144
10.2 数据分组 146
10.2.1 将表内容按列分组 146
10.2.2 聚合函数与分组配合使用 147
10.2.3 查询数据的直方图 148
10.2.4 排序分组结果 149
10.2.5 反转查询结果 149
10.2.6 使用HAVING子句设置
分组查询条件 151
10.2.7 HAVING子句与WHERE子句的
区别 151
第11章 多表连接查询 153
11.1 将数据存储在多个不同表的
原因 154
11.2 范式 155
11.3 连接查询 156
11.3.1 连接两表的方法 156
11.3.2 使用笛卡儿积解决录入难题 158
11.3.3 使用两表连接查询数据 161
11.3.4 多表连接查询 162
11.3.5 使用表别名简化语句 163
11.3.6 使用INNER JOIN连接查询 164
11.4 高级连接查询 165
11.4.1 自连接查询 165
11.4.2 内连接查询 168
11.4.3 外连接查询 169
11.4.4 交叉连接查询 172
11.4.5 连接查询中使用聚合函数 174
11.5 组合查询 176
11.5.1 使用组合查询 176
11.5.2 使用UNION的规则 178
11.5.3 使用UNION解决不支持全外
连接的问题 179
11.5.4 使用UNION得到复杂的统计
汇总样式 180
11.5.5 排序组合查询的结果 180
第12章 子查询 185
12.1 返回单值的子查询 186
12.1.1 使用返回单值的子查询 186
12.1.2 子查询与聚合函数的配合使用 187
12.2 返回一列值的子查询 189
12.2.1 使用IN的子查询 190
12.2.2 使用NOT IN的子查询 191
12.3 相关子查询 192
第13章 视图 195
13.1 视图基础 196
13.1.1 视图引例 196
13.1.2 使用视图的原因以及注意问题 198
13.1.3 视图的规则和限制 199
13.2 视图的创建 200
13.2.1 创建视图的SQL语句 200
13.2.2 利用视图提高数据安全性 202
13.2.3 利用视图得到汇总数据 203
13.2.4 利用视图简化计算字段的使用 204
13.2.5 利用视图简化多表连接 206
13.3 视图的删除 207
第14章 插入数据 209
14.1 直接向表插入数据 210
14.1.1 插入完整的行 210
14.1.2 向日期时间型字段插入数据 211
14.1.3 将数据插入到指定字段 212
14.1.4 将查询结果插入表 214
14.1.5 INSERT SELECT与SELECT INTO
的区别 215
14.2 通过视图插入数据 216
14.2.1 通过视图插入数据 216
14.2.2 使用带有WITH CHECK OPTION
选项的视图 218
第15章 更新和删除数据 221
15.1 更新表中的数据 222
15.1.1 更新单个字段的数据 222
15.1.2 更新多个字段的数据 223
15.1.3 使用子查询更新数据 224
15.1.4 使用表连接更新数据 225
15.1.5 使用UPDATE语句删除指定
字段的数据 225
15.2 删除表中的数据 227
15.2.1 使用DELETE语句删除
指定记录 227
15.2.2 在DELETE语句中使用
多表连接 228
15.2.3 使用DELETE语句删除
所有记录 230
15.2.4 使用TRUNCATE语句删除
所有记录 230
15.3 通过视图更新表 231
15.3.1 不能用于更新的视图 231
15.3.2 通过视图更新表数据 232
15.3.3 通过视图删除表数据 233
第16章 管理数据库的安全 235
16.1 用户 236
16.1.1 创建用户 236
16.1.2 修改用户 237
16.1.3 为用户授予CREATE SESSION
权限 238
16.1.4 为用户授予SELECT权限 239
16.1.5 为用户授予INSERT、UPDATE
和DELETE权限 241
16.1.6 为用户授予系统权限 244
16.1.7 为所有用户授予权限 245
16.1.8 查看用户拥有的权限 246
16.1.9 取消用户的指定权限 247
16.1.10 删除用户 247
16.2 角色 247
16.2.1 角色的概念 247
16.2.2 创建角色——CREATE ROLE 248
16.2.3 为角色授权——GRANT 249
16.2.4 将角色授予用户——GRANT 250
16.2.5 查看角色的权限 252
16.2.6 取消角色——REVOKE 253
16.2.7 删除角色——DROP ROLE 253
16.2.8 Oracle中系统预定义的角色 253
16.3 SQL Server安全管理 254
16.3.1 SQL Server的安全认证模式 254
16.3.2 向SQL Server添加安全账户 256
16.3.3 从SQL Server中删除安全账户 259
16.3.4 SQL Server权限管理 260
16.3.5 SQL Server角色管理 263
第17章 完整性控制 267
17.1 了解完整性约束 268
17.1.1 数据的完整性 268
17.1.2 完整性约束的类型 268
17.2 与表有关的约束 269
17.2.1 字段约束与表约束的创建 269
17.2.2 非空约束——NOT NULL 270
17.2.3 唯一约束——UNIQUE 271
17.2.4 主键约束——PRIMARY KEY 274
17.2.5 外键约束——FOREIGN KEY 276
17.2.6 校验约束——CHECK 278
17.3 扩展外键约束的内容 280
17.3.1 引用完整性检查 280
17.3.2 MATCH子句 282
17.4 扩展校验约束的内容 284
17.4.1 定义断言 284
17.4.2 创建域和域约束 285
17.5 SQL Server中的完整性控制 286
17.5.1 创建规则(Rule) 286
17.5.2 规则的绑定与松绑 287
17.5.3 创建默认值(Default) 289
17.5.4 默认值的绑定与松绑 291
第18章 存储过程和函数 295
18.1 存储过程简介 296
18.1.1 存储过程基础 296
18.1.2 存储过程的优点 297
18.2 在SQL Server中创建和使用
存储过程 297
18.2.1 SQL Server的系统存储过程 297
18.2.2 创建存储过程的语法 298
18.2.3 调用语句EXECUTE的语法 300
18.2.4 创建简单存储过程 300
18.2.5 创建带输入参数的存储过程 301
18.2.6 给输入参数设置默认值 302
18.2.7 创建带输出参数的存储过程 303
18.2.8 创建有多条SQL语句的存储
过程 304
18.2.9 删除存储过程 305
18.3 在SQL Server中创建和使用
函数 307
18.3.1 标量函数 307
18.3.2 表值函数 308
18.3.3 删除用户定义函数 311
18.4 几个系统存储过程的使用 311
18.4.1 使用sp_rename重命名对象 311
18.4.2 使用sp_depends显示引用对象 311
18.4.3 使用sp_help显示对象信息 312
18.4.4 使用sp_helptext显示对象的
源码 312
18.5 Oracle中的存储过程和函数 313
18.5.1 在Oracle中使用存储过程 313
18.5.2 在Oracle中使用函数 314
18.5.3 在Oracle中使用user_source
获取信息 315
第19章 SQL触发器 317
19.1 SQL触发器基础 318
19.2 在SQL Server中创建和使用
触发器 318
19.2.1 创建触发器的语法 318
19.2.2 使用INSERT触发器 320
19.2.3 使用DELETE触发器 321
19.2.4 使用UPDATE触发器 323
19.2.5 使用INSTEAD OF触发器 325
19.2.6 使用条件插入触发器 326
19.2.7 删除触发器 329
19.3 在Oracle中创建和使用触发器 329
19.3.1 创建触发器的语法 329
19.3.2 行级触发器 330
19.3.3 语句级触发器 331
19.3.4 判断所执行的数据修改操作 332
19.3.5 系统触发器 332
19.3.6 追踪数据库启动与关闭信息 333
19.3.7 追踪用户DDL操作信息 335
19.3.8 禁用和删除触发器 338
19.3.9 从user_triggers中查询触发器
信息 339
第20章 控制流语句 341
20.1 Transact_SQL的控制流语句 342
20.1.1 BEGIN…END语句 342
20.1.2 IF…ELSE语句 342
20.1.3 WHILE语句 343
20.1.4 BREAK命令 344
20.1.5 CONTINUE命令 344
20.1.6 WAITFOR语句 345
20.2 PL/SQL的控制流语句 345
20.2.1 IF…THEN…ELSE语句 346
20.2.2 IF…THEN…ELSIF语句 346
20.2.3 LOOP语句 346
20.2.4 WHILE语句 347
20.2.5 FOR语句 347
20.3 控制流语句的几个应用 348
20.3.1 判断数据库对象是否存在 348
20.3.2 向日志表循环插入日期数据 351
20.3.3 使用游标和循环提取数据 353
第21章 事务处理 357
21.1 事务基础 358
21.1.1 事务的概念 358
21.1.2 事务的案例 358
21.1.3 事务的ACID特性 359
21.2 控制事务处理 359
21.2.1 开始事务处理 359
21.2.2 使用ROLLBACK撤销事务 360
21.2.3 使用COMMIT提交事务 362
21.2.4 根据判断提交或撤销事务 364
21.2.5 Oracle的语句级事务处理 366
21.2.6 使用保存点 367
21.3 并发事务 369
21.3.1 并发事务 369
21.3.2 事务锁 371
21.3.3 事务隔离级别 371
第22章 Visual Basic中使用SQL语句 373
22.1 ADO简介 374
22.1.1 ADO基础知识 374
22.1.2 ADO的优点 374
22.1.3 ADO的核心对象 375
22.2 连接数据库 375
22.2.1 在工程中引用ADO 375
22.2.2 连接Access数据库 376
22.2.3 连接SQL Server和Oracle
数据库 377
22.2.4 连接ODBC数据源 379
22.3 执行SQL语句操作数据库 381
22.3.1 使用Connection对象执行CREATE
TABLE语句 381
22.3.2 使用Connection对象执行INSERT
语句 384
22.3.3 使用Connection对象执行UPDATE
语句 385
22.3.4 使用Connection对象执行DELETE
语句 385
22.3.5 使用RecordSet对象执行Select
语句 386
第23章 Visual C++中使用SQL语句 389
23.1 在项目中引用ADO 390
23.2 连接数据库 391
23.2.1 连接SQL Server数据库 391
23.2.2 连接Access和Oracle数据库 393
23.2.3 连接ODBC数据源 395
23.3 执行SQL语句操作数据库 395
23.3.1 使用Recordset对象执行CREATE
TABLE语句 395
23.3.2 使用Connection对象执行INSERT
语句 399
23.3.3 使用Connection对象执行UPDATE
语句 401
23.3.4 使用Connection对象执行DELETE
语句 403
23.3.5 使用RecordSet对象执行Select
语句 404
第24章 Visual C#中使用SQL语句 409
24.1 连接数据库 410
24.1.1 在项目中添加引用语句 410
24.1.2 连接SQL Server数据库 410
24.1.3 连接Access和Oracle数据库 412
24.2 执行SQL语句操作数据库 415
24.2.1 使用SqlCommand对象执行CREATE
TABLE语句 415
24.2.2 使用SqlCommand对象执行INSERT
语句 418
24.2.3 使用SqlCommand对象执行UPDATE
语句 419
24.2.4 使用SqlCommand对象执行DELETE
语句 421
24.2.5 使用SqlCommand对象执行Select
语句 423