第1篇 SQL入门篇 2
第1章 SQL语言的概述 2
1.1 认识SQL语言 2
1.1.1 什么是SQL语言 2
1.1.2 SQL的历史与发展 2
1.1.3 SQL的功能和优点 3
1.2 认识数据库 4
1.2.1 什么是数据库 4
1.2.2 数据库系统的结构 4
1.2.3 数据库系统的工作流程 5
1.2.4 常见的SQL数据库管理系统 6
1.3 数据模型 8
1.3.1 关系数据库模型 8
1.3.2 数据模型的构成 9
1.3.3 常见的数据模型 9
1.4 关系型数据库 10
1.4.1 关系型数据库的定义 11
1.4.2 关系型数据库与表 11
1.4.3 主键与外键 11
1.4.4 字段约束 12
1.4.5 数据的完整性 13
1.4.6 关系数据库设计原则 14
1.5 SQL开发环境 14
1.5.1 SQL环境介绍 14
1.5.2 SQL的层次结构 15
1.5.3 SQL环境中的对象 16
1.5.4 SQL环境中的程序系统 17
1.6 SQL语句基础 17
1.6.1 SQL常量 17
1.6.2 SQL表达式 18
1.6.3 SQL数据类型 19
1.6.4 注释符 21
1.6.5 批处理 21
1.6.6 SQL语句的执行 22
1.7 SQL语法知识 22
1.7.1 SQL语法结构 22
1.7.2 常用的SQL语句 23
1.8 小结 24
第2章 设计数据库 25
2.1 设计数据库基础 25
2.1.1 数据库设计定义 25
2.1.2 设计数据库的意义 25
2.1.3 进行数据库设计的方法 26
2.2 数据实体和联系 26
2.2.1 实体、属性与联系 26
2.2.2 一对一联系 27
2.2.3 一对多联系 27
2.2.4 多对多联系 27
2.3 规范化准则 28
2.3.1 范式 28
2.3.2 第一范式 28
2.3.3 第二范式 29
2.3.4 第三范式 30
2.3.5 第四范式 32
2.4 小结 32
第2篇 数据库管理篇 34
第3章 数据库的相关操作 34
3.1 创建数据库 34
3.1.1 SQL标准中创建数据库的语法 34
3.1.2 使用SQL语句创建数据库 34
3.2 删除数据库 36
3.2.1 SQL标准中删除数据库的语法 36
3.2.2 使用SQL语句删除数据库 36
3.3 修改数据库 37
3.3.1 修改数据库语法 37
3.3.2 使用SQL语句修改数据库 38
3.4 管理数据库 39
3.4.1 扩充与压缩数据库 39
3.4.2 导入与导出数据 40
3.4.3 数据库的备份与恢复 43
3.4.4 使用sp_helpdb查看数据库信息 45
3.5 小结 46
第4章 数据表的相关操作 47
4.1 SQL中的数据表 47
4.1.1 数据表的结构 47
4.1.2 数据表的种类 48
4.2 创建数据表 48
4.2.1 创建数据表的语句结构 49
4.2.2 创建基本表 49
4.2.3 非空约束 50
4.2.4 DEFAULT指定缺省值 50
4.3 修改数据表 51
4.3.1 修改数据表的语句结构 52
4.3.2 给数据表增添新列 53
4.3.3 修改数据表中的列 54
4.3.4 删除数据表中的列 54
4.4 数据表的删除 55
4.4.1 删除数据表的语句结构 55
4.4.2 使用SQL语句删除数据表 55
4.5 数据表的重命名 55
4.5.1 重命名数据表的语句 55
4.5.2 使用SQL语句重命名数据表 56
4.6 小结 56
第5章 索引与视图 57
5.1 索引的基础知识 57
5.1.1 索引的概念 57
5.1.2 索引的类型 57
5.1.3 索引的结构 58
5.2 创建索引 58
5.2.1 创建索引的语句结构 59
5.2.2 创建非簇索引 59
5.2.3 创建簇索引 60
5.2.4 创建惟一索引 61
5.2.5 创建复合索引 62
5.3 删除索引 64
5.3.1 删除索引的语句结构 64
5.3.2 使用SQL语句删除索引 65
5.4 视图的基础知识 65
5.4.1 视图概述 65
5.4.2 视图的优点与缺点 65
5.5 视图的基本操作 66
5.5.1 创建视图的基本语句结构 66
5.5.2 使用SQL语句创建视图 67
5.5.3 修改视图的语句结构 69
5.5.4 重命名视图的名称 70
5.5.5 使用SQL语句修改视图 70
5.5.6 删除视图的语句结构 71
5.5.7 使用SQL语句删除视图 72
5.6 视图的应用 72
5.6.1 利用视图简化表的复杂连接 72
5.6.2 利用视图简化复杂查询 73
5.7 小结 74
第3篇 SQL查询篇 76
第6章 简单的SELECT语句查询 76
6.1 查询的基本结构 76
6.1.1 了解SELECT语句 76
6.1.2 SELECT语句的语法格式 76
6.1.3 SELECT语句的执行步骤 77
6.2 简单的查询语句 77
6.2.1 查询表中指定的字段 78
6.2.2 查询所有的字段 78
6.2.3 使用DISTINCT去除重复信息 79
6.2.4 使用别名 81
6.3 排序与分组 81
6.3.1 升序排序与降序排序 82
6.3.2 多列字段排序 84
6.3.3 使用GROUP BY子句对查询结果进行分组 86
6.3.4 HAVING子句的应用 88
6.4 条件查询 89
6.4.1 WHERE单条件语句查询 89
6.4.2 运算符查询 90
6.4.3 BETWEEN运算符范围筛选 92
6.4.4 使用TOP子句 93
6.4.5 NULL的判断 94
6.5 模糊查询 95
6.5.1 使用LIKE运算符进行查询 95
6.5.2 使用“_”通配符进行查询 97
6.5.3 使用“%”通配符进行查询 98
6.5.4 使用“[]”通配符进行查询 101
6.5.5 使用“[^]”通配符进行查询 102
6.6 小结 102
第7章 运算符与表达式相关查询 103
7.1 逻辑运算符 103
7.1.1 逻辑与运算符 103
7.1.2 逻辑或运算符 105
7.1.3 逻辑运算符的组合使用 106
7.2 IN运算符 107
7.2.1 IN运算符的使用 108
7.2.2 NOT IN运算符的使用 108
7.3 NOT运算符与BETWEEN运算符 109
7.3.1 NOT运算符的使用 109
7.3.2 NOT运算符与BETWEEN运算符的组合应用 111
7.4 数学运算符 111
7.4.1 数学运算符的种类 111
7.4.2 数学运算符的应用 112
7.5 集合查询运算符 114
7.5.1 UNION运算符 114
7.5.2 INTERSECT运算符 117
7.6 运算符的组合应用 118
7.6.1 逻辑运算符与IN运算符的组合应用 118
7.6.2 逻辑运算符与NOT运算符的组合应用 118
7.6.3 逻辑运算符与数学运算符的组合应用 119
7.6.4 逻辑运算符与集合运算符的组合应用 119
7.6.5 数学运算符与NOT运算符的组合应用 120
7.6.6 数学运算符与IN运算符的组合应用 120
7.6.7 数学运算符与集合运算符的组合应用 121
7.7 SQL中的表达式 121
7.7.1 CAST表达式的应用 121
7.7.2 CASE表达式的应用 123
7.8 小结 124
第8章 SQL函数 125
8.1 SQL函数基础 125
8.1.1 SQL语句函数 125
8.1.2 常用的SQL语句函数 126
8.2 日期函数和数学运算函数 126
8.2.1 日期时间函数 126
8.2.2 CONVERT函数转换日期、时间 129
8.2.3 数据运算函数 131
8.3 字符串函数 134
8.3.1 字符串处理函数介绍 134
8.3.2 字符转换函数 135
8.3.3 去字符串空格函数 136
8.3.4 取字符串长度的函数 137
8.3.5 查询包含部分字符串内容的数据 138
8.3.6 颠倒字符串的顺序 138
8.3.7 字符串替换 139
8.4 聚合函数 139
8.4.1 聚合函数概述 139
8.4.2 SUM函数运算 140
8.4.3 MAX函数运算 141
8.4.4 MIN函数运算 141
8.4.5 AVG函数运算 142
8.4.6 COUNT函数运算 143
8.4.7 聚合函数的组合使用 144
8.5 小结 144
第9章 连接查询 145
9.1 多表连接 145
9.1.1 多表连接的优点 145
9.1.2 简单的两表连接 145
9.1.3 多表连接举例 147
9.1.4 UNION JOIN连接表 149
9.2 自连接与自然连接 149
9.2.1 自连接 149
9.2.2 自然连接 150
9.3 内连接 151
9.3.1 等值连接 151
9.3.2 不等值连接 152
9.3.3 使用内连接实现多表连接 153
9.3.4 在内连接中使用聚合函数 154
9.4 外连接 154
9.4.1 左外连接 154
9.4.2 右外连接 156
9.4.3 全外连接 157
9.4.4 在外连接中使用聚合函数 158
9.5 交叉连接 160
9.5.1 交叉连接的定义 160
9.5.2 交叉连接举例 160
9.6 多表连接的综合应用 161
9.6.1 内连接与左外连接的综合应用 161
9.6.2 内连接与右外连接的综合应用 162
9.6.3 UNION集合运算与多表连接应用 163
9.7 小结 163
第10章 子查询 164
10.1 子查询的简单应用 164
10.1.1 子查询概述 164
10.1.2 在多表查询中使用子查询 165
10.1.3 在子查询中使用聚合函数 167
10.1.4 使用ANY或ALL运算符 168
10.1.5 使用子查询创建视图 169
10.2 使用IN语句的子查询 170
10.2.1 简单的IN语句子查询 171
10.2.2 使用IN子查询实现集合交运算 171
10.2.3 使用IN子查询实现集合差运算 172
10.3 使用EXISTS语句的子查询 172
10.3.1 简单的EXISTS语句子查询 172
10.3.2 使用EXISTS子查询实现两表交集 173
10.3.3 使用EXISTS子查询实现两表并集 174
10.3.4 使用NOT EXISTS的子查询 174
10.4 相关子查询 175
10.4.1 使用IN引入相关子查询 175
10.4.2 使用比较运算符引入相关子查询 175
10.4.3 在HAVING子句中使用相关子查询 176
10.5 UNIQUE子查询与嵌套子查询 177
10.5.1 UNIQUE子查询 177
10.5.2 嵌套子查询 178
10.6 小结 178
第4篇 T-SQL开发常用操作篇第11章 数据的维护操作 180
11.1 数据的插入操作 180
11.1.1 INSERT语句的基本语法 180
11.1.2 插入单条记录 181
11.1.3 NULL的插入 183
11.1.4 由VALUES关键字插入多行数据 184
11.1.5 使用SELECT语句插入数据 184
11.1.6 通过视图插入数据 187
11.1.7 使用子查询插入数据 188
11.2 数据的更新操作 189
11.2.1 UPDATE语句的基本语法 189
11.2.2 使用UPDATE语句更新指定的列值 189
11.2.3 数据字段中NULL的更改 190
11.2.4 更新全部数据 191
11.2.5 利用子查询更新数据 191
11.2.6 通过视图更新表数据 193
11.3 数据的删除操作 194
11.3.1 DELETE语句的语法结构 194
11.3.2 删除指定行的数据 194
11.3.3 删除所有数据 195
11.3.4 通过视图删除表数据 196
11.3.5 使用子查询删除数据 197
11.3.6 使用TRUNCATE TABLE语句 197
11.4 小结 198
第12章 完整性控制 199
12.1 完整性约束概述 199
12.1.1 数据的完整性简介 199
12.1.2 完整性约束的类型 200
12.1.3 数据完整性的意义 200
12.2 约束 200
12.2.1 DEFAULT约束 201
12.2.2 CHECK约束 203
12.2.3 PRIMARY KEY约束 205
12.2.4 UNIQUE约束 206
12.2.5 FOREIGN KEY约束 208
12.2.6 NOT NULL约束 209
12.2.7 列约束和表约束 210
12.3 规则 210
12.3.1 创建规则 210
12.3.2 规则的绑定与松绑 211
12.4 域约束与断言 214
12.4.1 域与域约束 214
12.4.2 利用断言创建多表约束 215
12.5 默认值 216
12.5.1 创建默认值 216
12.5.2 默认值的绑定与松绑 216
12.6 小结 218
第5篇 T-SQL高级编程篇 220
第13章 存储过程 220
13.1 存储过程概述 220
13.1.1 存储过程的基本概念 220
13.1.2 存储过程的优缺点 220
13.2 存储过程中常用的流控制语句 221
13.2.1 IF...ELSE语句 221
13.2.2 BEGIN...END语句 223
13.2.3 DECLARE语句 223
13.2.4 GOTO语句 224
13.2.5 WAITFOR语句 225
13.2.6 WHILE、BREAK和CONTINUE语句 225
13.2.7 PRINT语句 226
13.2.8 RETURN语句 227
13.2.9 注释 228
13.3 创建与执行存储过程 229
13.3.1 创建存储过程 229
13.3.2 创建带参数的存储过程 231
13.3.3 创建带OUTPUT返回参数的存储过程 232
13.3.4 执行存储过程 233
13.4 存储过程的查看、修改和删除 237
13.4.1 系统存储过程 237
13.4.2 存储过程的查看 238
13.4.3 存储过程的重命名 239
13.4.4 修改存储过程 239
13.4.5 存储过程的删除 241
13.5 Oracle数据库中的控制流语句 241
13.5.1 IF条件语句 242
13.5.2 LOOP循环语句 243
13.5.3 FOR循环语句 243
13.5.4 WHILE循环语句 244
13.5.5 GOTO语句 244
13.6 Oracle数据库中的存储过程 245
13.6.1 Oracle数据库中创建存储过程 245
13.6.2 Oracle数据库中存储过程的执行 246
13.7 小结 246
第14章 触发器 247
14.1 触发器的基础知识 247
14.1.1 触发器的概念 247
14.1.2 触发器的种类 247
14.1.3 触发器的组成 248
14.1.4 触发器的优点 248
14.1.5 触发器执行环境 248
14.2 触发器的创建 249
14.2.1 创建触发器的语法结构 249
14.2.2 Inserted表和Deleted表 250
14.2.3 INSERT触发器 251
14.2.4 UPDATE触发器 255
14.2.5 DELETE触发器 260
14.2.6 INSTEAD OF触发器 265
14.2.7 嵌套触发器 267
14.2.8 递归触发器 270
14.3 查看触发器 272
14.3.1 使用系统存储过程sp_help查看触发器 272
14.3.2 使用系统存储过程sp_helptext查看触发器 272
14.3.3 使用系统存储过程sp_depends查看触发器 273
14.4 触发器的修改及删除 274
14.4.1 触发器的修改 274
14.4.2 触发器的删除 275
14.5 Oracle数据库中的触发器 275
14.5.1 Oracle触发器类型 275
14.5.2 触发器的创建 275
14.5.3 Oracle触发器的启用与禁用 277
14.5.4 Oracle触发器的删除 277
14.6 小结 277
第15章 游标 278
15.1 游标的定义 278
15.1.1 游标的基本概念 278
15.1.2 游标的分类 279
15.1.3 游标的作用及其应用 279
15.2 游标的使用 279
15.2.1 游标的创建 279
15.2.2 打开游标 280
15.2.3 关闭游标 280
15.2.4 释放游标 281
15.2.5 使用游标 281
15.2.6 检索游标 281
15.2.7 游标变量 283
15.3 游标的扩展使用 284
15.3.1 用于UPDATE操作的可更新游标 285
15.3.2 用于DELETE操作的可更新游标 287
15.3.3 可更新游标的综合操作 288
15.3.4 使用@@CURSOR_ROWS全局变量确定游标的行数 290
15.3.5 使用@@FETCH_STATUS全局变量检测FETCH操作的状态 290
15.3.6 使用系统过程管理游标 291
15.4 Oracle中游标的使用 292
15.4.1 显式游标与隐式游标 292
15.4.2 游标属性 294
15.4.3 参数化游标 294
15.4.4 游标中的循环 295
15.5 小结 297
第16章 事务控制和锁定 298
16.1 事务 298
16.1.1 事务概述 298
16.1.2 事务的特性 299
16.1.3 事务的分类 299
16.2 事务控制 300
16.2.1 事务控制操作 300
16.2.2 开始事务 300
16.2.3 提交事务 302
16.2.4 回滚事务 302
16.2.5 设置事务保存点 303
16.2.6 终止事务 304
16.3 并发控制 305
16.3.1 并发操作的问题 305
16.3.2 事务隔离级别 306
16.4 锁定 306
16.4.1 锁的作用及含义 306
16.4.2 锁的类型 306
16.4.3 SQL Server中表级锁的使用 307
16.4.4 设置隔离级别实现并发控制 309
16.4.5 死锁及其处理 311
16.5 小结 312
第17章 SQL安全 313
17.1 SQL安全概述 313
17.1.1 SQL安全的重要性 313
17.1.2 SQL安全的对象和权限 313
17.2 用户管理 314
17.2.1 创建SQL用户 314
17.2.2 删除SQL用户 315
17.3 角色管理 315
17.3.1 角色的优点 316
17.3.2 创建角色 316
17.3.3 删除角色 317
17.3.4 授予角色 317
17.3.5 取消角色 318
17.4 权限管理 319
17.4.1 授予权限 319
17.4.2 撤销权限 320
17.4.3 查询权限控制 321
17.4.4 插入操作权限控制 323
17.4.5 删除操作权限控制 324
17.4.6 更新操作权限控制 325
17.5 SQL Server中的安全管理 327
17.5.1 SQL Server中的用户管理 327
17.5.2 SQL Server中的角色管理 329
17.5.3 SQL Server中的权限管理 330
17.6 Oracle中的安全管理 331
17.6.1 Oracle中的用户管理 331
17.6.2 Oracle中的权限管理 332
17.7 小结 332
第18章 嵌入式SQL 333
18.1 SQL的调用 333
18.1.1 直接调用SQL 333
18.1.2 SQL调用层接口(CLI) 334
18.2 嵌入式SQL的使用 335
18.2.1 嵌入式SQL 335
18.2.2 SQL通信区 336
18.2.3 主变量 337
18.2.4 在嵌入式SQL中使用SQL语句 338
18.2.5 在嵌入式SQL中使用游标 339
18.3 嵌入式SQL在SQL Server中应用 341
18.3.1 嵌入式SQL代码 341
18.3.2 预编译文件 342
18.3.3 设置连接VC++6.0 344
18.3.4 编译运行程序 346
18.4 小结 346
第6篇 T-SQL结合流行语言进行开发篇第19章 C#与SQL Server的开发与应用 348
19.1 C#开发环境 348
19.1.1 C#介绍 348
19.1.2 C#开发环境 348
19.2 C#连接数据库 352
19.2.1 C#中的数据库控件介绍 352
19.2.2 数据库连接举例 352
19.3 数据查询应用 357
19.3.1 普通数据查询的实现 357
19.3.2 连接查询的实现 359
19.3.3 子查询的实现 360
19.3.4 复合查询的实现 362
19.4 运算符与表达式的应用 364
19.4.1 连接数据表的实现 364
19.4.2 算术运算符的应用 365
19.4.3 表达式的应用 366
19.5 数据维护操作的应用 367
19.5.1 添加数据的实现 367
19.5.2 更新数据的实现 369
19.5.3 删除数据的实现 370
19.6 触发器与存储过程的应用 371
19.6.1 在C#中应用触发器 371
19.6.2 在C#中应用存储过程的示例 373
19.7 小结 374
第20章 VB.NET与SQL Server的开发与应用 375
20.1 VB.NET介绍 375
20.1.1 了解VB.NET 375
20.1.2 VB.NET的新特点 376
20.2 VB.NET连接数据库 376
20.2.1 通过数据控件绑定连接数据库 377
20.2.2 通过数据对象直接连接数据库 379
20.3 数据查询应用 380
20.3.1 普通数据查询的实现 380
20.3.2 连接查询的实现 382
20.3.3 子查询的实现 383
20.3.4 复合查询的实现 386
20.4 运算符与表达式的应用 388
20.4.1 连接数据表的实现 388
20.4.2 算术运算符的应用 389
20.4.3 表达式的应用 390
20.5 数据维护与触发器的应用 392
20.5.1 添加数据的实现 392
20.5.2 更新数据的实现 393
20.5.3 删除数据的实现 395
20.5.4 在VB.NET中应用触发器 396
20.6 小结 398
第21章 VB 6.0与SQL Server的开发与应用 399
21.1 VB 6.0开发环境 399
21.1.1 VB 6.0介绍 399
21.1.2 VB 6.0的版本 399
21.1.3 VB 6.0开发环境 400
21.2 VB 6.0连接数据库 403
21.2.1 VB 6.0中的数据库控件介绍 403
21.2.2 数据库连接举例 404
21.3 数据查询应用 407
21.3.1 普通数据查询的实现 407
21.3.2 连接查询的实现 408
21.3.3 子查询的实现 409
21.3.4 复合查询的实现 410
21.4 运算符与表达式的应用 411
21.4.1 连接数据表的实现 411
21.4.2 算术运算符的应用 412
21.4.3 表达式的应用 413
21.5 数据维护操作的应用 414
21.5.1 添加数据的实现 415
21.5.2 更新数据的实现 416
21.5.3 删除数据的实现 417
21.6 触发器与存储过程的应用 418
21.6.1 在VB 6.0中应用触发器 418
21.6.2 在VB 6.0中应用存储过程 419
21.7 小结 420
第22章 VC++6.0与SQL Server的开发与应用 421
22.1 VC++6.0开发环境 421
22.1.1 VC++6.0介绍 421
22.1.2 MFC编程 421
22.1.3 VC++6.0开发环境 422
22.2 VC++6.0连接数据库 425
22.2.1 ADO数据控件介绍 425
22.2.2 数据库连接举例 425
22.3 数据查询应用 431
22.3.1 普通数据查询的实现 431
22.3.2 连接查询的实现 435
22.3.3 子查询的实现 436
22.3.4 复合查询的实现 438
22.4 运算符与表达式的应用 439
22.4.1 连接数据表的实现 439
22.4.2 算术运算符的应用 440
22.4.3 表达式的应用 441
22.5 数据维护操作的应用 442
22.5.1 添加数据的实现 442
22.5.2 更新数据的实现 443
22.5.3 删除数据的实现 445
22.6 小结 446
第23章 PHP访问SQL Server 2005 447
23.1 PHP开发环境 447
23.1.1 PHP简介及其特点 447
23.1.2 PHP开发环境的安装 448
23.2 PHP连接SQL Server服务器 449
23.2.1 使用PHP的MSSQL扩展 449
23.2.2 PHP连接SQL Server的必要条件 449
23.3 使用PHP存取SQL Server数据库 451
23.3.1 选择操作的数据库 451
23.3.2 在数据库中创建表 452
23.3.3 删除存在的数据表 453
23.4 对数据库中表的操作 454
23.4.1 向表中添加记录 454
23.4.2 浏览表中记录 455
23.4.3 修改已有记录 456
23.4.4 删除指定记录 457
23.5 可回复留言板的开发(PHP+SQL Server) 458
23.5.1 数据表的设计 458
23.5.2 配置文件的创建 459
23.5.3 创建系统运行的表 459
23.5.4 创建留言显示模块 460
23.5.5 创建留言添加模块 464
23.5.6 进入留言管理模块 467
23.5.7 创建留言修改模块 470
23.5.8 创建留言删除模块 472
23.6 小结 473
代码3-1 创建SQL Server数据库 36
代码3-2 删除SQL Server数据库 37
代码3-3 修改数据库的名称 39
代码3-4 扩充SQL Server数据库 39
代码3-5 压缩SQL Server数据库的数据文件 40
代码3-6 压缩SQL Server数据库的日志文件 40
代码3-7 使用BULK INSFRT语句导入数据 43
代码3-8 查看当前系统中所有数据库的信息 45
代码3-9 查看当前系统中某一数据库的信息 45
代码4-1 创建数据表 49
代码4-2 在数据表中添加非空约束 50
代码4-3 指定表中列的缺省值 51
代码4-4 添加非空约束的列 53
代码4-5 修改数据表中列的长度 54
代码4-6 修改数据表中列的数据类型 54
代码4-7 删除数据表中的列 55
代码4-8 删除数据表 55
代码4-9 更改数据表名称 56
代码4-10 更改数据表中列的名称 56
代码5-1 对数值字段创建非簇索引 59
代码5-2 强制使用非簇索引No_Index查询数据表 60
代码5-3 对字符字段创建非簇索引 60
代码5-4 强制使用非簇索引sName_Index查询数据表 60
代码5-5 创建簇索引ENo index 61
代码5-6 创建簇索引EName_index 61
代码5-7 创建惟一索引 62
代码5-8 创建复合索引 62
代码5-9 创建多字段的复合索引 63
代码5-10 创建升序与降序排序组合的复合索引 64
代码5-11 删除索引 65
代码5-12 在单个表中创建视图 67
代码5-13 创建具有限制条件的视图 68
代码5-14 在视图中创建视图 68
代码5-15 创建视图列的别名 69
代码5-16 创建视图时使用中文别名 69
代码5-17 更改视图的名称 70
代码5-18 修改视图使查询数据增加一列 71
代码5-19 修改视图 71
代码5-20 删除视图 72
代码5-21 利用视图简化表的复杂连接 72
代码5-22 创建多表视图 73
代码5-23 利用视图简化复杂查询 74
代码6-1 查询单列字段信息 78
代码6-2 查询多列数据信息 78
代码6-3 查询所有字段的数据信息 79
代码6-4 通过指定数据表中所有字段来查询数据信息 79
代码6-5 去掉查询结果中的重复值 80
代码6-6 去掉多列查询结果中的重复值 80
代码6-7 在查询数据时使用别名 81
代码6-8 将查询结果进行升序排序 82
代码6-9 将查询结果按照字符型字段进行升序排序 82
代码6-10 将查询结果进行升序排序 83
代码6-11 将查询结果进行降序排序 83
代码6-12 将查询结果按照字符型字段进行降序排序 84
代码6-13 将查询结果按照日期型字段进行降序排序 84
代码6-14 实现多列升序排序 85
代码6-15 实现多列降序排序 85
代码6-16 多列字段先升序后降序混合排序 86
代码6-17 多列字段先降序后升序混合排序 86
代码6-18 将查询结果进行分组 87
代码6-19 将查询结果进行分组 87
代码6-20 GROUP BY子句中的NULL处理 87
代码6-21 将分组数据升序排序 88
代码6-22 将分组数据降序排序 88
代码6-23 HAVING子句的应用 89
代码6-24 单条件查询 89
代码6-25 使用“>”运算符进行条件查询 90
代码6-26 使用“>”运算符查询日期时间数据 90
代码6-27 使用“>=”运算符进行条件查询 91
代码6-28 使用“>=”运算符查询日期时间数据 91
代码6-29 使用“<>”运算符查询数据 91
代码6-30 使用“!<”运算符查询数据 92
代码6-31 使用“!>”运算符查询数据 92
代码6-32 使用BETWEEN运算符查询数值区间数据 93
代码6-33 使用BETWEEN运算符查询日期区间数据 93
代码6-34 使用TOP子句查询数据表中前3条记录 93
代码6-35 在TOP子句中使用PERCENT关键字 94
代码6-36 使用IS NOT NULL运算符查询数据 94
代码6-37 使用IS NULL运算符查询数据 95
代码6-38 使用LIKE运算符进行查询 96
代码6-39 使用NOT LIKE运算符进行查询 96
代码6-40 使用“_”通配符查询数据信息 97
代码6-41 将“_”通配符放在与其一起作为匹配字符的前面 97
代码6-42 将“_”通配符放在与其一起作为匹配字符的中间 98
代码6-43 全部使用“_”通配符查询数据信息 98
代码6-44 将“%”通配符放在与其一起作为匹配字符的后面 99
代码6-45 将“%”通配符放在与其一起作为匹配字符的前面 99
代码6-46 将“%”通配符放在与其一起作为匹配字符的两端 100
代码6-47 将“%”通配符放在与其一起作为匹配字符的中间 100
代码6-48 使用“[]”通配符查询以“吉”或者“辽”字符开头的员工信息 101
代码6-49 使用“[]”通配符查询以“吉”字开头并且值为6个字符的数据 101
代码6-50 使用“[^]”通配符查询数据信息 102
代码7-1 使用AND运算符实现条件查询 104
代码7-2 使用多个AND运算符实现条件查询 104
代码7-3 使用OR运算符实现条件查询 105
代码7-4 使用多个OR运算符实现条件查询 106
代码7-5 运算符AND、OR的组合使用 107
代码7-6 多个AND、OR运算符的组合使用 107
代码7-7 使用IN运算符实现查询 108
代码7-8 使用IN运算符实现查询 108
代码7-9 使用NOT IN运算符实现查询 108
代码7-10 NOT运算符查询 109
代码7-11 使用NOT运算符实现查询 109
代码7-12 NULL的取反 110
代码7-13 NOT运算符取反查询 110
代码7-14 NOT运算符与BETWEEN运算符的组合使用 111
代码7-15 NOT运算符与BETWEEN运算符组合使用查询数值数据 111
代码7-16 使用“+”运算符 112
代码7-17 使用“*”运算符 112
代码7-18 使用“/”运算符 113
代码7-19 使用“%”运算符 113
代码7-20 数学运算符的组合使用 113
代码7-21 UNION运算符的使用 114
代码7-22 组合带限制条件的数据表信息 115
代码7-23 对多表进行UNION运算 116
代码7-24 将使用UNION运算符将查询出的结果进行排序 116
代码7-25 INTERSECT运算符的使用 117
代码7-26 INTERSECT运算符的使用 117
代码7-27 AND运算符与IN运算符的组合应用 118
代码7-28 AND运算符与NOT运算符的组合应用 118
代码7-29 AND运算符与算术运算符的组合应用 119
代码7-30 逻辑运算符与集合运算符的组合应用 119
代码7-31 数学运算符与NOT运算符的组合应用 120
代码7-32 算术运算符与IN运算符的组合应用 120
代码7-33 数学运算符与集合运算符的组合应用 121
代码7-34 使用CAST表达式转换日期数据类型 122
代码7-35 使用CAST表达式转换数值数据类型 123
代码7-36 使用CAST表达式转换数值与日期数据类型 123
代码7-37 CASE表达式的应用 124
代码8-1 提取日期值 127
代码8-2 重新组合提取的日期值 127
代码8-3 DATEADD函数的应用 128
代码8-4 GETDATE函数的应用 128
代码8-5 DATEDIFF函数的应用 128
代码8-6 计算员工的年龄 129
代码8-7 获得当前系统的日期和时间 130
代码8-8 定义日期的显示格式(一) 130
代码8-9 定义日期的显示格式(二) 131
代码8-10 定义日期的显示格式(三) 131
代码8-11 获得表达式的绝对值 132
代码8-12 使用ROUND函数 132
代码8-13 使用CEILING函数和FLOOR函数 133
代码8-14 使用正弦与余弦相关函数 133
代码8-15 获得对数值 133
代码8-16 SQRT函数与RAND函数的应用 133
代码8-17 PI函数的使用 134
代码8-18 UPPER函数的使用 135
代码8-19 LOWER函数的使用 136
代码8-20 使用RTRIM函数去除字符串空格 136
代码8-21 去掉字符串前端的空格 136
代码8-22 使用LEN函数获得字符串的长度 137
代码8-23 LEFT函数的使用 138
代码8-24 SUBSTRING函数的使用 138
代码8-25 使用REVERSE函数颠倒字符串的排序顺序 138
代码8-26 使用REPLACE函数替换字符串 139
代码8-27 SUM函数的应用 140
代码8-28 使用SUM函数获得多列数据的总和 140
代码8-29 MAX函数的应用 141
代码8-30 MAX函数用于时间类型的数据 141
代码8-31 MAX函数用于字符类型的数据 141
代码8-32 MIN函数的应用 141
代码8-33 MIN函数用于时间类型的数据 142
代码8-34 MIN函数用于字符类型的数据 142
代码8-35 AVG函数的应用 142
代码8-36 获得满足一定条件数据的平均值 142
代码8-37 COUNT函数的应用 143
代码8-38 获取多列中所有记录的行数 143
代码8-39 获得满足一定条件数据的记录总数 143
代码8-40 聚合函数的组合使用 144
代码9-1 实现两表连接 146
代码9-2 不指明连接关系的两表连接 146
代码9-3 实现3个表的连接 147
代码9-4 实现多个表的连接 148
代码9-5 使用自连接 149
代码9-6 使用自然连接两个数据表 151
代码9-7 使用WHERE子句实现等值连接 151
代码9-8 使用内连接等值连接实现查询 152
代码9-9 排序内连接的查询结果 152
代码9-10 使用内连接不等值连接实现查询 152
代码9-11 通过内连接实现多表连接 153
代码9-12 在内连接中使用聚合函数 154
代码9-13 使用左外连接实现查询 155
代码9-14 排序左外连接的查询结果 155
代码9-15 使用*=符号实现左外连接查询 156
代码9-16 使用右外连接实现查询 156
代码9-17 使用“=*”符号实现右外连接查询 157
代码9-18 使用全外连接实现查询 158
代码9-19 在左外连接中使用聚合函数 158
代码9-20 在右外连接中使用聚合函数 159
代码9-21 在全连接中使用聚合函数 159
代码9-22 使用交叉连接实现查询 161
代码9-23 使用内连接与左外连接实现查询 162
代码9-24 使用内连接与右外连接实现查询 162
代码9-25 UNION集合运算与多表连接应用 163
代码10-1 在两个表中使用子查询 165
代码10-2 使用!=运算符查询数据 166
代码10-3 在多个表中使用子查询 166
代码10-4 在子查询中使用聚合函数 167
代码10-5 在WHERE子句的表达式中使用子查询 167
代码10-6 在判断表达式两边使用聚合函数子查询 167
代码10-7 在SELECT语句的查询列中使用子查询 168
代码10-8 ALL子查询的使用 169
代码10-9 ANY子查询的使用 169
代码10-10 使用子查询创建视图 170
代码10-11 在两个表中使用子查询创建视图 170
代码10-12 使用IN子查询查询数据信息 171
代码10-13 使用IN子查询实现集合交运算 171
代码10-14 使用IN子查询实现集合差运算 172
代码10-15 使用EXISTS语句子查询 173
代码10-16 使用EXISTS子查询实现两表交集 173
代码10-17 使用EXISTS子查询实现两表并集 174
代码10-18 使用NOT EXISTS语句子查询 174
代码10-19 使用IN引入相关子查询 175
代码10-20 使用比较运算符引入相关子查询 175
代码10-21 在HAVING子句中使用相关子查询 177
代码10-22 嵌套子查询的使用 178
代码11-1 插入指定列的单条记录 181
代码11-2 向货物信息表(GoodsInfo)中添加整行数据 182
代码11-3 NULL值的插入 183
代码11-4 由VALUES关键字插入多行数据 184
代码11-5 使用INSERT INTO...SELECT语句向新创建的表中复制数据 185
代码11-6 使用INSERT INTO...SELECT语句在数据表之间复制数据 186
代码11-7 使用SELECT...INTO语句复制数据 187
代码11-8 通过视图插入数据 187
代码11-9 使用子查询插入数据 188
代码11-10 指定修改数据表中的单列数据 189
代码11-11 指定修改数据表中的多列数据 190
代码11-12 在修改数据表中数据时对NULL的处理 190
代码11-13 修改数据表中所有的数据信息 191
代码11-14 利用子查询更新数据 192
代码11-15 以外表值为查询条件更新数据 192
代码11-16 通过视图更新表数据 193
代码11-17 删除指定行的数据 195
代码11-18 根据组合条件删除数据表中的数据 195
代码11-19 删除所有数据 196
代码11-20 通过视图删除表数据 196
代码11-21 使用子查询删除数据 197
代码11-22 使用TRUNCATE TABLE删除数据表中所有的数据信息 198
代码12-1 设置DEFAULT约束 201
代码12-2 对日期字段设置DEFAULT约束 202
代码12-3 对字符型字段设置DEFAULT约束 202
代码12-4 创建CHECK约束 204
代码12-5 创建多条件的CHECK约束 204
代码12-6 创建PRIMARY KEY约束 205
代码12-7 创建UNIQUE约束 207
代码12-8 在已经存在的表中创建UNIQUE约束 207
代码12-9 创建FOREIGN KEY约束 208
代码12-10 使用NOT NULL约束 209
代码12-11 创建员工性别规则 211
代码12-12 创建员工年龄规则 211
代码12-13 创建员工出生日期规则 211
代码12-14 创建限制电话号码长度的规则 211
代码12-15 使用存储过程Sp_bindrule绑定规则Sex_Rule 212
代码12-16 使用存储过程Sp_bindrule绑定规则Age_Rule 213
代码12-17 使用存储过程Sp_unbindrule给规则松绑 214
代码12-18 使用存储过程Sp_unbindrule给规则松绑 214
代码12-19 创建与使用域约束 214
代码12-20 利用断言创建多表约束 215
代码12-21 创建默认值Com_Sex 216
代码12-22 创建默认值Com_Date 216
代码12-23 使用存储过程Sp_bindefault绑定默认值Com_Sex 217
代码12-24 使用存储过程Sp_bindefault绑定默认值Com_Date 217
代码12-25 使用存储过程Sp_unbindefault给默认值Com_Sex松绑 217
代码12-26 使用存储过程Sp_unbindefault给默认值Com_Date松绑 218
代码13-1 IF...ELSE语句的使用 221
代码13-2 省略ELSE语句 222
代码13-3 IF...ELSE语句的顺序执行 222
代码13-4 BEGIN..END语句的使用 223
代码13-5 DECLARE语句的使用 224
代码13-6 GOTO语句的使用 224
代码13-7 使用WAITFOR语句延时修改信息 225
代码13-8 使用WAITFOR语句定时修改信息 225
代码13-9 WHILE与BREAK的使用 226
代码13-10 使用PRINT语句输出字符信息 227
代码13-11 使用PRINT语句显示局部变量中的信息 227
代码13-12 RETURN语句的使用 227
代码13-13 注释SQL语句 228
代码13-14 创建简单的存储过程 230
代码13-15 通过存储过程修改数据信息 230
代码13-16 通过存储过程删除数据信息 230
代码13-17 通过存储过程插入数据信息 230
代码13-18 创建带输入参数的存储过程(一) 231
代码13-19 创建带输入参数的存储过程(二) 231
代码13-20 创建带默认值参数的存储过程 232
代码13-21 创建带OUTPUT返回参数的存储过程 232
代码13-22 执行存储过程Show_employee 233
代码13-23 执行存储过程Show_Update_employee 234
代码13-24 执行存储过程Show_Del_employee 234
代码13-25 执行存储过程Insert_employee 234
代码13-26 执行存储过程Show_Sex_employee 234
代码13-27 执行存储过程Show_InStr_employee删除数据 235
代码13-28 执行存储过程Show_InStr_employee修改数据 235
代码13-29 执行存储过程Show_InStr_employee插入数据 236
代码13-30 执行存储过程Show_Default_employee 236
代码13-31 执行存储过程Show_Select_employee 237
代码13-32 查看存储过程Show_Select_employee中的源代码 238
代码13-33 重命名存储过程 239
代码13-34 修改存储过程 240
代码13-35 修改带参数的存储过程 241
代码13-36 删除存储过程Show_employee 241
代码13-37 同时删除多个存储过程 241
代码13-38 判断员工的年龄 242
代码13-39 使用IF条件语句表达形式2判断员工的年龄 242
代码13-40 使用IF条件语句表达形式3判断员工的年龄 242
代码13-41 使用LOOP循环语句输出自然数 243
代码13-42 使用FOR循环语句输出自然数 243
代码13-43 使用WHILE循环语句输出自然数 244
代码13-44 使用GOTO语句 245
代码13-45 在Oracle数据库中创建存储过程 246
代码14-1 通过INSERT触发器弹出提示信息 251
代码14-2 通过INSERT触发器查询数据表中的数据信息 252
代码14-3 通过INSERT触发器更改数据表中的数据信息 252
代码14-4 通过INSERT触发器删除数据表中的数据信息 253
代码14-5 通过INSERT触发器向数据表中插入数据 253
代码14-6 创建有条件的触发器 254
代码14-7 通过UPDATE触发器弹出提示信息 255
代码14-8 通过UPDATE触发器查询数据表中的数据信息 256
代码14-9 通过UPDATE触发器更改数据表中的数据 256
代码14-10 通过UPDATE触发器删除数据表中的数据信息 257
代码14-11 通过UPDATE触发器向数据表中插入数据信息 258
代码14-12 创建UPDATE触发器 259
代码14-13 通过DELETE触发器弹出提示信息 261
代码14-14 通过DELETE触发器查询数据表中的数据信息 261
代码14-15 通过DELETE触发器更改数据表中的数据 262
代码14-16 通过DELETE触发器删除数据表中的数据 262
代码14-17 通过DELETE触发器向数据表中插入数据信息 263
代码14-18 创建DELETE触发器 264
代码14-19 创建INSTEAD OF触发器向视图中插入数据 266
代码14-20 在INSTEAD OF触发器中应用判断参数 266
代码14-21 使用嵌套触发器 268
代码14-22 创建递归触发器 271
代码14-23 使用系统存储过程sp_help查看触发器基本信息 272
代码14-24 使用系统存储过程sp_helptext查看触发器的创建语句 272
代码14-25 查看触发器所引用的表 273
代码14-26 查看数据表中所有涉及到的触发器信息 273
代码14-27 修改触发器update_student 274
代码14-28 删除触发器update_student 275
代码14-29 在Oracle数据库中创建DML触发器 276
代码14-30 启用数据表中所有的触发器 277
代码14-31 禁用数据表中所有的触发器 277
代码14-32 删除触发器 277
代码15-1 创建游标 280
代码15-2 打开游标Goods_Cursor 280
代码15-3 关闭游标Goods_Cursor 281
代码15-4 释放游标Goods_Cursor 281
代码15-5 使用FETCH语句检索游标 282
代码15-6 使用游标变量 284
代码15-7 用于UPDATE操作的可更新游标 285
代码15-8 用于UPDATE操作的可更新游标更改指定行数据 286
代码15-9 用于DELETE操作的可更新游标 288
代码15-10 可更新游标的综合应用 289
代码15-11 使用全局变量@@CURSOR_ROWS 290
代码15-12 使用全局变量@@FETCH_STATUS 291
代码15-13 显示数据库DB_Test中所有的GLOBAL游标及其属性 292
代码15-14 在Oracle中创建显式游标 293
代码15-15 在Oracle中创建隐式游标 293
代码15-16 创建带有参数的游标 295
代码15-17 使用LOOP循环 296
代码15-18 使用WHILE循环 296
代码15-19 使用FOR循环 297
代码16-1 在SQL Server中实现开始事务 301
代码16-2 提交事务 302
代码16-3 回滚事务 303
代码16-4 设置事务保存点 304
代码16-5 事务提交、回滚与保存点 304
代码16-6 表级锁的使用-用户U1执行的操作代码 308
代码16-7 READ UNCOMMITTED隔离级别的使用 309
代码16-8 REPEATABLE READ隔离级别的使用 310
代码16-9 导致死锁现象的示例 311
代码17-1 在SQL Server数据库中创建用户 315
代码17-2 删除SQL Server数据库创建的用户 315
代码17-3 在SQL Server 2005数据库中创建角色 316
代码17-4 在Oracle数据库中创建角色 317
代码17-5 删除角色 317
代码17-6 使用GRANT语句授予角色 318
代码17-7 把多个角色授予多个授权ID 318
代码17-8 取消角色 318
代码17-9 把多个角色从授权ID中取消 318
代码17-10 使用GRANT语句授予权限 319
代码17-11 使用REVOKE语句撤销UPDATE权限 320
代码17-12 撤销一个用户授予其他用户的UPDATE权限 321
代码17-13 查询权限控制 321
代码17-14 对数据表中的部分列执行查询权限控制 322
代码17-15 通过视图实现查询权限控制 322
代码17-16 收回某一查询权限的控制 322
代码17-17 撤销对整个数据表的查询权限控制 322
代码17-18 插入权限控制 323
代码17-19 通过视图实现插入权限控制 323
代码17-20 撤销插入权限控制 324
代码17-21 删除权限控制 324
代码17-22 通过视图实现删除权限控制 325
代码17-23 撤销删除权限控制 325
代码17-24 更新权限控制 326
代码17-25 对数据表中的部分列执行更新权限控制 326
代码17-26 通过视图实现更新权限控制 326
代码17-27 撤销某一列更新权限控制 327
代码17-28 撤销对整个数据表的更新权限控制 327
代码17-29 使用系统存储过程创建登录账号 328
代码17-30 使用系统存储过程查看登录账号信息 328
代码17-31 使用系统存储过程创建数据库用户账号 328
代码17-32 使用系统存储过程查看数据库用户账号 328
代码17-33 查看当前数据库中所有用户账号的信息 329
代码17-34 使用系统存储过程创建数据库角色 329
代码17-35 查看新创建数据库角色DbRole的信息 329
代码17-36 查看当前数据库中所有数据库角色的信息 330
代码17-37 将用户JOIN加入到新创建的数据库角色DbRole当中 330
代码17-38 查看数据库MyDataBase中所有角色的成员信息 330
代码17-39 创建数据库用户 331
代码17-40 修改数据库用户的密码 332
代码17-41 删除数据库用户 332
代码18-1 C语言中嵌入SQL语句中SQLCA 336
代码18-2 定义输入主变量 337
代码18-3 定义输出主变量 337
代码18-4 在嵌入式SQL中使用SELECT语句 338
代码18-5 在嵌入式SQL中使用UPDATE语句 338
代码18-6 在嵌入式SQL中使用DELETE语句 339
代码18-7 在嵌入式SQL中使用INSERT语句 339
代码18-8 在嵌入式SQL中使用游标 340
代码18-9 在嵌入式SQL的SELECT语句中使用游标 340
代码18-10 在SQL Server中使用嵌入式SQL 341
代码19-1 类文件PublicClass中的示例代码 355
代码19-2 程序启动时获取数据表中的数据信息 357
代码19-3 判断查询的字段名称 358
代码19-4 普通数据查询 358
代码19-5 连接数据查询 359
代码19-6 加载学生的基础信息 360
代码19-7 实现子查询 361
代码19-8 获取查询字段的值 362
代码19-9 实现复合查询 363
代码19-10 连接数据表 364
代码19-11 使用算术运算符计算货物总价 365
代码19-12 使用表达式给员工分组 366
代码19-13 保存数据信息 368
代码19-14 显示所选择的数据信息 369
代码19-15 更新数据信息 369
代码19-16 删除数据信息 370
代码19-17 保存数据后同时显示数据表中的数据信息 372
代码19-18 执行存储过程 373
代码20-1 类文件Mdu_Data中的示例代码 379
代码20-2 程序启动时获取数据库中的数据信息 379
代码20-3 判断查询的字段名称 381
代码20-4 普通数据查询 381
代码20-5 连接数据查询 382
代码20-6 加载学生的基础信息 384
代码20-7 实现子查询 384
代码20-8 获取查询字段的值 386
代码20-9 实现复合查询 386
代码20-10 连接数据表 388
代码20-11 使用算术运算符计算货物总价 389
代码20-12 使用表达式给员工分组 391
代码20-13 保存数据信息 392
代码20-14 显示所选择的数据信息 394
代码20-15 更新数据信息 394
代码20-16 删除数据信息 395
代码20-17 保存数据后同时显示数据表中的数据信息 397
代码21-1 模块中的程序代码 406
代码21-2 连接数据库 406
代码21-3 判断查询的字段名称 407
代码21-4 实现普通数据查询 407
代码21-5 实现连接查询 408
代码21-6 实现子查询 409
代码21-7 实现复合查询 411
代码21-8 连接数据表 412
代码21-9 使用算术运算符计算货物总价 413
代码21-10 使用表达式给员工分组 414
代码21-11 保存数据信息的实现 415
代码21-12 显示所选择的数据信息 416
代码21-13 更新数据信息的实现 416
代码21-14 删除数据信息 417
代码21-15 保存数据后同时显示数据表中的数据信息 418
代码21-16 执行存储过程 419