内容简介
《锋利的SQL(第2版)》从基础、开发、性能调整和实战4方面介绍了SQL技术及其应用,包括数据库与架构、表管理、索引管理、基本查询、子查询、联接和APPLY运算符、操作结果集、窗口计算和表旋转、数据修改、视图、游标、存储过程、触发器、用户自定义函数、事务处理、并发访问控制、查询的优化与执行等内容。
《锋利的SQL(第2版)》既覆盖了改善效率和性能的普通SQL技术,也深入探讨了SQL新技术,更包含一些实用的查询解决方案,希望本书能够成为引领读者进入SQL查询殿堂的捷径。此外,本书在介绍各种查询语法时,更注重对查询逻辑思维方式的引导和介绍,帮助读者举一反三,提升动手解决实际问题的能力。
作者简介
张洪举, 微软公司最有价值专家(MVP),微软TechNet技术资源专栏作家。拥有近20年的数据库产品应用开发经历,尤其是在多层架构的面向对象系统分析设计、数据库分析设计、商业智能系统分析设计等方面积累了丰富的项目经验。著有《SQL Server 2005:入门、进阶与应用实例》等原创著作,并翻译了《SQL Server 2012 T-SQL基础教程循序渐进》等作品。
王晓文, 曲阜师范大学数学科学学院学生,虽学的是数学与应用数学专业,但个人喜欢研究数据库基础理论,在本书写作过程中主要负责SQL理论基础、数据库物理存储等相关内容的编写。
目录
基 础 篇
第1章 SQL简介 2
1.1 SQL的历史起源 2
1.1.1 CODASYL 3
1.1.2 IMS 3
1.1.3 RDBMS和SQL 3
1.1.4 ANSI和SQL方言 5
1.2 SQL的理论基础 5
1.2.1 集合理论 5
1.2.2 谓词逻辑 6
1.2.3 关系模型 7
1.3 Transact-SQL语言的类型 10
1.3.1 DDL语句 11
1.3.2 DML语句 12
1.3.3 编程和流控制语句 12
1.3.4 SQL语句的批处理 15
1.4 Transact-SQL语法 16
1.4.1 标识符 16
1.4.2 数据类型 17
1.4.3 函数 20
1.4.4 表达式 20
1.4.5 运算符 21
1.4.6 注释 21
1.4.7 保留关键字 22
1.5 常量和变量 22
1.5.1 常量 22
1.5.2 变量 24
1.6 运算符 26
1.6.1 算术运算符 26
1.6.2 赋值运算符 28
1.6.3 位运算符 28
1.6.4 比较运算符 29
1.6.5 逻辑运算符 30
1.6.6 字符串串联运算符 31
1.6.7 一元运算符 31
1.7 常用函数 31
1.7.1 聚合函数 31
1.7.2 配置函数 33
1.7.3 游标函数 34
1.7.4 日期和时间函数 35
1.7.5 数学函数 37
1.7.6 数据类型转换函数 39
1.7.7 字符串函数 43
1.7.8 文本和图像函数 45
1.7.9 逻辑函数 46
1.8 查询工具 46
1.8.1 Management Studio 46
1.8.2 sqlcmd 47
1.9 SQL书写规范 48
1.9.1 大小写规范 49
1.9.2 使用空格 50
1.9.3 使用缩进 51
1.9.4 使用垂直空白道 51
1.9.5 使用分组 52
第2章 数据库与架构 53
2.1 SQL Server数据库基础 53
2.1.1 数据库的服务方式 53
2.1.2 数据库实例 54
2.1.3 架构与对象 55
2.1.4 数据库文件和文件组 56
2.2 创建数据库 58
2.2.1 CREATE DATABASE语句的语法格式 58
2.2.2 创建数据库示例 60
2.2.3 判断数据库是否已经存在 63
2.3 修改数据库 63
2.3.1 扩展数据库和文件 63
2.3.2 向数据库中添加、删除和修改文件组 64
2.3.3 收缩数据库和文件 65
2.3.4 设置数据库选项 68
2.3.5 重命名数据库 71
2.4 删除数据库 71
2.5 架构管理 72
2.5.1 创建架构 72
2.5.2 修改架构 74
2.5.3 移动对象到一个新架构中 75
2.5.4 删除架构 76
第3章 表管理 77
3.1 表的物理存储方式 77
3.1.1 数据页 77
3.1.2 区 78
3.2 创建表 79
3.2.1 创建基本表 79
3.2.2 使用NULL约束 79
3.2.3 使用默认约束和标识列 80
3.2.4 其他数据完整性设置 86
3.3 修改表 88
3.3.1 为表添加新列 89
3.3.2 修改表中的列 89
3.3.3 删除表中的列 91
3.4 重命名和删除表 91
3.5 临时表 92
3.5.1 本地表和全局表 92
3.5.2 表变量 93
3.6 内存优化表 93
第4章 索引管理 95
4.1 索引的基础知识 95
4.1.1 索引的类型 95
4.1.2 索引的特征 99
4.1.3 常规索引设计规则 99
4.2 创建索引 101
4.2.1 最大索引限制 101
4.2.2 限制索引参与的数据类型 101
4.2.3 创建聚集索引 102
4.2.4 创建非聚集索引 103
4.2.5 创建具有包含性列的索引 104
4.2.6 为计算列创建索引 105
4.3 修改索引 107
4.3.1 禁用索引 107
4.3.2 重新组织和重新生成索引 108
4.3.3 设置索引选项 110
4.3.4 重命名索引 111
4.4 删除索引 111
第5章 基本查询 112
5.1 基本的SELECT语句 112
5.1.1 SELECT语句的结构 112
5.1.2 数据库对象的引用规则 114
5.2 使用选择列表和表别名 115
5.2.1 选择所有列 115
5.2.2 选择特定列 115
5.2.3 使用常量、函数和表达式 116
5.2.4 用表别名 121
5.3 使用WHERE子句筛选行 121
5.3.1 用比较搜索条件 121
5.3.2 使用范围搜索条件 123
5.3.3 使用列表搜索条件 123
5.3.4 使用模式匹配搜索条件 125
5.3.5 使用NULL比较搜索条件 127
5.4 使用GROUP BY子句进行分组计算 129
5.5 使用HAVING子句从中间结果筛选行 131
5.6 使用ORDER BY子句进行排序 132
5.6.1 指定排序列 132
5.6.2 指定排序顺序 133
5.6.3 指定排序规则 134
5.7 使用TOP和OFFSET-FETCH限制结果集 137
5.7.1 使用TOP选项 137
5.7.2 使用OFFSET-FETCH筛选 139
5.7.3 使用SET ROWCOUNT语句 140
5.8 使用DISTINCT消除重复行 140
5.9 同时操作 142
5.10 查询的逻辑处理 143
5.10.1 逻辑处理过程简介 143
5.10.2 步骤1:FROM 147
5.10.3 步骤2:使用WHERE筛选器 151
5.10.4 步骤3:数据分组 153
5.10.5 步骤4:使用HAVING筛选器 154
5.10.6 步骤5:处理SELECT列表 154
5.10.7 步骤6:使用ORDER BY子句 155
5.10.8 步骤7:使用TOP或OFFSET/
FETCH 156
第6章 子查询 157
6.1 在选择列表中使用子查询 157
6.1.1 子查询示例 157
6.1.2 子查询与联接的关系 159
6.2 含有IN和EXISTS的子查询 159
6.2.1 含有IN的子查询 159
6.2.2 含有EXISTS的子查询 161
6.2.3 含有NOT IN和NOT EXISTS的子查询 162
6.3 含有比较运算符的子查询 164
6.4 使用ANY、SOME或ALL关键字 165
6.5 使用多层嵌套子查询 168
6.6 子查询应遵循的规则 168
第7章 联接和APPLY运算符 172
7.1 联接的基本知识 172
7.1.1 联接的语法格式 172
7.1.2 联接所使用的逻辑处理阶段 173
7.1.3 列名限定和选择列表的使用 174
7.1.4 联接条件设定 175
7.2 交叉联接 175
7.2.1 交叉联接的语法格式 176
7.2.2 使用交叉联接查询全部数据 176
7.2.3 使用交叉联接优化查询性能 179
7.2.4 为交叉联接添加WHERE子句 180
7.3 内部联接 181
7.3.1 内部联接的语法格式 181
7.3.2 等值内部联接 182
7.3.3 不等值联接 184
7.4 外部联接 186
7.4.1 外部联接的语法格式 186
7.4.2 左外部联接 187
7.4.3 右外部联接 190
7.4.4 完全外部联接 191
7.5 自联接 192
7.5.1 使用不同列实现自联接 192
7.5.2 使用同一列实现自联接 193
7.6 多表联接 194
7.6.1 顺序联接 194
7.6.2 嵌套联接 196
7.6.3 指定联接的物理顺序 198
7.6.4 多表联接示例 199
7.7 联接算法 202
7.7.1 嵌套循环联接 202
7.7.2 合并联接 203
7.7.3 哈希联接 204
7.7.4 使用联接提示强制联接策略 206
7.8 使用APPLY运算符 208
第8章 操作结果集 211
8.1 合并结果集 211
8.1.1 UNION与UNION ALL 212
8.1.2 使用ORDER BY子句 213
8.1.3 结果集的合并顺序 214
8.2 查询结果集的差异行 214
8.2.1 使用EXCEPT运算符 214
8.2.2 查询全部差异行 216
8.3 查询结果集的相同行 218
8.3.1 使用INTERSECT运算符 218
8.3.2查
前言/序言
锋利的SQL(第2版) 电子书 下载 mobi epub pdf txt