具体描述
本书介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法,提供了大量的示例程序和详实的操作步骤说明,读者可以亲自动手解决具体问题,循序渐进地掌握SQL的基础知识和技巧,切实提高自身的编程能力。在每章结尾备有习题,用来检验读者对该章内容的理解程度。另外本书还将重要知识点总结为“法则”,方便大家随时查阅。
本书适合完全没有或者具备较少编程和系统开发经验的初学者,也可以作为大中专院校的教材及企业新人的培训用书。
作者简介
MICK
日本资深数据库工程师,致力于商业智能和数据仓库的开发。为日本著名的IT杂志WEB+PRESS撰写专栏。著作有《达人SQL完全指南》、《达人SQL设计终极指南》,译著有《SQL谜题》、《SQL权威指南》等。
译者简介:
孙淼
专业从事对日软件设计和研发工作,曾于2007年至2009年赴日学习工作。精通J2EE和数据库开发,热衷于品尝和制作美食。
罗勇
专业从事对日软件设计和研发工作,曾于2007年至2009年赴日学习工作。精通J2EE和数据库开发。译有《NoSQL数据库入门》、《明解C语言》等。
目录信息
前 言 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
· · · · · · (收起)
读后感
虽然这本书读完之后 觉得内容没有涵盖自己想学的(比如触发器、存储过程) 但是单纯从这本书来讲 可以说把sql基础讲的非常明了 然后课后题设计的非常好 并且给出了答案和精心的解释 应该说如果所有的教学书籍都做到这么好 那就太棒了 但是这种好书真的不可多得 建议新手们仔细...
整本书安排很好,一点点的循序渐进,很通俗易懂,内容对新手很友好,跟着实际操作会很有收获,但是唯一让我很恼火的就是作者的日语音译命名,hanbai_tanka 这名称谁能知道是销售单价的意思,变量命名为selling_price 或者简单点直接 price 很难吗,每次读到这些变量就要连蒙带...
虽然这本书读完之后 觉得内容没有涵盖自己想学的(比如触发器、存储过程) 但是单纯从这本书来讲 可以说把sql基础讲的非常明了 然后课后题设计的非常好 并且给出了答案和精心的解释 应该说如果所有的教学书籍都做到这么好 那就太棒了 但是这种好书真的不可多得 建议新手们仔细...
虽然这本书读完之后 觉得内容没有涵盖自己想学的(比如触发器、存储过程) 但是单纯从这本书来讲 可以说把sql基础讲的非常明了 然后课后题设计的非常好 并且给出了答案和精心的解释 应该说如果所有的教学书籍都做到这么好 那就太棒了 但是这种好书真的不可多得 建议新手们仔细...
用户评价
我非常喜欢作者在讲解UNION和UNION ALL时的区分。很多教程可能只是简单地介绍两者的区别,但这本书则通过一个具体的例子,展示了当数据存在重复时,两者查询结果的不同,以及在实际应用中应该如何选择。这种细致的入微的讲解,让我对这两个看似相似的关键字有了更深刻的理解,也避免了在未来的实践中可能出现的混淆。
作为一名对数据库完全陌生的初学者,我最担心的就是技术术语的晦涩难懂。然而,这本书在这一点上做得非常出色。作者在介绍每一个概念时,都辅以生活中的类比,比如将数据库比作一个巨大的图书馆,将表比作书架,将行比作书籍,将列比作书的分类。这种生动形象的比喻,让我能够快速地理解那些抽象的概念,并且在脑海中建立起清晰的图像。即使是像“索引”这样听起来有些技术性的词汇,作者也通过“字典的目录”来解释其原理,让我一下子就明白了它为什么重要以及如何提升查询效率。
我特别欣赏这本书在练习题设置上的用心。每讲完一个知识点,都会有相应的练习题。这些练习题的难度循序渐进,从最基础的SELECT语句,到复杂的JOIN和子查询,都涵盖了。而且,有些题目还会引导你思考,比如“如果数据库中有大量数据,你会如何优化这个查询?”这类问题,不仅仅是考察你是否掌握了语法,更是培养你解决实际问题的能力。而且,大部分练习题都提供了详细的答案和解析,这对于我这种喜欢对照答案来学习的人来说,简直是福音。
在学习JOIN的部分,作者不仅讲解了INNER JOIN,还详细介绍了LEFT JOIN、RIGHT JOIN和FULL OUTER JOIN,并且通过不同的示例清晰地展示了它们之间的差异。我特别喜欢作者用 venn 图来解释 JOIN 的原理,这种图形化的方式,让我在脑海中形成了一个非常直观的认识,也让我能够迅速区分不同 JOIN 类型的应用场景。
这本书的“数据可视化”部分给我留下了深刻的印象。作者并没有直接提供复杂的图表生成代码,而是先普及了数据可视化的基本概念和重要性,然后再逐步引导读者理解如何通过SQL语句来提取和整理数据,以便于后续的可视化分析。这种“先打好基础,再进行应用”的思路,让我觉得非常扎实。
这本书还有一个非常大的优点,就是它不仅仅停留在SQL语法的层面。作者会时不时地穿插一些关于数据库设计原则和最佳实践的讨论。比如,在讲解如何创建表时,会强调命名规范的重要性,以及如何选择合适的数据类型。在讲解索引时,也会提醒读者不要滥用索引,以免适得其反。这些看似“额外”的内容,实则对于建立一个良好的数据库基础至关重要,也让我意识到,学习SQL不仅仅是掌握命令,更是要理解背后的原理。
总的来说,这本书为我打开了SQL世界的大门,让我从一个对数据库一无所知的小白,变成了一个能够自信地进行数据查询和初步分析的学习者。它的优点不胜枚举,无论是清晰的讲解、生动的类比,还是实用的练习题和对最佳实践的强调,都让我觉得物超所值。这本书的价值,远不止于教授SQL语法,它更在于培养了一种对数据思维的理解和运用能力。
在学习过程中,我发现这本书的作者非常注重逻辑性和连贯性。知识点的引入不是突兀的,而是层层递进的。例如,在讲解JOIN操作之前,必然会先让你理解什么是表之间的关联,以及为什么要进行关联。这种循序渐进的学习方式,让我在学习的过程中感到自信,而不是被海量的信息淹没。作者也花了相当大的篇幅来解释一些常见的误区,并且给出如何避免这些误区的建议,这对于我这种容易犯错的新手来说,简直是及时雨。
这本书的排版设计也值得称赞。代码块的颜色区分非常明显,关键的SQL语句关键字也用不同的颜色高亮显示,这使得阅读代码的过程变得轻松愉快,也更容易注意到语句的结构和组成。段落之间的留白也很恰当,不会显得过于拥挤,让眼睛能够得到充分的休息。更重要的是,作者在讲解每一个SQL语句的用法时,都会提供一个具体的应用场景,并且会列出完整的示例代码。这不仅仅是简单的“是什么”,更是“为什么用”和“怎么用”的全面解析。
拿到这本书,我首先被它朴实无华的外表吸引了,没有花里胡哨的封面设计,也没有故弄玄虚的标题。这让我觉得它更像一位循循善诱的良师,而非浮夸的网红。翻开第一页,扑面而来的就是清晰的目录和一封言辞恳切的序言,作者用真诚的语言阐述了他编写这本书的初衷,以及他希望这本书能为读者带来的价值。我尤其喜欢序言中提到“授人以鱼不如授人以渔”的理念,这让我对接下来的学习充满了期待。
兼具日本人的细致和日本人的啰嗦。
由于教材的实在太枯燥,所以去图书馆借了这本sql基础教程,作者讲的蛮细致的,就是列名什么的都是有点不习惯。
m一个,最后一章没仔细看
PostgreSQL(Post GRE lol),全書大部分基於一張表講數據庫操作,用來入門極好。20160110
对不好理解的地方都不厌其烦地说明了理由,或者理解的思路,非常好!