前言
数据库,尤其是关系型数据库,是现代企业存储和处理数据的主要方式。目前主流的关系型数据库包括MySQL、Oracle、Microsoft SQL Server、PostgreSQL以及SQLite等。虽然这些数据库系统的具体实现有所不同,但它们都使用SQL作为访问和操作数据库的标准语言。
SQL(Structured Query Language,结构化查询语言)作为访问和操作关系型数据库的标准语言,不但应用广泛,而且简单易学。掌握SQL已经成为IT行业和数据分析从业者必不可少的技能之一。在设计之初,SQL就考虑了非技术人员的使用需求,因此SQL语句均由简单的英语单词组成,主要的SQL语句只有几个,很多时候甚至只需使用一个SELECT语句。
也许正是由于它的简单易用,以致很多人都认为SQL只有简单的增删改查(CRUD)功能。但实际上,早在1999年SQL就支持了通用表表达式(WITH语句)和递归查询、用户定义类型以及许多在线分析功能。随后它又增加了窗口函数、MERGE语句、XML数据类型、JSON文档存储、复杂事件和流数据处理以及多维数组等功能。最新的SQL标准正在定制与图形存储相关的功能。
虽然SQL是基于关系模型开发的语言,但是在经过几十年的发展之后,它早就不再局限于关系模型了。我编写本书的目的就在于,希望能够帮助大家了解并学习现代化的SQL语言和编程思想,而不仅仅局限于掌握传统SQL所提供的简单功能。
本书内容
本书共18章以及1个附录。
第1章简单回顾了数据库和关系型数据库的基本概念、什么是SQL以及它的主要特性和设计思想。
第2章介绍了SELECT语句的基本检索、数据过滤、排序显示以及限定查询结果数量等,同时还讨论了SQL语句中的代码注释方法。
第3章介绍了如何通过SQL函数进行数据处理,如何利用条件表达式(CASE)实现逻辑处理功能。
第4章介绍了如何利用SQL中的聚合函数对数据进行汇总。SQL聚合函数通常和分组操作(GROUP BY)一起使用,因此我们还介绍了数据的分组汇总以及汇总后的数据过滤。
第5章介绍了数据库中的空值(NULL)问题及其解决方法。
第6章介绍了如何使用连接查询(JOIN)获取多个表中的关联数据,包括两种SQL连接语法以及内连接、左/右/全外连接、交叉连接、自然连接和自连接等类型。
第7章介绍了各种类型的子查询以及相关的运算符。
第8章介绍了如何使用SQL集合运算符,将两个或多个查询结果集组合成一个结果集。
第9章介绍了如何利用通用表表达式(Common Table Expression)简化复杂的子查询和连接查询,实现树状结构数据的遍历,提高SQL语句的可读性和性能。
第10章介绍了SQL窗口函数的定义和参数选项,以及各类窗口函数的作用。
第11章介绍了数据操作语言(DML),包括数据的插入(INSERT)、更新(UPDATE)、删除(DELETE)以及合并(MERGE)。
第12章介绍了数据库中事务的概念、事务控制语句以及并发事务的隔离问题。
第13章介绍了数据库设计过程中的常用技术,同时还介绍了如何为表中的字段选择合适的数据类型,以及数据库常见对象(数据库、模式和数据表)的管理。
第14章介绍了索引的原理,讲解了如何通过执行计划查看SQL语句的执行过程,以及常用的查询优化技巧。
第15章介绍了另一个重要的数据库对象:视图(View)。
第16章介绍了数据库存储过程(Stored Procedure)和存储函数(Stored Function)的基本概念。
第17章介绍了一种特殊的存储过程/函数:触发器(Trigger)。
第18章介绍了SQL标准的一些最新发展趋势,包括文档存储(JSON)、行模式识别(MATCH_RECOGNIZE)、多维数组(SQL/MDA)以及图形存储(SQL/PGQ)。
附录A列举了常用SQL语句的语法说明和对应的章节,方便读者快速查看相关内容。
本书中涉及的一些示例表和初始化数据,读者可通过“读者服务”获取,使用说明可以参考相关目录中的README.txt文件。
本书特点
本书主要有两个特点:新和全。首先,本书基于最新的SQL:2019标准,紧跟产业发展的趋势,可帮助读者解锁最前沿的SQL技能。其次,本书全面覆盖了从SQL基础查询到高级分析、从数据库设计到查询优化等知识点,并且提供了5种主流数据库的代码实现,包括:
● MySQL 8.0
● Oracle Database 21c
● Microsoft SQL Server 2019
● PostgreSQL 14
● SQLite 3.36
由于SQL语言的通用性,本书内容大多数情况下也适用于其他数据库系统。
读者对象
数据库工程师或DBA、数据分析师或数据科学家、开发人员或测试人员、产品经理或运营人员、SQL爱好者或希望了解不同数据库实现的专家,都可以通过本书获得SQL技能和编程思维的提升。
致谢
感谢电子工业出版社给予我写作本书的机会,尤其是董英编辑,正是她的热情推荐才让我下定决心完成本书,同时也让我实现了写一本书的愿望。在本书的审稿和修订过程中,文字编辑李云静的认真负责令人印象深刻,在此一并致谢。
感谢我的家人,他们在本书撰写之际给予了我很多鼓励。
由于本人水平有限,书中难免有不足或遗漏之处,欢迎广大读者批评、指正。
读者服务
微信扫码回复:42140
● 免费获取本书配套脚本和相关视频
● 加入本书读者交流群,与作者互动
● 获取【百场业界大咖直播合集】(持续更新),仅需1元