编辑推荐
适读人群 :本书适合数据库和SQL语言的初学者阅读,也可作为大中专院校的教材及企业新人培训用书。 zi深数据库工程师写给初学者的实用指南!
107张图表+209段代码+88个法则,菜鸟进阶bi备!
基于标准SQL编写,明示各RDBMS(PostgreSQL DB2 MySQL Oracle SQL Server)的差异!
1.畅销书全新升级,内容更新更全面!
第1版豆瓣评分8.8分,重印13次,好评如潮。第2版基于新版本RDBMS全面升级,并新增一章介绍从应用程序执行SQL语句的方法。
2.由浅入深,结构清晰,真正适合初学者!
从数据库、表的结构到查询、更新表的语法,常用的函数,表的联结等,内容逐步深入。对于初学者常见的疑难点,均通过专栏进行讲解。各章节后精心设计了练习题,帮助读者巩固理解。
3.双色印刷,排版独特,让你读起来不累!
双色印刷赏心悦目,“学习重点”“KEYWORD”“备忘”“法则”“专栏”等各种小模块帮你梳理知识点,让学习过程事半功倍。
内容简介
本书是畅销书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。第2版除了将示例程序更新为对应*新的DB的SQL之外,还新增了一章,介绍如何从应用程序执行SQL。
作者简介
MICK(作者)
日本zi深数据库工程师,就职于SI企业,致力于商业智能和数据仓库的开发。为CodeZine(http: codezine.jp)及IT杂志WEB+DB PRESS撰写技术文章。著作有《跟达人学SQL》《跟达人学DB设计》,是Joe Celko's SQL Puzzles and Answers,Second Edition、Joe Celko's SQL for Smarties,Fourth Edition: Advanced SQL Programming的日文版的译者。
孙淼(译者)
从事对日软件设计和研发工作十余年,曾于2007年至2009年赴日学习工作,2015年至今再次长期赴日工作。精通应用Java、PHP进行Web框架的设计开发,并且有Oracle、Teradata、MySQL、NoSQL等多种数据库的设计开发经验。乐于品味生活细微的点滴,热衷于品尝和制作美食。译有《SQL基础教程》等。
罗勇(译者)
从事对日软件设计和研发工作十余年,曾多次赴日学习工作,目前就职于日本某大型企业。痴迷于技术和框架的研究,多次参与项目的需求分析、概要设计,精通多语言的Web框架和数据库的设计开发。业余爱好足球,和家人旅行。译有《SQL基础教程》《NoSQL数据库入门》《明解C语言》等。
目录
第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基础教程 第2版 书名:SQL基础教程 第2版 内容简介: 在数据日益成为核心资产的今天,掌握结构化查询语言(SQL)已不再是专业数据库管理员或开发人员的专属技能,而是跨越各行各业、从初学者到资深从业者必备的核心竞争力。本书《SQL基础教程 第2版》正是为希望系统、深入地理解并熟练运用SQL语言的读者量身打造的权威指南。本书以循序渐进、注重实战的教学理念,从SQL最基础的概念出发,逐步深入到高级主题,旨在帮助读者建立起坚实的SQL知识体系,并能独立解决实际数据管理和分析问题。 本书亮点概览: 体系化教学,从零开始: 无论您是完全没有接触过数据库和SQL的初学者,还是有过零散接触但希望系统梳理知识的进阶者,本书都将为您提供清晰的学习路径。我们从最核心的数据库概念、SQL的起源与发展讲起,逐步引导您理解数据模型、表结构、数据类型等基础构建块。 核心概念的深入解析: 本书将详细阐述SQL语言的核心组成部分,包括数据定义语言(DDL)、数据操作语言(DML)、数据控制语言(DCL)和事务控制语言(TCL)。您将深入理解如何使用CREATE、ALTER、DROP等语句来创建、修改和删除数据库对象;掌握SELECT、INSERT、UPDATE、DELETE等语句进行数据的查询、添加、修改和删除。 强大的数据查询能力: SELECT语句是SQL的灵魂。本书将花费大量篇幅,系统讲解SELECT语句的各种强大功能,包括基本的列选择、WHERE子句的条件过滤、ORDER BY子句的数据排序、LIMIT/OFFSET(或TOP/FETCH FIRST)进行分页查询。 多表关联的精髓: 现实世界的数据往往分散在多个表中,如何将这些关联的数据有效地整合起来是SQL应用的重中之重。本书将详细讲解JOIN操作,涵盖INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN以及CROSS JOIN,并配以丰富的示例,帮助您理解不同JOIN类型的工作原理及其适用场景,确保您能准确无误地从关联表中提取所需信息。 聚合与分组的艺术: 数据分析离不开对大量数据的汇总和统计。本书将深入讲解聚合函数(如COUNT, SUM, AVG, MIN, MAX)以及GROUP BY子句和HAVING子句。您将学会如何对数据进行分组,计算每组的统计指标,并根据特定条件过滤分组结果,从而揭示数据中的规律和洞察。 子查询与高级查询技巧: 为了处理更复杂的数据需求,本书将引导您掌握子查询(Subqueries)的应用,包括在SELECT列表、FROM子句、WHERE子句中使用子查询,以及与IN、EXISTS、ANY、ALL等操作符的配合使用。此外,还将介绍一些高级查询技巧,如窗口函数(Window Functions),它们在数据分析和报表生成中扮演着越来越重要的角色,能够执行复杂的排名、累积计算等操作。 数据完整性与约束: 确保数据的准确性和一致性是数据库设计的基石。本书将详细讲解各种约束,如PRIMARY KEY(主键)、FOREIGN KEY(外键)、UNIQUE(唯一约束)、NOT NULL(非空约束)和CHECK(检查约束),并阐述它们在维护数据完整性方面的作用。 视图(Views)与索引(Indexes): 视图可以简化复杂的查询,提供数据的逻辑视图,而索引是提高查询性能的关键。本书将详细介绍如何创建和使用视图,以及理解不同类型的索引(如B-tree索引、哈希索引)及其工作原理,帮助您优化数据库性能。 事务管理与并发控制: 在多用户访问的环境下,保证数据的一致性至关重要。本书将深入讲解事务(Transactions)的概念,ACID特性(原子性、一致性、隔离性、持久性),以及如何使用BEGIN TRANSACTION、COMMIT、ROLLBACK等语句来管理事务。同时,也会触及并发控制的基础知识,帮助您理解不同隔离级别对数据访问的影响。 SQL函数宝库: SQL提供了丰富的内置函数,用于字符串处理、日期时间计算、数值运算、类型转换等。本书将系统介绍常用的字符串函数(如SUBSTRING, CONCAT, LENGTH)、日期函数(如NOW, DATE_FORMAT, DATEDIFF)、数学函数(如ROUND, CEIL, FLOOR)等,并提供实用的应用示例,让您能灵活运用这些函数解决实际问题。 实战导向,案例丰富: 本书最大的特色在于其高度的实战性。每一项SQL概念和功能都配有清晰、易懂的代码示例,并结合实际业务场景进行讲解,让您能够直接上手实践。本书包含大量精选的练习题和项目案例,覆盖从简单的数据查询到复杂的数据分析,帮助读者在实践中巩固所学知识,提升解决实际问题的能力。 跨数据库平台的通用性: SQL是一种标准语言,但不同数据库管理系统(DBMS)在语法细节上可能存在差异。本书在介绍SQL标准的同时,也会结合主流的数据库系统(如MySQL, PostgreSQL, SQL Server, Oracle)的常见用法和特性进行说明,确保读者掌握的知识具有广泛的适用性。 附录与扩展: 为了方便读者查阅和进一步学习,本书提供了SQL常用命令速查表、常见的SQL错误及解决方法等实用附录,并推荐了进一步学习的资源和方向。 本书适合读者: 计算机科学与技术、软件工程、信息管理等相关专业的学生: 系统学习数据库理论和SQL语言的必备教材。 软件开发人员: 无论前端、后端还是全栈工程师,熟练掌握SQL都是不可或缺的基本功。 数据分析师、商业智能(BI)从业者: SQL是进行数据提取、清洗、转换和初步分析的核心工具。 数据库管理员(DBA): 巩固和深化SQL理论,提升数据库管理和优化能力。 对数据管理和分析感兴趣的初学者: 希望从零开始,系统学习一项有价值的技能。 希望提升工作效率的各行业专业人士: 如市场营销、财务、运营等,能够利用SQL进行自助式数据查询和分析。 《SQL基础教程 第2版》不仅仅是一本技术书籍,更是您打开数据世界大门、解锁数据价值的钥匙。通过本书的学习,您将能够自信地与数据库对话,高效地管理和分析数据,为您的学习和工作带来质的飞跃。我们相信,掌握SQL,您将能够在快速发展的数据时代中,拥有更强的竞争力。