目 录
前言 III
关于本书 IV
读者对象 IV
学习本书前的预备知识 IV
本书涉及的关系数据库 V
本书的学习安排 V
随书光盘简介 VI
第1章 数据库和SQL 1
1-1 数据库是什么 3
我们身边的数据库 3
为什么DBMS那么重要 4
DBMS种类 6
1-2 数据库的结构 8
RDBMS的常见系统结构 8
表的结构 10
1-3 SQL概要 13
标准SQL 13
SQL语句及其种类 14
SQL的基本书写规则 15
1-4 表的创建 18
表的内容的创建 18
数据库的创建(CREATE DATABASE语句) 19
表的创建(CREATE TABLE语句) 19
命名规则 21
数据类型的指定 22
约束的设置 24
1-5 表的删除和更新 25
表的删除(DROP TABLE语句) 25
表定义的更新(ALTER TABLE语句) 26
向Shohin表中插入数据 27
练习题 30
第2章 查询基础 31
2-1 SELECT语句基础 33
列的查询 33
查询出表中所有的列 35
为列设定别名 36
常数的查询 38
从结果中删除重复行 38
根据WHERE语句来选择记录 41
注释的书写方法 43
2-2 算术运算符和比较运算符 45
算术运算符 45
需要注意NULL 46
比较运算符 48
对字符串使用不等号时的注意事项 50
不能对NULL使用比较运算符 53
2-3 逻辑运算符 56
NOT运算符 56
AND运算符和OR运算符 58
通过括号进行强化 60
逻辑运算符和真值 62
含有NULL时的真值 64
练习题 66
第3章 聚合与排序 67
3-1 对表进行聚合查询 69
聚合函数 69
计算表中数据的行数 70
计算NULL以外数据的行数 71
计算合计值 72
计算平均值 74
计算最大值和最小值 75
使用聚合函数删除重复值(关键字DISTINCT) 77
3-2 对表进行分组 79
GROUP BY子句 79
聚合键中包含NULL的情况 81
使用WHERE子句时GROUP BY的执行结果 82
与聚合函数和GROUP BY子句有关的常见错误 84
3-3 为聚合结果指定条件 89
HAVING子句 89
HAVING子句的构成要素 92
相对于HAVING子句,更适合写在WHERE子句中的条件 93
3-4 对查询结果进行排序 96
ORDER BY子句 96
指定升序或降序 98
指定多个排序键 99
NULL的顺序 99
在排序键中使用显示用别名 100
ORDER BY子句中可以使用的列 102
不要使用列编号 102
练习题 104
第4章 数据更新 105
4-1 数据的插入(INSERT语句的使用方法) 107
什么是INSERT 107
INSERT语句的基本语法 108
列清单的省略 111
插入NULL 111
插入默认值 112
从其他表中复制数据 114
4-2 数据的删除(DELETE语句的使用方法) 117
DROP TABLE语句和DELETE语句 117
DELETE语句的基本语法 117
指定删除对象的DELETE语句(搜索型DELETE) 118
4-3 数据的更新(UPDATE语句的使用方法) 121
UPDATE语句的基本语法 121
指定条件的UPDATE语句(搜索型UPDATE) 122
使用NULL进行更新 123
多列更新 124
4-4 事务 126
什么是事务 126
创建事务 127
ACID特性 132
练习题 133
第5章 复杂查询 135
5-1 视图 137
视图和表 137
创建视图的方法 139
视图的限制①——定义视图时不能使用ORDER BY子句 142
视图的限制②——对视图进行更新 143
删除视图 147
5-2 子查询 148
子查询和视图 148
子查询的名称 151
标量子查询 151
标量子查询的书写位置 154
使用标量子查询时的注意事项 155
5-3 关联子查询 156
普通的子查询和关联子查询的区别 156
关联子查询也是用来对集合进行切分的 159
结合条件一定要写在子查询中 160
练习题 161
第6章 函数、谓词、CASE表达式 163
6-1 各种各样的函数 165
函数的种类 165
算术函数 166
字符串函数 170
日期函数 178
转换函数 182
6-2 谓词 186
什么是谓词 186
LIKE谓词——字符串的部分一致查询 186
BETWEENT谓词——范围查询 190
IS NULL、IS NOT NULL——判断是否为NULL 191
IN谓词——OR的简便用法 192
使用子查询作为IN谓词的参数 193
EXIST谓词 198
6-3 CASE表达式 202
什么是CASE表达式 202
CASE表达式的语法 202
CASE表达式的使用方法 203
练习题 209
第7章 集合运算 211
7-1 表的加减法 213
什么是集合运算 213
表的加法——UNION 213
集合运算的注意事项 216
包含重复行的集合运算——ALL选项 217
选取表中公共部分——INTERSECT 218
记录的减法——EXCEPT 219
7-2 联结(以列为单位对表进行联结) 222
什么是联结 222
内联结——INNER JOIN 223
外联结——OUTER JOIN 228
3张以上表的联结 231
交叉联结——CROSS JOIN 234
特定的联结语句和过时的语法 237
练习题 242
第8章 SQL高级处理 243
8-1 窗口函数 245
什么是窗口函数 245
窗口函数的语法 246
语法的基本使用方法——使用RANK函数 246
无须指定PARTITION BY 249
专用窗口函数的种类 250
窗口函数的适用范围 251
作为窗口函数使用的聚合函数 252
计算移动平均 254
两个ORDER BY 257
8-2 GROUPING运算符 259
同时计算出合计值 259
ROLLUP——同时计算出合计值和小计值 260
GROUPING函数——让NULL更加容易分辨 265
CUBE——用数据来搭积木 267
GROUPING SETS——取得期望的积木 269
练习题 270
附录A 安装PostgreSQL 271
附录B 在PostgreSQL中执行SQL的方法 278
附录C 练习题答案 284