SQL经典实例
前言 ........................xi
第 1 章 检索记录 ....................1
1.1 检索所有行和列 .............1
1.2 筛选行 .......2
1.3 查找满足多个查询条件的行 ...............2
1.4 筛选列 .......3
1.5 创建有意义的列名 .........3
1.6 在WHERE 子句中引用别名列 ...............4
1.7 串联多列的值 .................5
1.8 在SELECT 语句里使用条件逻辑 .........6
查看完整
第 1 章 检索记录 ....................1
1.1 检索所有行和列 .............1
1.2 筛选行 .......2
1.3 查找满足多个查询条件的行 ...............2
1.4 筛选列 .......3
1.5 创建有意义的列名 .........3
1.6 在WHERE 子句中引用别名列 ...............4
1.7 串联多列的值 .................5
1.8 在SELECT 语句里使用条件逻辑 .........6
查看完整
安东尼·莫利纳罗(Anthony Molinaro),专精SQL技术,擅长解决棘手的SQL问题,对关系理论有深入研究。
刘春辉,程序员, DBA。入行十余年,起先从事企业软件系统研发,后转入互联网行业做数据库运维,专注于数据密集型应用系统的数据库后端设计、实现、运维以及系统改善等工作。对于开源数据库以及中间件有强烈兴趣。
刘春辉,程序员, DBA。入行十余年,起先从事企业软件系统研发,后转入互联网行业做数据库运维,专注于数据密集型应用系统的数据库后端设计、实现、运维以及系统改善等工作。对于开源数据库以及中间件有强烈兴趣。
本书详细介绍了各种数据库的SQL查询技术和一些基础的SQL查询语句,并且通过实例操作的方式讲解了如何插入、更新和删除数据等相关知识。另外,本书还介绍了如何使用SQL语句进行日期处理,以及一些其他的SQL语句查询操作,能够帮助你掌握相关的SQL知识。
前言 ........................xi
第 1 章 检索记录 ....................1
1.1 检索所有行和列 .............1
1.2 筛选行 .......2
1.3 查找满足多个查询条件的行 ...............2
1.4 筛选列 .......3
1.5 创建有意义的列名 .........3
1.6 在WHERE 子句中引用别名列 ...............4
1.7 串联多列的值 .................5
1.8 在SELECT 语句里使用条件逻辑 .........6
1.9 限定返回行数 .................6
1.10 随机返回若干行记录 ...8
1.11 查找Null 值 .................9
1.12 把Null 值转换为实际值 .................10
1.13 查找匹配项 .................10
第 2 章 查询结果排序 .........12
2.1 以指定顺序返回查询结果 .................12
2.2 多字段排序 ....................13
2.3 依据子串排序 ...............14
2.4 对含有字母和数字的列排序 .............15
2.5 排序时对Null 值的处理 ...................17
2.6 依据条件逻辑动态调整排序项 .........23
第3 章 多表查询 ..................25
3.1 叠加两个行集 ...............25
3.2 合并相关行 ....................27
3.3 查找两个表中相同的行 .....................28
3.4 查找只存在于一个表中的数据 .........30
3.5 从一个表检索与另一个表不相关的行 .................33
3.6 新增连接查询而不影响其他连接查询 .................34
3.7 确定两个表是否有相同的数据 .........36
3.8 识别并消除笛卡儿积 ...42
3.9 组合使用连接查询与聚合函数 .........44
3.10 组合使用外连接查询与聚合函数 ...48
3.11 从多个表中返回缺失值 ...................51
3.12 在运算和比较中使用Null ..............54
第4 章 插入、更新和删除 ......................56
4.1 插入新记录 ....................57
4.2 插入默认值 ....................57
4.3 使用Null 覆盖默认值 .58
4.4 复制数据到另一个表 ...59
4.5 复制表定义 ....................59
4.6 多表插入 .......................60
4.7 禁止插入特定列 ...........62
4.8 更新记录 .......................63
4.9 当相关行存在时更新记录 .................64
4.10 使用另一个表的数据更新记录 .......64
4.11 合并记录 .....................67
4.12 删除全表记录 .............69
4.13 删除指定记录 .............69
4.14 删除单行记录 .............69
4.15 删除违反参照完整性的记录 ...........70
4.16 删除重复记录 .............70
4.17 删除被其他表参照的记录 ...............72
第5 章 元数据查询 .............74
5.1 列举模式中的表 ...........74
5.2 列举字段 .......................75
5.3 列举索引列 ....................76
5.4 列举约束 .......................77
5.5 列举非索引外键 ...........78
5.6 用SQL 生成SQL .........81
5.7 描述Oracle 数据字典视图 ................83
第6 章 字符串处理 .............85
6.1 遍历字符串 ....................85
6.2 嵌入引号 .......................87
6.3 统计字符出现的次数 ...88
6.4 删除不想要的字符 .......89
6.5 分离数字和字符数据 ...91
6.6 判断含有字母和数字的字符串 .........94
6.7 提取姓名的首字母 .......99
6.8 按照子字符串排序 .....102
6.9 根据字符串里的数字排序 ...............103
6.10 创建分隔列表 ...........109
6.11 分隔数据转换为多值IN 列表 .......114
6.12 按字母表顺序排列字符 .................119
6.13 识别字符串里的数字字符 .............124
6.14 提取第n 个分隔子字符串 .............130
6.15 解析IP 地址 .............136
第7 章 数值处理 ...............139
7.1 计算平均值 .................139
7.2 查找最小值和最大值 .141
7.3 求和 .......142
7.4 计算行数 .....................144
7.5 计算非Null 值的个数 .....................146
7.6 累计求和 .....................146
7.7 计算累计乘积 .............149
7.8 计算累计差 .................151
7.9 计算众数 .....................152
7.10 计算中位数 ...............155
7.11 计算百分比 ...............158
7.12 聚合Null 列 .............160
7.13 计算平均值时去掉最大值和最小值 .................161
7.14 将含有字母和数字的字符串转换为数字 .........163
7.15 修改累计值 ...............165
第8 章 日期运算 ................168
8.1 年月日加减法 .............168
8.2 计算两个日期之间的天数 ...............170
8.3 计算两个日期之间的工作日天数 ...172
8.4 计算两个日期之间相差的月份和年份 ...............176
8.5 计算两个日期之间相差的秒数、分钟数和小时数 .................178
8.6 统计一年中有多少个星期一 ...........180
8.7 计算当前记录和下一条记录之间的日期差 .......191
第9 章 日期处理 ................196
9.1 判断闰年 .....................196
9.2 计算一年有多少天 .....203
9.3 从给定日期值里提取年月日时分秒 ...................205
9.4 计算一个月的第 一天和最后一天 ...207
9.5 列出一年中所有的星期五 ...............209
9.6 找出当前月份的第 一个和最后一个星期一 .......216
9.7 生成日历 .....................222
9.8 列出一年中每个季度的开始日期和结束日期 ...239
9.9 计算一个季度的开始日期和结束日期 ...............243
9.10 填补缺失的日期 .......249
9.11 依据特定时间单位检索数据 .........258
9.12 比较特定的日期要素 .....................259
9.13 识别重叠的日期区间 .....................262
第 10 章 区间查询 .............268
10.1 定位连续的值区间 ...268
10.2 计算同一组或分区的行之间的差 .273
10.3 定位连续值区间的开始值和结束值 .................281
10.4 为值区间填充缺失值 .....................285
10.5 生成连续的数值 .......289
第 11 章 高级查询 .............293
11.1 结果集分页 ...............293
11.2 跳过n 行记录 ...........296
11.3 在外连接查询里使用OR 逻辑 .......298
11.4 识别互逆的记录 .......301
11.5 提取最靠前的n 行记录 .................302
11.6 找出最大和最小的记录 .................304
11.7 查询未来的行 ...........305
11.8 行值轮转 ....................308
11.9 对结果排序 ...............311
11.10 删除重复项 .............312
11.11 查找骑士值 .............314
11.12 生成简单的预测 .....321
第 12 章 报表和数据仓库 ......................329
12.1 变换结果集成一行 ...329
12.2 变换结果集成多行 ...331
12.3 反向变换结果集 .......339
12.4 反向变换结果集成一列 .................340
12.5 删除重复数据 ...........343
12.6 变换结果集以实现跨行计算 .........346
12.7 创建固定大小的数据桶 .................347
12.8 创建预定数目的桶 ...351
12.9 创建水平直方图 .......355
12.10 创建垂直直方图 .....357
12.11 返回非分组列 .........360
12.12 计算简单的小计 .....365
12.13 计算所有可能的表达式组合的小计 ...............368
12.14 识别非小计行 .........377
12.15 使用CASE 表达式标记行数据 .....379
12.16 创建稀疏矩阵 .........380
12.17 按照时间单位分组 .382
12.18 多维度聚合运算 .....385
12.19 动态区间聚合运算 .387
12.20 变换带有小计的结果集 ...............394
第 13 章 层次查询 .............398
13.1 展现父子关系 ...........399
13.2 展现祖孙关系 ...........402
13.3 创建层次视图 ...........407
13.4 找出给定的父节点对应的所有子节点 .............414
13.5 确认叶子节点、分支节点和根节点 .................418
第 14 章 杂项 ......................426
14.1 使用SQL Server 的PIVOT 操作符创建交叉报表 ..................426
14.2 使用SQL Server 的UNPIVOT 操作符逆向转换交叉报表 ......428
14.3 使用Oracle 的MODEL 子句变换结果集 .............430
14.4 从不固定位置提取字符串的元素 .433
14.5 计算一年有多少天 ...436
14.6 查找含有数字和字母的字符串 .....437
14.7 在Oracle 中把整数转换成二进制 ....................439
14.8 变换已排名的结果集 .....................442
14.9 为两次变换后的结果集增加列标题 .................445
14.10 在Oracle 中把标量子查询转换为复合子查询 ....................456
14.11 解析串行化的数据 .458
14.12 计算比重 .................462
14.13 从Oracle 中生成CSV 格式的输出 ................464
14.14 找出不匹配某个格式的文本 .......469
14.15 使用内嵌视图转换数据 ...............471
14.16 测试一组数据中是否存在某个值 ...................472
附录A 窗口函数简介1 .....476
附录B 重温Rozenshtein .....................500
^ 收 起
第 1 章 检索记录 ....................1
1.1 检索所有行和列 .............1
1.2 筛选行 .......2
1.3 查找满足多个查询条件的行 ...............2
1.4 筛选列 .......3
1.5 创建有意义的列名 .........3
1.6 在WHERE 子句中引用别名列 ...............4
1.7 串联多列的值 .................5
1.8 在SELECT 语句里使用条件逻辑 .........6
1.9 限定返回行数 .................6
1.10 随机返回若干行记录 ...8
1.11 查找Null 值 .................9
1.12 把Null 值转换为实际值 .................10
1.13 查找匹配项 .................10
第 2 章 查询结果排序 .........12
2.1 以指定顺序返回查询结果 .................12
2.2 多字段排序 ....................13
2.3 依据子串排序 ...............14
2.4 对含有字母和数字的列排序 .............15
2.5 排序时对Null 值的处理 ...................17
2.6 依据条件逻辑动态调整排序项 .........23
第3 章 多表查询 ..................25
3.1 叠加两个行集 ...............25
3.2 合并相关行 ....................27
3.3 查找两个表中相同的行 .....................28
3.4 查找只存在于一个表中的数据 .........30
3.5 从一个表检索与另一个表不相关的行 .................33
3.6 新增连接查询而不影响其他连接查询 .................34
3.7 确定两个表是否有相同的数据 .........36
3.8 识别并消除笛卡儿积 ...42
3.9 组合使用连接查询与聚合函数 .........44
3.10 组合使用外连接查询与聚合函数 ...48
3.11 从多个表中返回缺失值 ...................51
3.12 在运算和比较中使用Null ..............54
第4 章 插入、更新和删除 ......................56
4.1 插入新记录 ....................57
4.2 插入默认值 ....................57
4.3 使用Null 覆盖默认值 .58
4.4 复制数据到另一个表 ...59
4.5 复制表定义 ....................59
4.6 多表插入 .......................60
4.7 禁止插入特定列 ...........62
4.8 更新记录 .......................63
4.9 当相关行存在时更新记录 .................64
4.10 使用另一个表的数据更新记录 .......64
4.11 合并记录 .....................67
4.12 删除全表记录 .............69
4.13 删除指定记录 .............69
4.14 删除单行记录 .............69
4.15 删除违反参照完整性的记录 ...........70
4.16 删除重复记录 .............70
4.17 删除被其他表参照的记录 ...............72
第5 章 元数据查询 .............74
5.1 列举模式中的表 ...........74
5.2 列举字段 .......................75
5.3 列举索引列 ....................76
5.4 列举约束 .......................77
5.5 列举非索引外键 ...........78
5.6 用SQL 生成SQL .........81
5.7 描述Oracle 数据字典视图 ................83
第6 章 字符串处理 .............85
6.1 遍历字符串 ....................85
6.2 嵌入引号 .......................87
6.3 统计字符出现的次数 ...88
6.4 删除不想要的字符 .......89
6.5 分离数字和字符数据 ...91
6.6 判断含有字母和数字的字符串 .........94
6.7 提取姓名的首字母 .......99
6.8 按照子字符串排序 .....102
6.9 根据字符串里的数字排序 ...............103
6.10 创建分隔列表 ...........109
6.11 分隔数据转换为多值IN 列表 .......114
6.12 按字母表顺序排列字符 .................119
6.13 识别字符串里的数字字符 .............124
6.14 提取第n 个分隔子字符串 .............130
6.15 解析IP 地址 .............136
第7 章 数值处理 ...............139
7.1 计算平均值 .................139
7.2 查找最小值和最大值 .141
7.3 求和 .......142
7.4 计算行数 .....................144
7.5 计算非Null 值的个数 .....................146
7.6 累计求和 .....................146
7.7 计算累计乘积 .............149
7.8 计算累计差 .................151
7.9 计算众数 .....................152
7.10 计算中位数 ...............155
7.11 计算百分比 ...............158
7.12 聚合Null 列 .............160
7.13 计算平均值时去掉最大值和最小值 .................161
7.14 将含有字母和数字的字符串转换为数字 .........163
7.15 修改累计值 ...............165
第8 章 日期运算 ................168
8.1 年月日加减法 .............168
8.2 计算两个日期之间的天数 ...............170
8.3 计算两个日期之间的工作日天数 ...172
8.4 计算两个日期之间相差的月份和年份 ...............176
8.5 计算两个日期之间相差的秒数、分钟数和小时数 .................178
8.6 统计一年中有多少个星期一 ...........180
8.7 计算当前记录和下一条记录之间的日期差 .......191
第9 章 日期处理 ................196
9.1 判断闰年 .....................196
9.2 计算一年有多少天 .....203
9.3 从给定日期值里提取年月日时分秒 ...................205
9.4 计算一个月的第 一天和最后一天 ...207
9.5 列出一年中所有的星期五 ...............209
9.6 找出当前月份的第 一个和最后一个星期一 .......216
9.7 生成日历 .....................222
9.8 列出一年中每个季度的开始日期和结束日期 ...239
9.9 计算一个季度的开始日期和结束日期 ...............243
9.10 填补缺失的日期 .......249
9.11 依据特定时间单位检索数据 .........258
9.12 比较特定的日期要素 .....................259
9.13 识别重叠的日期区间 .....................262
第 10 章 区间查询 .............268
10.1 定位连续的值区间 ...268
10.2 计算同一组或分区的行之间的差 .273
10.3 定位连续值区间的开始值和结束值 .................281
10.4 为值区间填充缺失值 .....................285
10.5 生成连续的数值 .......289
第 11 章 高级查询 .............293
11.1 结果集分页 ...............293
11.2 跳过n 行记录 ...........296
11.3 在外连接查询里使用OR 逻辑 .......298
11.4 识别互逆的记录 .......301
11.5 提取最靠前的n 行记录 .................302
11.6 找出最大和最小的记录 .................304
11.7 查询未来的行 ...........305
11.8 行值轮转 ....................308
11.9 对结果排序 ...............311
11.10 删除重复项 .............312
11.11 查找骑士值 .............314
11.12 生成简单的预测 .....321
第 12 章 报表和数据仓库 ......................329
12.1 变换结果集成一行 ...329
12.2 变换结果集成多行 ...331
12.3 反向变换结果集 .......339
12.4 反向变换结果集成一列 .................340
12.5 删除重复数据 ...........343
12.6 变换结果集以实现跨行计算 .........346
12.7 创建固定大小的数据桶 .................347
12.8 创建预定数目的桶 ...351
12.9 创建水平直方图 .......355
12.10 创建垂直直方图 .....357
12.11 返回非分组列 .........360
12.12 计算简单的小计 .....365
12.13 计算所有可能的表达式组合的小计 ...............368
12.14 识别非小计行 .........377
12.15 使用CASE 表达式标记行数据 .....379
12.16 创建稀疏矩阵 .........380
12.17 按照时间单位分组 .382
12.18 多维度聚合运算 .....385
12.19 动态区间聚合运算 .387
12.20 变换带有小计的结果集 ...............394
第 13 章 层次查询 .............398
13.1 展现父子关系 ...........399
13.2 展现祖孙关系 ...........402
13.3 创建层次视图 ...........407
13.4 找出给定的父节点对应的所有子节点 .............414
13.5 确认叶子节点、分支节点和根节点 .................418
第 14 章 杂项 ......................426
14.1 使用SQL Server 的PIVOT 操作符创建交叉报表 ..................426
14.2 使用SQL Server 的UNPIVOT 操作符逆向转换交叉报表 ......428
14.3 使用Oracle 的MODEL 子句变换结果集 .............430
14.4 从不固定位置提取字符串的元素 .433
14.5 计算一年有多少天 ...436
14.6 查找含有数字和字母的字符串 .....437
14.7 在Oracle 中把整数转换成二进制 ....................439
14.8 变换已排名的结果集 .....................442
14.9 为两次变换后的结果集增加列标题 .................445
14.10 在Oracle 中把标量子查询转换为复合子查询 ....................456
14.11 解析串行化的数据 .458
14.12 计算比重 .................462
14.13 从Oracle 中生成CSV 格式的输出 ................464
14.14 找出不匹配某个格式的文本 .......469
14.15 使用内嵌视图转换数据 ...............471
14.16 测试一组数据中是否存在某个值 ...................472
附录A 窗口函数简介1 .....476
附录B 重温Rozenshtein .....................500
^ 收 起
安东尼·莫利纳罗(Anthony Molinaro),专精SQL技术,擅长解决棘手的SQL问题,对关系理论有深入研究。
刘春辉,程序员, DBA。入行十余年,起先从事企业软件系统研发,后转入互联网行业做数据库运维,专注于数据密集型应用系统的数据库后端设计、实现、运维以及系统改善等工作。对于开源数据库以及中间件有强烈兴趣。
刘春辉,程序员, DBA。入行十余年,起先从事企业软件系统研发,后转入互联网行业做数据库运维,专注于数据密集型应用系统的数据库后端设计、实现、运维以及系统改善等工作。对于开源数据库以及中间件有强烈兴趣。
本书详细介绍了各种数据库的SQL查询技术和一些基础的SQL查询语句,并且通过实例操作的方式讲解了如何插入、更新和删除数据等相关知识。另外,本书还介绍了如何使用SQL语句进行日期处理,以及一些其他的SQL语句查询操作,能够帮助你掌握相关的SQL知识。
比价列表