本书是《SQL基础教程》作者MICK为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两部分,*部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,比如CASE表达式、自连接、HAVING子句、外连接、关联子查询、EXISTS……去探索新发现。这部分不仅穿插讲解了这些技巧背后的逻辑和相关知识,而且辅以丰富的示例程序,旨在帮助读者提升编程水平;第二部分着重介绍关系数据库的发展史,把实践与理论结合起来,旨在帮助读者加深对关系数据库和SQL语言的理解。此外,每节末尾均设置有练习题,并在书末提供了解答,方便读者检验自己对书中知识点的掌握程度。 本书适合具有半年以上SQL使用经验、已掌握SQL基础知识和技能、希望提升自己编程水平的读者阅读。
《SQL基础教程》目录
第0章 绪论——搭建SQL的学习环境 1
0-1 PostgreSQL的安装和连接设置 3
安装步骤 3
修改设置文件 7
0-2 通过PostgreSQL执行SQL语句 9
连接PostgreSQL(登录) 9
执行SQL语句 10
创建学习用的数据库 11
连接学习用的数据库(登录) 12
第1章 数据库和SQL 13
1-1 数据库是什么 15
我们身边的数据库 15
为什么DBMS那么重要 16
DBMS的种类 18
1-2 数据库的结构 20
RDBMS的常见系统结构 20
表的结构 22
1-3 SQL概要 25
标准SQL 25
SQL语句及其种类 26
SQL的基本书写规则 27
1-4 表的创建 30
表的内容的创建 30
数据库的创建(CREATE DATABASE语句) 31
表的创建(CREATE TABLE语句) 31
命名规则 33
数据类型的指定 34
约束的设置 35
1-5 表的删除和更新 37
表的删除(DROP TABLE语句) 37
表定义的更新(ALTER TABLE语句) 38
向Product表中插入数据 39
练习题 42
第2章 查询基础 43
2-1 SELECT语句基础 45
列的查询 45
查询出表中所有的列 47
为列设定别名 48
常数的查询 50
从结果中删除重复行 50
根据WHERE语句来选择记录 53
注释的书写方法 55
2-2 算术运算符和比较运算符 57
算术运算符 57
需要注意NULL 58
比较运算符 60
对字符串使用不等号时的注意事项 62
不能对NULL使用比较运算符 65
2-3 逻辑运算符 68
NOT运算符 68
AND运算符和OR运算符 70
通过括号强化处理 72
逻辑运算符和真值 74
含有NULL时的真值 76
练习题 78
第3章 聚合与排序 79
3-1 对表进行聚合查询 81
聚合函数 81
计算表中数据的行数 82
计算NULL之外的数据的行数 83
计算合计值 84
计算平均值 86
计算最大值和最小值 87
使用聚合函数删除重复值(关键字DISTINCT) 89
3-2 对表进行分组 91
GROUP BY子句 91
聚合键中包含NULL的情况 93
使用WHERE子句时GROUP BY的执行结果 94
与聚合函数和GROUP BY子句有关的常见错误 96
3-3 为聚合结果指定条件 101
HAVING子句 101
HAVING子句的构成要素 104
相对于HAVING子句,更适合写在WHERE子句中的条件 105
3-4 对查询结果进行排序 108
ORDER BY子句 108
指定升序或降序 110
指定多个排序键 111
NULL的顺序 111
在排序键中使用显示用的别名 112
ORDER BY子句中可以使用的列 114
不要使用列编号 114
练习题 116
第4章 数据更新 117
4-1 数据的插入(INSERT语句的使用方法) 119
什么是INSERT 119
INSERT语句的基本语法 120
列清单的省略 123
插入NULL 123
插入默认值 124
从其他表中复制数据 126
4-2 数据的删除(DELETE语句的使用方法) 129
DROP TABLE语句和DELETE语句 129
DELETE语句的基本语法 129
指定删除对象的DELETE语句(搜索型DELETE) 130
4-3 数据的更新(UPDATE语句的使用方法) 133
UPDATE语句的基本语法 133
指定条件的UPDATE语句(搜索型UPDATE) 134
使用NULL进行更新 135
多列更新 136
4-4 事务 138
什么是事务 138
创建事务 139
ACID特性 144
练习题 145
第5章 复杂查询 147
5-1 视图 149
视图和表 149
创建视图的方法 151
视图的限制① ——定义视图时不能使用ORDER BY子句 154
视图的限制② ——对视图进行更新 155
删除视图 159
5-2 子查询 160
子查询和视图 160
子查询的名称 163
标量子查询 163
标量子查询的书写位置 166
使用标量子查询时的注意事项 167
5-3 关联子查询 168
普通的子查询和关联子查询的区别 168
关联子查询也是用来对集合进行切分的 171
结合条件一定要写在子查询中 172
练习题 173
第6章 函数、谓词、CASE表达式 175
6-1 各种各样的函数 177
函数的种类 177
算术函数 178
字符串函数 182
日期函数 190
转换函数 194
6-2 谓词 198
什么是谓词 198
LIKE谓词——字符串的部分一致查询 198
BETWEEN谓词——范围查询 202
IS NULL、IS NOT NULL——判断是否为NULL 203
IN谓词——OR的简便用法 204
使用子查询作为IN谓词的参数 205
EXIST谓词 210
6-3 CASE表达式 214
什么是CASE表达式 214
CASE表达式的语法 214
CASE表达式的使用方法 215
练习题 221
第7章 集合运算 223
7-1 表的加减法 225
什么是集合运算 225
表的加法——UNION 225
集合运算的注意事项 228
包含重复行的集合运算——ALL选项 229
选取表中公共部分——INTERSECT 230
记录的减法——EXCEPT 231
7-2 联结(以列为单位对表进行联结) 234
什么是联结 234
内联结——INNER JOIN 235
外联结——OUTER JOIN 240
3张以上的表的联结 243
交叉联结——CROSS JOIN 246
联结的特定语法和过时语法 249
练习题 254
第8章 SQL高级处理 255
8-1 窗口函数 257
什么是窗口函数 257
窗口函数的语法 258
语法的基本使用方法——使用RANK函数 258
无需指定PARTITION BY 261
专用窗口函数的种类 262
窗口函数的适用范围 263
作为窗口函数使用的聚合函数 264
计算移动平均 266
两个ORDER BY 269
8-2 GROUPING运算符 271
同时得到合计行 271
ROLLUP——同时得出合计和小计 272
GROUPING函数——让NULL更加容易分辨 277
CUBE——用数据来搭积木 279
GROUPING SETS——取得期望的积木 281
练习题 282
第9章 通过应用程序连接数据库 283
9-1 数据库世界和应用程序世界的连接 285
数据库和应用程序之间的关系 285
驱动——两个世界之间的桥梁 286
驱动的种类 287
9-2 Java基础知识 289
第一个程序Hello,World 289
编译和程序执行 291
常见错误 294
9-3 通过Java连接PostgreSQL 298
执行SQL语句的Java程序 298
Java是如何从数据库中获取数据的呢 299
执行连接数据库的程序 301
选取表中的数据 302
更新表中的数据 305
小结 307
练习题 307
附录 练习题答案 308
《SQL进阶教程》目录
前言
第 1 章神奇的SQL
1-1 CASE 表达式
1-2 自连接的用法
1-3 三值逻辑和NULL
1-4 HAVING 子句的力量
1-5 外连接的用法
1-6 用关联子查询比较行与行
1-7 用 SQL 进行集合运算
1-8 EXISTS 谓词的用法
1-9 用 SQL 处理数列
1-10 HAVING 子句又回来了
1-11 让 SQL 飞起来
1-12 SQL 编程方法
第 2 章关系数据库的世界
2-1 关系数据库的历史
2-2 为什么叫“关系”模型
2-3 开始于关系,结束于关系
2-4 地址这一巨大的怪物
2-5 GROUP BY 和PARTITION BY
2-6 从面向过程思维向声明式思维、面向集合思维转变的 7 个关键点
2-7 SQL 和递归集合
2-8 人类的逻辑学
2-9 消灭 NULL 委员会
2-10 SQL 中的层级
第 3 章附录
3-1 习题解答
3-2 参考文献
后记
文件大小:53.8MB
内附PC端和移动端阅读器