SQL编程思想:基于5种主流数据库代码实现pdf下载pdf下载

SQL编程思想:基于5种主流数据库代码实现百度网盘pdf下载

作者:
简介:本篇主要提供SQL编程思想:基于5种主流数据库代码实现pdf下载
出版社:电子工业出版社
出版时间:2021-10
pdf下载价格:9.00¥


预览


内容介绍

产品特色

编辑推荐

★ 采用全新SQL:2019标准,紧跟产业发展趋势,解锁Z前沿SQL特性

★ 让你了解并学习现代化的SQL语言和编程思想,而不仅仅局限于功能

★ 作者在数据库领域深耕十余年,拥有丰富的数据库理论知识和实践经验

★ 全覆盖从SQL基础查询到高级分析、从数据库设计到查询优化等内容

★ 用循序渐进的方式和简单易懂的案例分析,透彻讲解每个SQL知识点

★ 提供了5种主流数据库的代码实现,包括:

MySQL 8.0

Oracle Database 21c

Microsoft SQL Server 2019

PostgreSQL 14

SQLite 3.36


内容简介


本书基于作者十多年的工作经验和知识分享,全面覆盖了从SQL基础查询到高级分析、从数据库设计到查询优化等内容,通过循序渐进的方式和简单易懂的案例分析,透彻讲解了每个SQL知识点。本书采用了全新的SQL:2019标准,紧跟产业发展趋势,帮助读者解锁最前沿的SQL技能,同时提供了5种主流数据库的实现和差异。最后,本书还介绍了全新的SQL:2019标准对文档存储(JSON)、行模式识别(MATCH_RECOGNIZE)、多维数组(SQL/MDA)以及图形存储(SQL/PGQ)的支持。

本书适合需要在日常工作中完成数据处理的IT从业人员,包括SQL初学者、拥有一定基础的中高级工程师,甚至精通某种数据库产品的专家阅读。


作者简介

董旭阳

数据库架构师、CSDN博客专家,毕业于北京航空航天大学,拥有十多年数据库管理与开发经验,专注于数据库领域的知识分享,荣获Oracle OCP和Redhat RHCE证书。

目前在一家全球性的金融公司从事数据库架构设计工作。


精彩书评

董旭阳是数据库方面的专家,擅长SQL数据分析,在日常工作中指导、参与过数据库的设计、建立和运营工作。本书从实用性出发,由浅入深地介绍了SQL,适合IT工作者和对数据库、数据分析感兴趣的人员阅读,且对读者入门SQL语言尤有助益。相信通过阅读本书,读者能够更好地掌握并在实际工作中运用SQL编程。

——廖瑜 标普信用评级(中国)有限公司CIO/CTO

董老师在数据库领域深耕十余年,拥有丰富的数据库理论知识和实践经验。本书从比较简单的查询语句到相对复杂的通用表表达式和窗口函数等,由浅入深、条理清晰地讲述了当代软件工程及数据分析中常用的SQL知识,具有相当强的实用性。本书不仅仅是面向技术人员的佳作,非技术人员也能从中受益良多。

——曹豹 字节跳动资深平台开发工程师

我从事数据库相关工作已有十余年时间,其间接触过各种各样的数据库,经常遇到数据库语法差异的问题,甚是头疼。随着数据库的国产化,尤其是PostgreSQL的崛起,从传统商用数据库迁移到国产或开源数据库已是时代的趋势,了解不同数据库的具体SQL实现将十分必要。本书基于SQL:2019全新标准,全面介绍了SQL语言,并提供了5种主流数据库的SQL实例,分享了作者丰富的实战经验,对广大读者的实际工作具有切实的帮助。

——李振中 去哪儿网高级DBA

软件研发如火如荼,而几乎所有的软件研发都不可避免地涉及数据库。当前市面上关于SQL的图书多数还是从理论方面着手的,将数据库设计、管理等内容事无巨细地介绍了一遍,而对于SQL自身的知识点介绍得较少,但这正是很多一线软件工程师所必需且欠缺的部分。本书弥补了这一不足。一方面,本书覆盖了多种常用数据库;另一方面,本书的SQL知识点丰富,从通用性及专用深度来说,都可以作为一本典型的入门图书来学习。掌握SQL语言也可以作为入门大数据分析的技能之一。

——糜利敏 百度前资深研发工程师,作业帮大数据架构师

一切皆数据,随着近年来大数据理论、技术、配套设施引擎的逐步成熟和飞速发展,各行各业都开始了数字化转型的进程,以提高企业生产、营销等各个层面的效率和精准程度。由董旭阳老师撰写的本书由理论和实战相结合,深入浅出地讲解了SQL语言的编程思想,可以帮助大家学习、了解现代化SQL的应用场景和设计思想;同时,这些内容不仅仅局限于单一的数据库引擎。

——王书兴 京东大数据系统架构师

随着DT时代的到来,各行各业都在探索数字经济和数字化转型,如何让数据助力数字化建设并产生实际的价值,是一个需要大家努力探索和实践的课题。目前大部分企业的结构化数据还存储于关系型数据库,如何高效使用SQL进行数据分析,是数据人员和开发人员必须掌握的技能。本书作者董旭阳是我多年前的同事,他对数据库管理及SQL编写具有很深的造诣。相信本书能给读者带来有益的启发,并在SQL编程思维层面得到提升。

——王洪杰 中科金审(北京)科技有限公司副总裁


目录

第1章 一切皆关系

1.1 数据库

1.1.1 数据库的发展历史

1.1.2 数据库管理系统

1.2 关系型数据库

1.2.1 数据结构

1.2.2 关系操作

1.2.3 完整性约束

1.3 SQL简介

1.3.1 SQL的历史

1.3.2 语法特性

1.3.3 面向集合

1.3.4 标准与实现

1.4 小结

第2章 查询初体验

2.1 基本检索功能

2.1.1 查询指定字段

2.1.2 查询全部字段

2.1.3 快速查询信息

2.2 实现数据过滤

2.2.1 简单过滤条件

2.2.2 空值判断条件

2.2.3 文本模糊查找

2.2.4 组合过滤条件

2.2.5 排除重复数据

2.3 从无序到有序

2.3.1 基于单个字段排序

2.3.2 基于多个字段排序

2.3.3 基于表达式排序

2.3.4 空值的排序位置

2.3.5 中文的排序方式

2.4 限定结果数量

2.4.1 Top-N排行榜

2.4.2 数据分页显示

2.5 SQL注释

2.5.1 单行注释

2.5.2 多行注释

2.5.3 特殊注释

2.6 小结

第3章 逻辑处理功能

3.1 函数和运算

3.1.1 函数概述

3.1.2 数值函数

3.1.3 字符函数

3.1.4 日期函数

3.1.5 转换函数

3.1.6 案例分析

3.2 使用别名

3.2.1 列别名

3.2.2 表别名

3.3 条件表达式

3.3.1 简单CASE表达式

3.3.2 搜索CASE表达式

3.3.3 DECODE函数

3.3.4 IF函数

3.3.5 IIF函数

3.3.6 案例分析

3.4 小结

第4章 数据分组与汇总

4.1 数据汇总

4.1.1 聚合函数

4.1.2 使用COUNT函数统计行数

4.1.3 使用AVG函数计算平均值

4.1.4 使用SUM函数计算总和

4.1.5 使用MAX函数返回最大值

4.1.6 使用MIN函数返回最小值

4.1.7 使用LISTAGG函数连接字符串

4.2 数据分组

4.2.1 创建数据分组

4.2.2 进行组内汇总

4.2.3 空值分为一组

4.2.4 常见的语法问题

4.3 再次过滤数据

4.3.1 使用HAVING过滤分组结果

4.3.2 WHERE与HAVING的区别

4.4 多维数据分析

4.4.1 小计、合计与总计

4.4.2 交叉统计报表

4.4.3 自定义维度统计

4.4.4 GROUPING函数

4.5 案例分析

4.5.1 案例一:实现行列转换

4.5.2 案例二:销售数据分析

4.6 小结

第5章 空值问题

5.1 三值逻辑

5.2 空值的比较

5.3 空值的分组

5.4 空值的排序

5.5 函数中的空值

5.6 空值处理函数

5.7 空值与约束

5.8 案例分析

5.9 小结

第6章 连接多个表

6.1 连接的语法与类型

6.1.1 使用FROM和WHERE连接两个表

6.1.2 使用JOIN和ON连接两个表

6.1.3 连接查询的类型

6.2 内连接

6.2.1 等值连接

6.2.2 非等值连接

6.3 外连接

6.3.1 左外连接

6.3.2 右外连接

6.3.3 全外连接

6.4 交叉连接

6.5 自然连接

6.6 自连接

6.7 连接多个表

6.8 案例分析

6.8.1 案例一:生成数字序列

6.8.2 案例二:员工考勤记录

6.9 小结

第7章 嵌套子查询

7.1 查询中的查询

7.2 标量子查询

7.3 行子查询

7.4 表子查询

7.4.1 WHERE条件中的子查询

7.4.2 ALL、ANY运算符

7.4.3 FROM子句中的子查询

7.5 关联子查询

7.6 横向子查询

7.7 EXISTS运算符

7.8 案例分析

7.8.1 案例一:月度销售冠军

7.8.2 案例二:销售增长之星

7.9 小结

第8章 表的集合运算

8.1 集合运算

8.2 交集求同

8.3 并集存异

8.4 差集排他

8.5 集合运算与排序

8.6 运算符的优先级

8.7 案例分析

8.7.1 案例一:优秀员工分析

8.7.2 案例二:用户权限管理

8.8 小结

第9章 通用表表达式

9.1 表即变量

9.2 强大的递归

9.2.1 递归查询语法

9.2.2 生成数字序列

9.2.3 遍历层次结构

9.2.4 递归的终止

9.3 案例分析:社交网络关系

9.3.1 数据结构

9.3.2 好友关系分析

9.3.3 粉丝关系分析

9.4 小结

第10章 窗口函数

10.1 窗口函数定义

10.1.1 创建数据分区

10.1.2 分区内的排序

10.1.3 指定窗口大小

10.1.4 窗口函数分类

10.2 聚合窗口函数

10.2.1 案例分析:移动平均值

10.2.2 案例分析:累计求和

10.3 排名窗口函数

10.3.1 案例分析:分类排名

10.3.2 案例分析:累积分布

10.4 取值窗口函数

10.4.1 案例分析:环比、同比分析

10.4.2 案例分析:复合增长率

10.5 小结

第11章 数据的增删改合

11.1 插入数据

11.1.1 插入单行记录

11.1.2 插入多行记录

11.1.3 复制数据

11.2 更新数据

11.2.1 单表更新

11.2.2 关联更新

11.3 删除数据

11.3.1 单表删除

11.3.2 关联删除

11.3.3 快速删除全表数据

11.4 合并数据

11.4.1 标准合并语句

11.4.2 非标准合并语句

11.5 外键约束与级联操作

11.5.1 违反外键约束

11.5.2 级联更新和删除

11.6 小结

第12章 数据库事务

12.1 什么是数据库事务

12.2 事务的ACID属性

12.3 事务控制语句

12.3.1 开始事务

12.3.2 提交事务

12.3.3 撤销事务

12.3.4 事务保存点

12.4 并发事务与隔离级别

12.4.1 并发问题

12.4.2 隔离级别

12.5 案例分析

12.6 小结

第13章 数据库设计与实现

13.1 实体关系图

13.1.1 实体

13.1.2 属性

13.1.3 关系

13.1.4 ERD建模

13.2 规范化设计

13.2.1 数据异常

13.2.2 第一范式

13.2.3 第二范式

13.2.4 第三范式

13.2.5 主键与外键

13.2.6 反规范化

13.3 数据类型

13.3.1 数字类型

13.3.2 字符串类型

13.3.3 日期时间类型

13.3.4 二进制类型

13.3.5 选择合适的数据类型

13.4 管理数据库对象

13.4.1 常见对象

13.4.2 管理数据库

13.4.3 管理模式

13.4.4 管理数据表

13.5 小结

第14章 索引与性能优化

14.1 索引的原理

14.1.1 聚集索引

14.1.2 非聚集索引

14.2 索引的类型

14.2.1 唯一索引与非唯一索引

14.2.2 单列索引与多列索引

14.2.3 升序索引与降序索引

14.2.4 函数索引

14.3 索引的维护

14.3.1 创建索引

14.3.2 查看索引

14.3.3 删除索引

14.3.4 注意事项

14.4 执行计划

14.4.1 查询语句的执行过程

14.4.2 查看SQL语句的执行计划

14.5 查询优化技巧

14.5.1 创建合适的索引

14.5.2 避免索引失效

14.5.3 只返回需要的结果

14.5.4 优化多表连接

14.5.5 尽量避免使用子查询

14.5.6 优化集合操作

14.5.7 不要使用OFFSET实现分页

14.5.8 记住SQL子句的逻辑执行顺序

14.6 小结

第15章 视图不是表

15.1 视图概述

15.1.1 什么是视图

15.1.2 视图的优缺点

15.2 管理视图

15.2.1 创建视图

15.2.2 视图中的ORDER BY子句

15.2.3 修改视图的定义

15.2.4 删除视图

15.3 可更新视图

15.3.1 可更新视图的限制

15.3.2 通过视图修改数据

15.3.3 限制视图的操作

15.4 案例分析

15.5 小结

第16章 存储过程和存储函数

16.1 存储过程概述

16.1.1 什么是存储过程

16.1.2 存储过程的优缺点

16.2 管理存储过程

16.2.1 创建存储过程

16.2.2 执行存储过程

16.2.3 修改存储过程

16.2.4 删除存储过程

16.3 使用存储函数

16.3.1 存储函数和存储过程的区别

16.3.2 创建存储函数

16.3.3 调用存储函数

16.3.4 修改存储函数

16.3.5 删除存储函数

16.4 案例分析

16.5 小结

第17章 一触即发的触发器

17.1 触发器概述

17.1.1 触发器的原理

17.1.2 触发器的分类

17.2 管理触发器

17.2.1 创建触发器

17.2.2 验证触发器

17.2.3 查看触发器

17.2.4 启用、禁用触发器

17.2.5 删除触发器

17.3 案例分析

17.3.1 案例一:禁止DDL操作

17.3.2 案例二:替换视图的DML操作

17.4 小结

第18章 超越关系

18.1 文档存储

18.1.1 JSON数据类型

18.1.2 将JSON对象表示成SQL数据

18.1.3 将SQL数据表示成JSON对象

18.2 复杂事件

18.2.1 行模式识别

18.2.2 分析股票曲线图

18.2.3 监控可疑的银行转账

18.3 多维数组

18.3.1 数组的存储和访问

18.3.2 数组处理函数

18.4 图形存储

18.4.1 图形查询语言与SQL/PGQ

18.4.2 社交网络关系分析

18.5 小结

附录A SQL常用语句速查表


前言/序言

数据库,尤其是关系型数据库,是现代企业存储和处理数据的主要方式。目前主流的关系型数据库包括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技能和编程思维的提升。


致谢

感谢电子工业出版社给予我写作本书的机会,尤其是董英编辑,正是她的热情推荐才让我下定决心完成本书,同时也让我实现了写一本书的愿望。在本书的审稿和修订过程中,文字编辑李云静的认真负责令人印象深刻,在此一并致谢。

感谢我的家人,他们在本书撰写之际给予了我很多鼓励。

由于本人水平有限,书中难免有不足或遗漏之处,欢迎广大读者批评、指正。