书籍详情
SQL入门经典 第6版
作者:赖安·斯蒂芬斯 著,郝记生,王士喜 译
出版社:人民邮电出版社
出版时间:2020-08-01
ISBN:9787115496317
定价:¥69.00
购买这本书可以去
内容简介
本书详细介绍了SQL语言的基本语法、基本概念,说明了各种SQL实现与ANSI标准之间的差别。书中包含了大量的范例,直观地说明了如何使用SQL对数据进行处理。每章后面还有针对性很强的测验与练习,能够帮助读者更好地理解和掌握学习的内容。在最后的附录里还有关于安装MySQL的详细介绍、书中用到的关键SQL语句、测验和练习的答案。本书的内容层次清晰,针对性强,非常适合初学者作为入门教材。
作者简介
Ryan Stephens是Perpetual Technologies公司以及Indy Data Partners公司(位于印第安纳波利斯)的联合创始人兼CEO。Ryan在IT领域有20多年的研究和咨询经历,擅长数据管理、SQL和Oracle。Ryan在印第安纳大学-普渡大学印第安纳波利斯联合分校创办并讲授了5年的数据库和SQL课程,他还为印第安纳陆军国民警卫队担任了12年的程序分析员(programmer analyst)。Ryan已经为Sams Publishing编写了多本数据库和SQL相关的图书。Arie D. Jones是Indy Data Partners(IDP)公司(位于印第安纳波利斯)新兴技术(Emerging Technologies)部门的副总裁,领导着一个专家小组负责数据库环境与应用程序的规划、设计、开发、部署和管理,从而让每个客户都获得最佳的工具与服务的组合。他还是技术活动的定期发言人,并且在数据库方面出版了多本图书,并发表了多篇文章。Ronald Plew已经从Perpetual Technologies公司的联合创始人和副总裁的位置上退休,他在关系数据库技术领域有20多年的研究和咨询经验,还为Sams Publishing合著了多本图书。Ron在印第安纳大学-普渡大学印第安纳波利斯联合分校讲授了5年的数据库和SQL课程。他还曾经担任过印第安纳陆军国民警卫队的程序分析员。
目录
第 1章 欢迎来到SQL世界 1
1.1 SQL定义及历史 1
1.1.1 什么是SQL 2
1.1.2 什么是ANSI SQL 2
1.1.3 当前标准:SQL-2011 2
1.1.4 什么是数据库 3
1.1.5 关系数据库 4
1.1.6 客户端/服务器技术 4
1.1.7 基于Web的数据库系统 5
1.1.8 主流数据库厂商 5
1.2 SQL会话 6
1.2.1 CONNECT 6
1.2.2 DISCONNECT和EXIT 6
1.3 SQL命令的类型 6
1.3.1 定义数据库结构 7
1.3.2 操作数据 7
1.3.3 选择数据 7
1.3.4 数据控制语言 8
1.3.5 数据管理命令 8
1.3.6 事务控制命令 8
1.4 本书使用的数据库 8
1.4.1 表命名标准 10
1.4.2 实例数据一瞥 10
1.4.3 表的构成 10
1.4.4 示例和练习 11
1.5 小结 11
1.6 问与答 12
1.7 实践 12
1.7.1 测验 12
1.7.2 练习 12
第 2章 定义数据结构 14
2.1 数据是什么 14
2.2 基本数据类型 14
2.2.1 定长字符串 15
2.2.2 变长字符串 16
2.2.3 大对象类型 16
2.2.4 数值类型 16
2.2.5 小数类型 17
2.2.6 整数 17
2.2.7 浮点数 18
2.2.8 日期和时间类型 18
2.2.9 直义字符串 19
2.2.10 NULL数据类型 19
2.2.11 布尔值 20
2.2.12 自定义类型 20
2.2.13 域 20
2.3 小结 21
2.4 问与答 21
2.5 实践 22
2.5.1 测验 22
2.5.2 练习 22
第3章 管理数据库对象 25
3.1 数据库对象和模式 25
3.2 表:数据的主要存储方式 27
3.2.1 列 27
3.2.2 行 27
3.2.3 CREATE TABLE语句 28
3.2.4 命名规范 29
3.2.5 ALTER TABLE命令 29
3.2.6 从现有表新建另一个表 32
3.2.7 删除表 33
3.3 完整性约束 33
3.3.1 主键约束 34
3.3.2 唯一性约束 34
3.3.3 外键约束 35
3.3.4 NOT NULL约束 36
3.3.5 检查约束 36
3.3.6 去除约束 37
3.4 小结 37
3.5 问与答 37
3.6 实践 38
3.6.1 测验 38
3.6.2 练习 38
第4章 规格化过程 41
4.1 规格化数据库 41
4.1.1 原始数据库 42
4.1.2 数据库逻辑设计 42
4.1.3 规格形式 43
4.1.4 命名规范 45
4.1.5 规格化的优点 46
4.1.6 规格化的缺点 46
4.2 去规格化数据库 47
4.3 小结 47
4.4 问与答 47
4.5 实践 48
4.5.1 测验 48
4.5.2 练习 48
第5章 操作数据 50
5.1 数据操作概述 50
5.2 用新数据填充表 50
5.2.1 把数据插入到表 51
5.2.2 将数据插入到表的特定列中 52
5.2.3 从另一个表插入数据 53
5.2.4 插入NULL值 54
5.3 更新现有数据 55
5.3.1 更新一列的数据 55
5.3.2 更新一条或多条记录中的
多个字段 56
5.4 从表中删除数据 57
5.5 小结 57
5.6 问与答 58
5.7 实践 58
5.7.1 测验 58
5.7.2 练习 58
第6章 管理数据库事务 61
6.1 什么是事务 61
6.2 控制事务 62
6.2.1 COMMIT命令 62
6.2.2 ROLLBACK命令 64
6.2.3 SAVEPOINT命令 65
6.2.4 ROLLBACK TO SAVEPOINT
命令 65
6.2.5 RELEASE SAVEPOINT命令 67
6.2.6 SET TRANSACTION命令 68
6.3 低劣的事务控制 68
6.4 小结 68
6.5 问与答 68
6.6 实践 69
6.6.1 测验 69
6.6.2 练习 69
第7章 数据库查询 71
7.1 SELECT语句 71
7.1.1 SELECT语句 72
7.1.2 FROM子句 74
7.1.3 WHERE子句 74
7.1.4 ORDER BY子句 75
7.1.5 大小写敏感性 77
7.2 编写查询语句 78
7.2.1 统计表中的记录数量 79
7.2.2 从另一个用户表里选择
数据 80
7.2.3 使用字段别名 80
7.3 小结 81
7.4 问与答 81
7.5 实践 82
7.5.1 测验 82
7.5.2 练习 82
第8章 使用操作符对数据进行分类 84
8.1 什么是SQL里的操作符 84
8.2 比较操作符 84
8.2.1 相等 85
8.2.2 不等于 85
8.2.3 小于和大于 86
8.2.4 比较操作符的组合 87
8.3 逻辑操作符 88
8.3.1 IS NULL 88
8.3.2 BETWEEN 89
8.3.3 IN 89
8.3.4 LIKE 90
8.3.5 EXISTS 91
8.3.6 ALL、SOME和ANY
操作符 91
8.4 连接操作符 93
8.4.1 AND 93
8.4.2 OR 94
8.5 求反操作符 95
8.5.1 不相等 96
8.5.2 NOT BETWEEN 96
8.5.3 NOT IN 97
8.5.4 NOT LIKE 97
8.5.5 IS NOT NULL 98
8.5.6 NOT EXISTS 99
8.6 算术操作符 99
8.6.1 加法 99
8.6.2 减法 100
8.6.3 乘法 100
8.6.4 除法 100
8.6.5 算术操作符的组合 101
8.7 小结 102
8.8 问与答 102
8.9 实践 102
8.9.1 测验 102
8.9.2 练习 103
第9章 汇总查询得到的数据 104
9.1 聚合函数 104
9.1.1 COUNT函数 105
9.1.2 SUM函数 106
9.1.3 AVG函数 107
9.1.4 MAX函数 109
9.1.5 MIN函数 109
9.2 小结 110
9.3 问与答 110
9.4 实践 111
9.4.1 测验 111
9.4.2 练习 112
第 10章 数据排序与分组 113
10.1 为什么要对数据进行分组 113
10.2 GROUP BY子句 113
10.2.1 分组函数 114
10.2.2 对选中的数据进行分组 114
10.2.3 创建分组和使用聚合函数 114
10.3 GROUP BY与ORDER BY
的对比 118
10.4 CUBE和ROLLUP语句 120
10.5 HAVING子句 121
10.6 小结 122
10.7 问与答 123
10.8 实践 123
10.8.1 测验 123
10.8.2 练习 124
第 11章 重构数据的外观 125
11.1 ANSI字符函数 125
11.2 常用字符函数 126
11.2.1 串接函数 126
11.2.2 UPPER函数 127
11.2.3 LOWER函数 128
11.2.4 SUBSTR函数 129
11.2.5 TRANSLATE函数 130
11.2.6 REPLACE函数 130
11.2.7 LTRIM函数 131
11.2.8 RTRIM函数 132
11.3 其他字符函数 133
11.3.1 LENGTH函数 133
11.3.2 ISNULL函数(NULL值
检查程序) 133
11.3.3 COALESCE函数 134
11.3.4 LPAD函数 134
11.3.5 RPAD函数 135
11.3.6 ASCII函数 135
11.4 算术函数 135
11.5 转换函数 136
11.5.1 字符串转换为数值 136
11.5.2 数值转换为字符串 137
11.6 字符函数的组合使用 138
11.7 小结 139
11.8 问与答 139
11.9 实践 140
11.9.1 测验 140
11.9.2 练习 140
第 12章 日期和时间 142
12.1 日期是如何存储的 142
12.1.1 日期和时间的标准
数据类型 142
12.1.2 DATETIME元素 143
12.1.3 不同实现的日期类型 143
12.2 日期函数 144
12.2.1 当前日期 144
12.2.2 时区 144
12.2.3 时间与日期相加 145
12.2.4 其他日期函数 147
12.3 日期转换 147
12.3.1 日期描述 148
12.3.2 日期转换为字符串 150
12.3.3 字符串转换为日期 150
12.4 小结 151
12.5 问与答 151
12.6 实践 152
12.6.1 测验 152
12.6.2 练习 152
第 13章 在查询中连接表 153
13.1 从多个表获取数据 153
13.2 连接 153
13.2.1 等值连接 154
13.2.2 使用表的别名 155
13.2.3 不等值连接 156
13.2.4 外部连接 157
13.2.5 自连接 159
13.2.6 连接多个主键 161
13.3 需要考虑的连接事项 161
13.3.1 使用基表 162
13.3.2 笛卡儿积 162
13.4 小结 164
13.5 问与答 164
13.6 实践 164
13.6.1 测验 165
13.6.2 练习 165
第 14章 使用子查询定义未知数据 166
14.1 什么是子查询 166
14.1.1 子查询与SELECT语句 167
14.1.2 子查询与INSERT语句 169
14.1.3 子查询与UPDATE语句 169
14.1.4 子查询与DELETE语句 170
14.2 嵌套的子查询 171
14.3 关联子查询 174
14.4 子查询的效率 175
14.5 小结 176
14.6 问与答 176
14.7 实践 176
14.7.1 测验 177
14.7.2 练习 177
第 15章 将多个查询组合成一个 178
15.1 单查询与组合查询 178
15.2 组合查询操作符 179
15.2.1 UNION操作符 179
15.2.2 UNION ALL操作符 180
15.2.3 INTERSECT操作符 181
15.2.4 EXCEPT操作符 182
15.3 在组合查询中使用
ORDER BY 183
15.4 在组合查询中使用
GROUP BY 184
15.5 获取准确的数据 185
15.6 小结 186
15.7 问与答 186
15.8 实践 186
15.8.1 测验 187
15.8.2 练习 187
第 16章 利用索引改善性能 188
16.1 什么是索引 188
16.2 索引是如何工作的 188
16.3 CREATE INDEX命令 189
16.4 索引的类型 190
16.4.1 单字段索引 190
16.4.2 唯一索引 190
16.4.3 组合索引 191
16.4.4 隐式索引 191
16.5 何时考虑使用索引 191
16.6 何时应该避免使用索引 192
16.7 修改索引 193
16.8 删除索引 193
16.9 小结 194
16.10 问与答 194
16.11 实践 194
16.11.1 测验 194
16.11.2 练习 195
第 17章 改善数据库性能 196
17.1 什么是SQL语句调整 196
17.2 数据库调整与SQL语句
调整 196
17.3 格式化SQL语句 197
17.3.1 为提高可读性格式化SQL
语句 197
17.3.2 FROM子句中的表 199
17.3.3 连接条件的次序 199
17.3.4 最严格条件 199
17.4 全表扫描 201
17.5 其他性能考虑 202
17.5.1 使用LIKE操作符和
通配符 202
17.5.2 避免使用OR操作符 203
17.5.3 避免使用HAVING子句 203
17.5.4 避免大规模排序操作 204
17.5.5 使用存储过程 204
17.5.6 在批量加载时禁用索引 204
17.6 基于成本的优化 204
17.7 小结 205
17.8 问与答 206
17.9 实践 206
17.9.1 测验 206
17.9.2 练习 206
第 18章 管理数据库用户 208
18.1 数据库的用户管理 208
18.1.1 用户的类型 209
18.1.2 谁管理用户 209
18.1.3 用户在数据库中的位置 209
18.1.4 用户与模式的区别 210
18.2 管理过程 210
18.2.1 创建用户 210
18.2.2 创建模式 212
18.2.3 删除模式 214
18.2.4 调整用户 214
18.2.5 用户会话 215
18.2.6 删除用户访问权限 215
18.3 数据库用户使用的工具 215
18.4 小结 216
18.5 问与答 216
18.6 实践 216
18.6.1 测验 217
18.6.2 练习 217
第 19章 管理数据库安全 218
19.1 什么是数据库安全 218
19.2 什么是权限 219
19.2.1 系统权限 219
19.2.2 对象权限 220
19.2.3 谁负责授予和撤销权限 221
19.3 控制用户访问 221
19.3.1 GRANT命令 221
19.3.2 REVOKE命令 222
19.3.3 控制对单独字段的访问 222
19.3.4 PUBLIC数据库账户 222
19.3.5 权限组 223
19.4 通过角色控制权限 223
19.4.1 CREATE ROLE语句 224
19.4.2 DROP ROLE语句 224
19.4.3 SET ROLE语句 224
19.5 小结 225
19.6 问与答 225
19.7 实践 226
19.7.1 测验 226
19.7.2 练习 226
第 20章 创建并使用视图和异名 227
20.1 什么是视图 227
20.1.1 使用视图来简化数据访问 228
20.1.2 使用视图作为一种安全形式 228
20.1.3 使用视图来维护汇总数据 228
20.2 创建视图 229
20.2.1 从一个表创建视图 229
20.2.2 从多个表创建视图 231
20.2.3 从视图创建视图 231
20.3 WITH CHECK OPTION 232
20.4 从视图创建表 233
20.5 视图与ORDER BY子句 234
20.6 通过视图更新数据 234
20.7 删除视图 235
20.8 嵌套视图对性能的影响 235
20.9 什么是异名 235
20.9.1 创建异名 236
20.9.2 删除异名 236
20.10 小结 237
20.11 问与答 237
20.12 实践 237
20.12.1 测验 237
20.12.2 练习 238
第 21章 使用系统目录 239
21.1 什么是系统目录 239
21.2 如何创建系统目录 240
21.3 系统目录中包含什么内容 240
21.3.1 用户数据 241
21.3.2 安全信息 241
21.3.3 数据库设计信息 241
21.3.4 性能统计信息 241
21.4 不同实现中的系统目录表 241
21.5 查询系统目录 242
21.6 更新系统目录对象 244
21.7 小结 245
21.8 问与答 245
21.9 实践 245
21.9.1 测验 245
21.9.2 练习 246
第 22章 高级SQL主题 247
22.1 游标 247
22.1.1 打开游标 248
22.1.2 从游标获取数据 248
22.1.3 关闭游标 249
22.2 存储过程和函数 250
22.3 触发器 251
22.3.1 CREATE TRIGGER语句 251
22.3.2 DROP TRIGGER语句 253
22.4 动态SQL 253
22.5 调用级接口 253
22.6 使用SQL生成SQL 254
22.7 直接SQL与嵌入SQL 254
22.8 窗口表格函数 255
22.9 使用XML 255
22.10 小结 256
22.11 问与答 256
22.12 实践 256
22.12.1 测验 257
22.12.2 练习 257
第 23章 将SQL扩展到企业、
互联网和内联网 258
23.1 SQL与企业 258
23.1.1 后端程序 258
23.1.2 前端程序 259
23.2 访问远程数据库 259
23.2.1 ODBC 260
23.2.2 JDBC 260
23.2.3 OLE DB 260
23.2.4 厂商连接产品 260
23.2.5 Web接口 261
23.3 SQL与互联网 261
23.3.1 让数据供全世界的
顾客使用 262
23.3.2 向雇员和授权顾客
提供数据 262
23.4 SQL与内联网 262
23.5 小结 263
23.6 问与答 263
23.7 实践 263
23.7.1 测验 264
23.7.2 练习 264
第 24章 标准SQL的扩展 265
24.1 各种实现 265
24.1.1 不同实现之间的区别 265
24.1.2 遵循ANSI SQL 266
24.1.3 SQL的扩展 267
24.2 扩展示例 267
24.2.1 Transact-SQL 268
24.2.2 PL/SQL 268
24.2.3 MySQL 269
24.3 交互式SQL语句 269
24.4 小结 270
24.5 问与答 270
24.6 实践 271
附录A 常用SQL命令 272
附录B 安装Oracle和Microsoft SQL 277
附录C 测验和练习的答案 280
附录D 额外练习 314
术语表 325
1.1 SQL定义及历史 1
1.1.1 什么是SQL 2
1.1.2 什么是ANSI SQL 2
1.1.3 当前标准:SQL-2011 2
1.1.4 什么是数据库 3
1.1.5 关系数据库 4
1.1.6 客户端/服务器技术 4
1.1.7 基于Web的数据库系统 5
1.1.8 主流数据库厂商 5
1.2 SQL会话 6
1.2.1 CONNECT 6
1.2.2 DISCONNECT和EXIT 6
1.3 SQL命令的类型 6
1.3.1 定义数据库结构 7
1.3.2 操作数据 7
1.3.3 选择数据 7
1.3.4 数据控制语言 8
1.3.5 数据管理命令 8
1.3.6 事务控制命令 8
1.4 本书使用的数据库 8
1.4.1 表命名标准 10
1.4.2 实例数据一瞥 10
1.4.3 表的构成 10
1.4.4 示例和练习 11
1.5 小结 11
1.6 问与答 12
1.7 实践 12
1.7.1 测验 12
1.7.2 练习 12
第 2章 定义数据结构 14
2.1 数据是什么 14
2.2 基本数据类型 14
2.2.1 定长字符串 15
2.2.2 变长字符串 16
2.2.3 大对象类型 16
2.2.4 数值类型 16
2.2.5 小数类型 17
2.2.6 整数 17
2.2.7 浮点数 18
2.2.8 日期和时间类型 18
2.2.9 直义字符串 19
2.2.10 NULL数据类型 19
2.2.11 布尔值 20
2.2.12 自定义类型 20
2.2.13 域 20
2.3 小结 21
2.4 问与答 21
2.5 实践 22
2.5.1 测验 22
2.5.2 练习 22
第3章 管理数据库对象 25
3.1 数据库对象和模式 25
3.2 表:数据的主要存储方式 27
3.2.1 列 27
3.2.2 行 27
3.2.3 CREATE TABLE语句 28
3.2.4 命名规范 29
3.2.5 ALTER TABLE命令 29
3.2.6 从现有表新建另一个表 32
3.2.7 删除表 33
3.3 完整性约束 33
3.3.1 主键约束 34
3.3.2 唯一性约束 34
3.3.3 外键约束 35
3.3.4 NOT NULL约束 36
3.3.5 检查约束 36
3.3.6 去除约束 37
3.4 小结 37
3.5 问与答 37
3.6 实践 38
3.6.1 测验 38
3.6.2 练习 38
第4章 规格化过程 41
4.1 规格化数据库 41
4.1.1 原始数据库 42
4.1.2 数据库逻辑设计 42
4.1.3 规格形式 43
4.1.4 命名规范 45
4.1.5 规格化的优点 46
4.1.6 规格化的缺点 46
4.2 去规格化数据库 47
4.3 小结 47
4.4 问与答 47
4.5 实践 48
4.5.1 测验 48
4.5.2 练习 48
第5章 操作数据 50
5.1 数据操作概述 50
5.2 用新数据填充表 50
5.2.1 把数据插入到表 51
5.2.2 将数据插入到表的特定列中 52
5.2.3 从另一个表插入数据 53
5.2.4 插入NULL值 54
5.3 更新现有数据 55
5.3.1 更新一列的数据 55
5.3.2 更新一条或多条记录中的
多个字段 56
5.4 从表中删除数据 57
5.5 小结 57
5.6 问与答 58
5.7 实践 58
5.7.1 测验 58
5.7.2 练习 58
第6章 管理数据库事务 61
6.1 什么是事务 61
6.2 控制事务 62
6.2.1 COMMIT命令 62
6.2.2 ROLLBACK命令 64
6.2.3 SAVEPOINT命令 65
6.2.4 ROLLBACK TO SAVEPOINT
命令 65
6.2.5 RELEASE SAVEPOINT命令 67
6.2.6 SET TRANSACTION命令 68
6.3 低劣的事务控制 68
6.4 小结 68
6.5 问与答 68
6.6 实践 69
6.6.1 测验 69
6.6.2 练习 69
第7章 数据库查询 71
7.1 SELECT语句 71
7.1.1 SELECT语句 72
7.1.2 FROM子句 74
7.1.3 WHERE子句 74
7.1.4 ORDER BY子句 75
7.1.5 大小写敏感性 77
7.2 编写查询语句 78
7.2.1 统计表中的记录数量 79
7.2.2 从另一个用户表里选择
数据 80
7.2.3 使用字段别名 80
7.3 小结 81
7.4 问与答 81
7.5 实践 82
7.5.1 测验 82
7.5.2 练习 82
第8章 使用操作符对数据进行分类 84
8.1 什么是SQL里的操作符 84
8.2 比较操作符 84
8.2.1 相等 85
8.2.2 不等于 85
8.2.3 小于和大于 86
8.2.4 比较操作符的组合 87
8.3 逻辑操作符 88
8.3.1 IS NULL 88
8.3.2 BETWEEN 89
8.3.3 IN 89
8.3.4 LIKE 90
8.3.5 EXISTS 91
8.3.6 ALL、SOME和ANY
操作符 91
8.4 连接操作符 93
8.4.1 AND 93
8.4.2 OR 94
8.5 求反操作符 95
8.5.1 不相等 96
8.5.2 NOT BETWEEN 96
8.5.3 NOT IN 97
8.5.4 NOT LIKE 97
8.5.5 IS NOT NULL 98
8.5.6 NOT EXISTS 99
8.6 算术操作符 99
8.6.1 加法 99
8.6.2 减法 100
8.6.3 乘法 100
8.6.4 除法 100
8.6.5 算术操作符的组合 101
8.7 小结 102
8.8 问与答 102
8.9 实践 102
8.9.1 测验 102
8.9.2 练习 103
第9章 汇总查询得到的数据 104
9.1 聚合函数 104
9.1.1 COUNT函数 105
9.1.2 SUM函数 106
9.1.3 AVG函数 107
9.1.4 MAX函数 109
9.1.5 MIN函数 109
9.2 小结 110
9.3 问与答 110
9.4 实践 111
9.4.1 测验 111
9.4.2 练习 112
第 10章 数据排序与分组 113
10.1 为什么要对数据进行分组 113
10.2 GROUP BY子句 113
10.2.1 分组函数 114
10.2.2 对选中的数据进行分组 114
10.2.3 创建分组和使用聚合函数 114
10.3 GROUP BY与ORDER BY
的对比 118
10.4 CUBE和ROLLUP语句 120
10.5 HAVING子句 121
10.6 小结 122
10.7 问与答 123
10.8 实践 123
10.8.1 测验 123
10.8.2 练习 124
第 11章 重构数据的外观 125
11.1 ANSI字符函数 125
11.2 常用字符函数 126
11.2.1 串接函数 126
11.2.2 UPPER函数 127
11.2.3 LOWER函数 128
11.2.4 SUBSTR函数 129
11.2.5 TRANSLATE函数 130
11.2.6 REPLACE函数 130
11.2.7 LTRIM函数 131
11.2.8 RTRIM函数 132
11.3 其他字符函数 133
11.3.1 LENGTH函数 133
11.3.2 ISNULL函数(NULL值
检查程序) 133
11.3.3 COALESCE函数 134
11.3.4 LPAD函数 134
11.3.5 RPAD函数 135
11.3.6 ASCII函数 135
11.4 算术函数 135
11.5 转换函数 136
11.5.1 字符串转换为数值 136
11.5.2 数值转换为字符串 137
11.6 字符函数的组合使用 138
11.7 小结 139
11.8 问与答 139
11.9 实践 140
11.9.1 测验 140
11.9.2 练习 140
第 12章 日期和时间 142
12.1 日期是如何存储的 142
12.1.1 日期和时间的标准
数据类型 142
12.1.2 DATETIME元素 143
12.1.3 不同实现的日期类型 143
12.2 日期函数 144
12.2.1 当前日期 144
12.2.2 时区 144
12.2.3 时间与日期相加 145
12.2.4 其他日期函数 147
12.3 日期转换 147
12.3.1 日期描述 148
12.3.2 日期转换为字符串 150
12.3.3 字符串转换为日期 150
12.4 小结 151
12.5 问与答 151
12.6 实践 152
12.6.1 测验 152
12.6.2 练习 152
第 13章 在查询中连接表 153
13.1 从多个表获取数据 153
13.2 连接 153
13.2.1 等值连接 154
13.2.2 使用表的别名 155
13.2.3 不等值连接 156
13.2.4 外部连接 157
13.2.5 自连接 159
13.2.6 连接多个主键 161
13.3 需要考虑的连接事项 161
13.3.1 使用基表 162
13.3.2 笛卡儿积 162
13.4 小结 164
13.5 问与答 164
13.6 实践 164
13.6.1 测验 165
13.6.2 练习 165
第 14章 使用子查询定义未知数据 166
14.1 什么是子查询 166
14.1.1 子查询与SELECT语句 167
14.1.2 子查询与INSERT语句 169
14.1.3 子查询与UPDATE语句 169
14.1.4 子查询与DELETE语句 170
14.2 嵌套的子查询 171
14.3 关联子查询 174
14.4 子查询的效率 175
14.5 小结 176
14.6 问与答 176
14.7 实践 176
14.7.1 测验 177
14.7.2 练习 177
第 15章 将多个查询组合成一个 178
15.1 单查询与组合查询 178
15.2 组合查询操作符 179
15.2.1 UNION操作符 179
15.2.2 UNION ALL操作符 180
15.2.3 INTERSECT操作符 181
15.2.4 EXCEPT操作符 182
15.3 在组合查询中使用
ORDER BY 183
15.4 在组合查询中使用
GROUP BY 184
15.5 获取准确的数据 185
15.6 小结 186
15.7 问与答 186
15.8 实践 186
15.8.1 测验 187
15.8.2 练习 187
第 16章 利用索引改善性能 188
16.1 什么是索引 188
16.2 索引是如何工作的 188
16.3 CREATE INDEX命令 189
16.4 索引的类型 190
16.4.1 单字段索引 190
16.4.2 唯一索引 190
16.4.3 组合索引 191
16.4.4 隐式索引 191
16.5 何时考虑使用索引 191
16.6 何时应该避免使用索引 192
16.7 修改索引 193
16.8 删除索引 193
16.9 小结 194
16.10 问与答 194
16.11 实践 194
16.11.1 测验 194
16.11.2 练习 195
第 17章 改善数据库性能 196
17.1 什么是SQL语句调整 196
17.2 数据库调整与SQL语句
调整 196
17.3 格式化SQL语句 197
17.3.1 为提高可读性格式化SQL
语句 197
17.3.2 FROM子句中的表 199
17.3.3 连接条件的次序 199
17.3.4 最严格条件 199
17.4 全表扫描 201
17.5 其他性能考虑 202
17.5.1 使用LIKE操作符和
通配符 202
17.5.2 避免使用OR操作符 203
17.5.3 避免使用HAVING子句 203
17.5.4 避免大规模排序操作 204
17.5.5 使用存储过程 204
17.5.6 在批量加载时禁用索引 204
17.6 基于成本的优化 204
17.7 小结 205
17.8 问与答 206
17.9 实践 206
17.9.1 测验 206
17.9.2 练习 206
第 18章 管理数据库用户 208
18.1 数据库的用户管理 208
18.1.1 用户的类型 209
18.1.2 谁管理用户 209
18.1.3 用户在数据库中的位置 209
18.1.4 用户与模式的区别 210
18.2 管理过程 210
18.2.1 创建用户 210
18.2.2 创建模式 212
18.2.3 删除模式 214
18.2.4 调整用户 214
18.2.5 用户会话 215
18.2.6 删除用户访问权限 215
18.3 数据库用户使用的工具 215
18.4 小结 216
18.5 问与答 216
18.6 实践 216
18.6.1 测验 217
18.6.2 练习 217
第 19章 管理数据库安全 218
19.1 什么是数据库安全 218
19.2 什么是权限 219
19.2.1 系统权限 219
19.2.2 对象权限 220
19.2.3 谁负责授予和撤销权限 221
19.3 控制用户访问 221
19.3.1 GRANT命令 221
19.3.2 REVOKE命令 222
19.3.3 控制对单独字段的访问 222
19.3.4 PUBLIC数据库账户 222
19.3.5 权限组 223
19.4 通过角色控制权限 223
19.4.1 CREATE ROLE语句 224
19.4.2 DROP ROLE语句 224
19.4.3 SET ROLE语句 224
19.5 小结 225
19.6 问与答 225
19.7 实践 226
19.7.1 测验 226
19.7.2 练习 226
第 20章 创建并使用视图和异名 227
20.1 什么是视图 227
20.1.1 使用视图来简化数据访问 228
20.1.2 使用视图作为一种安全形式 228
20.1.3 使用视图来维护汇总数据 228
20.2 创建视图 229
20.2.1 从一个表创建视图 229
20.2.2 从多个表创建视图 231
20.2.3 从视图创建视图 231
20.3 WITH CHECK OPTION 232
20.4 从视图创建表 233
20.5 视图与ORDER BY子句 234
20.6 通过视图更新数据 234
20.7 删除视图 235
20.8 嵌套视图对性能的影响 235
20.9 什么是异名 235
20.9.1 创建异名 236
20.9.2 删除异名 236
20.10 小结 237
20.11 问与答 237
20.12 实践 237
20.12.1 测验 237
20.12.2 练习 238
第 21章 使用系统目录 239
21.1 什么是系统目录 239
21.2 如何创建系统目录 240
21.3 系统目录中包含什么内容 240
21.3.1 用户数据 241
21.3.2 安全信息 241
21.3.3 数据库设计信息 241
21.3.4 性能统计信息 241
21.4 不同实现中的系统目录表 241
21.5 查询系统目录 242
21.6 更新系统目录对象 244
21.7 小结 245
21.8 问与答 245
21.9 实践 245
21.9.1 测验 245
21.9.2 练习 246
第 22章 高级SQL主题 247
22.1 游标 247
22.1.1 打开游标 248
22.1.2 从游标获取数据 248
22.1.3 关闭游标 249
22.2 存储过程和函数 250
22.3 触发器 251
22.3.1 CREATE TRIGGER语句 251
22.3.2 DROP TRIGGER语句 253
22.4 动态SQL 253
22.5 调用级接口 253
22.6 使用SQL生成SQL 254
22.7 直接SQL与嵌入SQL 254
22.8 窗口表格函数 255
22.9 使用XML 255
22.10 小结 256
22.11 问与答 256
22.12 实践 256
22.12.1 测验 257
22.12.2 练习 257
第 23章 将SQL扩展到企业、
互联网和内联网 258
23.1 SQL与企业 258
23.1.1 后端程序 258
23.1.2 前端程序 259
23.2 访问远程数据库 259
23.2.1 ODBC 260
23.2.2 JDBC 260
23.2.3 OLE DB 260
23.2.4 厂商连接产品 260
23.2.5 Web接口 261
23.3 SQL与互联网 261
23.3.1 让数据供全世界的
顾客使用 262
23.3.2 向雇员和授权顾客
提供数据 262
23.4 SQL与内联网 262
23.5 小结 263
23.6 问与答 263
23.7 实践 263
23.7.1 测验 264
23.7.2 练习 264
第 24章 标准SQL的扩展 265
24.1 各种实现 265
24.1.1 不同实现之间的区别 265
24.1.2 遵循ANSI SQL 266
24.1.3 SQL的扩展 267
24.2 扩展示例 267
24.2.1 Transact-SQL 268
24.2.2 PL/SQL 268
24.2.3 MySQL 269
24.3 交互式SQL语句 269
24.4 小结 270
24.5 问与答 270
24.6 实践 271
附录A 常用SQL命令 272
附录B 安装Oracle和Microsoft SQL 277
附录C 测验和练习的答案 280
附录D 额外练习 314
术语表 325
猜您喜欢