编辑推荐
SQL是一种从关系型数据库生成、操作和检索数据的语言。它将继续活跃很长一段时间,并且在存储应用方面有光明的前途。学习SQL语言,你将学会理解用于储存自己组织相关信息的数据结构。
本书全面系统地介绍了SQL语言各方面的基础知识以及一些高级特性。本书所介绍的内容适用于多种主流的数据库管理系统。
本书作者从事设计、构建和实现应用数据库已有15个年头,具备非常丰富的经验。本书都展现了大量经过实践检验的方法和技巧。读者可以通过对本书循序渐进地学习快速掌握SQL语言,也可以在实际工作中遇到问题时直接翻阅本书中的相关章节以获取解决方案。
内容简介
本书全面系统地介绍了SQL语言各方面的基础知识以及一些高级特性,包括SQL数据语言、SQL方案语言、数据集操作、子查询以及内建函数与条件逻辑等内容。书中每个章节讲述一个相对独立的主题,并提供了相关示例和练习。本书内容以SQL 92标准为蓝本,涵盖了市场上常用数据库的*版本(MySQL 6.0、Oracle 11g及Microsoft SQL Server 2008)。
本书适合数据库应用开发者、数据库管理员和高级用户阅读。针对开发基于数据库的应用程序,以及日常的数据库系统管理,本书都展现了大量经过实践检验的方法和技巧。读者可以通过对本书循序渐进地学习快速掌握SQL语言,也可以在实际工作中遇到问题时直接翻阅本书中的相关章节以获取解决方案。
作者简介
作者:[美]博利厄(Alan Beaulieu) 译者:张伟超 林青松
Alan Beaulieu从事设计、构建和实现应用数据库已有15个年头,他目前经营自己的顾问公司,专门提供金融和电信领域的Oracle数据库设计与支持服务。Alan使用了Oracle的诸多特性,如并行查询、分区和并行服务器等,以构建OLTP和OLAP环境下的大型数据库。Alan获得了康奈尔大学工程学院的运筹学学士学位,现在和妻子以及两个女儿一起住在马萨诸塞州,可以通过电子邮箱albeau_mosql@yahoo.com与他联系。
目录
- 第1章 背景知识1
- 1.1 数据库简介1
- 1.1.1 非关系数据库2
- 1.1.2 关系模型3
- 1.1.3 一些术语5
- 1.2 什么是SQL6
- 1.2.1 SQL语句的分类6
- 1.2.2 SQL:非过程化语句7
- 1.2.3 SQL示例9
- 1.3 什么是MySQL11
- 1.4 内容前瞻11
- 第2章 创建和使用数据库13
- 2.1 创建MySQL数据库13
- 2.2 使用mysql命令行工具15
- 2.3 MySQL数据类型16
- 2.3.1 字符型数据16
- 2.3.2 数值型数据18
- 2.3.3 时间数据20
- 2.4 表的创建22
- 2.4.1 第1步:设计22
- 2.4.2 第2步:精化22
- 2.4.3 第3步:构建SQL方案语句24
- 2.5 操作与修改表27
- 2.5.1 插入数据27
- 2.5.2 更新数据31
- 2.5.3 删除数据32
- 2.6 导致错误的语句32
- 2.6.1 主键不唯一32
- 2.6.2 不存在的外键32
- 2.6.3 列值不合法33
- 2.6.4 无效的日期转换33
- 2.7 Bank方案34
- 第3章 查询入门37
- 3.1 查询机制37
- 3.2 查询语句39
- 3.3 select子句39
- 3.3.1 列的别名42
- 3.3.2 去除重复的行43
- 3.4 from子句44
- 3.4.1 表的概念44
- 3.4.2 表连接46
- 3.4.3 定义表别名47
- 3.5 where子句48
- 3.6 group by和having子句50
- 3.7 order by子句51
- 3.7.1 升序或降序排序53
- 3.7.2 根据表达式排序54
- 3.7.3 根据数字占位符排序55
- 3.8 小测验55
- 第4章 过滤57
- 4.1 条件评估57
- 4.1.1 使用圆括号58
- 4.1.2 使用not操作符59
- 4.2 构建条件60
- 4.3 条件类型60
- 4.3.1 相等条件60
- 4.3.2 范围条件62
- 4.3.3 成员条件65
- 4.3.4 匹配条件67
- 4.4 null: 4个字母的关键字70
- 4.5 小测验73
- 第5章 多表查询75
- 5.1 什么是连接75
- 5.1.1 笛卡儿积76
- 5.1.2 内连接77
- 5.1.3 ANSI连接语法80
- 5.2 连接3个或更多的表82
- 5.2.1 将子查询结果作为查询表84
- 5.2.2 连续两次使用同一个表86
- 5.3 自连接87
- 5.4 相等连接和不等连接88
- 5.5 连接条件和过滤条件90
- 5.6 小测验91
- 第6章 使用集合93
- 6.1 集合理论基础93
- 6.2 集合理论实践95
- 6.3 集合操作符97
- 6.3.1 union操作符97
- 6.3.2 intersect操作符99
- 6.3.3 except操作符100
- 6.4 集合操作规则102
- 6.4.1 对复合查询结果排序102
- 6.4.2 集合操作符优先级103
- 6.5 小测验105
- 第7章 数据生成、转换和操作107
- 7.1 使用字符串数据107
- 7.1.1 生成字符串108
- 7.1.2 操作字符串112
- 7.2 使用数值数据118
- 7.2.1 执行算术函数119
- 7.2.2 控制数字精度120
- 7.2.3 处理有符号数122
- 7.3 使用时间数据123
- 7.3.1 处理时区123
- 7.3.2 生成时间数据125
- 7.3.3 操作时间数据129
- 7.4 转换函数133
- 7.5 小测验134
- 第8章 分组与聚集135
- 8.1 分组概念135
- 8.2 聚集函数137
- 8.2.1 隐式或显式分组138
- 8.2.2 对独立值计数139
- 8.2.3 使用表达式141
- 8.2.4 如何处理null值141
- 8.3 产生分组142
- 8.3.1 对单列的分组143
- 8.3.2 对多列的分组143
- 8.3.3 利用表达式分组144
- 8.3.4 产生合计数144
- 8.4 分组过滤条件146
- 8.5 小测验148
- 第9章 子查询149
- 9.1 什么是子查询149
- 9.2 子查询类型150
- 9.3 非关联子查询150
- 9.3.1 多行单列子查询152
- 9.3.2 多列子查询157
- 9.4 关联子查询159
- 9.4.1 exists 运算符161
- 9.4.2 关联子查询操作数据162
- 9.5 何时使用子查询163
- 9.5.1 子查询作为数据源163
- 9.5.2 过滤条件中的子查询168
- 9.5.3 子查询作为表达式生成器169
- 9.6 子查询总结172
- 9.7 小测验173
- 第10章 再谈连接174
- 10.1 外连接174
- 10.1.1 左外连接与右外连接178
- 10.1.2 三路外连接179
- 10.1.3 自外连接181
- 10.2 交叉连接184
- 10.3 自然连接190
- 10.4 小测验192
- 第11章 条件逻辑194
- 11.1 什么是条件逻辑194
- 11.2 case 表达式196
- 11.2.1 查找型case表达式196
- 11.2.2 简单case表达式198
- 11.3 case表达式范例199
- 11.3.1 结果集变换199
- 11.3.2 选择性聚合200
- 11.3.3 存在性检查202
- 11.3.4 除零错误203
- 11.3.5 有条件更新205
- 11.3.6 null值处理205
- 11.4 小测验206
- 第12章 事务208
- 12.1 多用户数据库208
- 12.1.1 锁208
- 12.1.2 锁的粒度209
- 12.2 什么是事务209
- 12.2.1 启动事务211
- 12.2.2 结束事务212
- 12.2.3 事务保存点213
- 12.3 小测验215
- 第13章 索引和约束216
- 13.1 索引216
- 13.1.1 创建索引217
- 13.1.2 索引类型220
- 13.1.3 如何使用索引222
- 13.1.4 索引的不足224
- 13.2 约束225
- 13.2.1 创建约束226
- 13.2.2 约束与索引227
- 13.2.3 级联约束227
- 13.3 小测验230
- 第14章 视图231
- 14.1 什么是视图231
- 14.2 为什么使用视图234
- 14.2.1 数据安全234
- 14.2.2 数据聚合235
- 14.2.3 隐藏复杂性236
- 14.2.4 连接分区数据236
- 14.3 可更新的视图237
- 14.3.1 更新简单视图238
- 14.3.2 更新复杂视图239
- 14.4 小测验241
- 第15章 元数据242
- 15.1 关于数据的数据242
- 15.2 信息模式243
- 15.3 使用元数据248
- 15.3.1 模式生成脚本248
- 15.3.2 部署验证251
- 15.3.3 生成动态SQL251
- 15.4 小测验255
- 附录A 示例数据库的ER图256
- 附录B MySQL对SQL语言的扩展258
- B.1 扩展select语句258
- B.1.1 limit子句258
- B.1.2 into outfile子句261
- B.2 组合insert/update语句263
- B.3 按排序更新和删除265
- B.4 多表更新与删除266
- 附录C 练习答案270