SQL 基础教程(第2版)

SQL 基础教程(第2版)

ゼロからはじめるデータベース操作
✍️ 作者
日/MICK
📅 出版日期
2017-6-01
🌐 语言
zh-Hans
📄 页数
336页
🔢 ISBN
9787115455024
📚 分类
T工业技术/TP自动化技术、计算机技术/TP311.138
⭐ 评分
9.1 ★★★★☆

前言

本书面向完全没有编程和系统开发经验的初学者,介绍了关系数据库以及用来操作关系数据库的 SQL 语言的使用方法。各个章节结合具体示例进行解说,并在每章的结尾安排了习题,用来检验读者对该章内容的理解程度。大家可以从第 1 章开始,亲自验证示例程序,循序渐进地掌握 SQL 的基础知识和技巧。另外,本书还将重要知识点总结为法则,方便读者在学习完本书之后随时查阅。

近年来,和其他系统领域一样,数据库领域也实现了飞速发展,应用范围不断扩大,不但出现了具有新功能的数据库,而且操作的数据量也大幅增长。

本书将要介绍的关系数据库是时下最流行的数据库,也是理解其他数据库的基础。在系统领域,通常所讲的数据库指的就是关系数据库,其重要性可见一斑。

估计很多读者今后都会慢慢积累各个领域、各种规模的系统开发经验(或者可能已经开始从事开发方面的工作了),到那时,所有的系统必定都需要使用数据库。它们使用的数据库,即便不是关系数据库,也一定是以关系数据库为基础的数据库。从这个意义上看,如果掌握了关系数据库和 SQL,就能成为任何系统开发都需要的数据库专家了。

现在距离本书初版问世已经 6 年了,在这 6 年间,数据库发挥了越来越重要的作用。以前就有专家使用数据库进行统计分析,后来数据库也开始逐渐被应用到大规模数据的处理上,并引发了商业领域的变革。象征着这一变化的“大数据”“数据科学”等用语,已经突破了系统的领域,蔓延到了整个社会之中。甚至有观点认为,统计分析将和人工智能并列成为决定社会未来走向的重要因素。

一方面,数据库的世界中也进行着技术的革新。如今,以 KVS 为代表的非关系数据库的使用已经不再稀奇。同时,为了追求更高的大规模数据处理的性能,内存数据库和面向列数据库的技术也取得了长足的进步,并逐渐投入到实际应用当中。

另一方面,关系数据库依然是当今的主流数据库,这一点没有变。从这个意义上来说,学习关系数据库和操作关系数据库的语言 SQL 语句,仍然是探究数据库世界的第一步,这一点也没有变,但这并不是说关系数据库和 SQL 语句一直在止步不前。大多数 DBMS 都支持窗口函数和 GROUPING 运算符(详见第 8 章),高效处理大规模数据的功能也更加完善。掌握了 SQL 语句,就可以自由自在地操作数据,构筑高效的系统。

本书与时俱进地进行了版本升级。不但根据具有代表性的 DBMS 的新版本对 SQL 语法的支持情况更新了描述,还新增了第 9 章,介绍了通过应用程序来使用数据库的方法。

本书旨在把数据库领域的精彩展示给大家,衷心希望本书能为大家的进步提供一些帮助。

本书涉及的关系数据库

本书中使用的 SQL 语句全部都在下列关系数据库管理系统(RDBMS)中进行了验证。

在这 5 种 RDBMS 之间存在差异的 SQL 语句,或者只能在某种特定的 RDBMS 中使用的 SQL 语句,本书都用下列图标进行标识,来提示执行 SQL 语句所使用的 RDBMS。

Oracle  SQL Server DB2 PostgreSQL MySQL

反之,在所有 RDBMS 中都能正常执行的 SQL 语句则不用图标标识。

本书的学习安排

首先,在第 1 章前半部分学习关系数据库和 SQL 的基础知识,然后结合具体的 SQL 示例程序进行循序渐进的学习。

在 SQL 的学习中,最重要的就是以下两点:

要提高学习效率,需尽量亲自执行并验证本书中的示例程序,逐步深入学习。

为了便于初学者操作,本书使用 PostgreSQL 作为 SQL 语句的学习环境。在开始学习之前,读者需要先在自己的电脑上安装 PostgreSQL,准备好 SQL 语句的执行环境。关于 PostgreSQL 的安装方法、SQL 语句的执行方法等详细内容,我们会在第 0 章介绍。

如果你已经安装了上述“本书涉及的关系数据库”中的数据库,也可以直接使用。

另外,如无特殊说明,本书中出现的 SQL 语句的执行结果,都是在 PostgreSQL 9.5 中执行的结果。

关于程序下载

本书中的示例程序都可以网站下载

示例程序为压缩的 Zip 文件形式,解压后的文件结构如下所示。

├─ ReadMe.txt ........... 注意事项
├─ Answer  .......... 习题答案(示例程序)
├─ Sample  ........... 第1章到第9章的示例程序
	├── Ch01
		├── 1_4
		├── 1_5
	├── CreateTable........... 创建示例用表的SQL语句

ReadMe.txt 文件:介绍了示例程序的内容和注意事项,使用前请务必阅读该文件。

Sample 文件夹:本书中所使用的示例程序分别保存在以章节为单位的文件夹中。在 Sample\CreateTable 文件夹中,按照 RDBMS 的不同,分别保存了用来创建示例用表的 SQL 语句。

Answer 文件夹:各章末习题的答案(示例程序),分别保存在以章为单位的目录中。

关于示例程序

示例程序的文件名与书中的代码清单编号相对应。例如,1-5 节的代码清单 1-3 的示例程序,保存的位置和文件名如下所示。

├─ Sample
	├── Ch01
		├── 1_5
			├── list1_3.sql

另外,像如下代码清单这样,在不同的 RDBMS 中存在差异的 SQL 语句,会在其文件名的末尾加上 RDBMS 的名称。

代码清单 1- 4 添加一列可以存储 100 位可变长度字符串的 product_name_pinyin

ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR (100);
ALTER TABLE Product ADD (product_name_pinyin VARCHAR (100));
ALTER TABLE Product ADD product_name_pinyin VARCHAR (100);

这种情况下,示例程序的文件名如下所示。

创建示例用表的 SQL 语句

创建示例用表的 SQL 语句用于创建示例用表的 SQL 文件保存在 Sample\CreateTable 文件夹中,文件名为“CreateTable 表名.sql”。例如,PostgreSQL 用到的表 Product 保存在下述目录中。

├─ Sample
	├── CreateTable
		├── PostgreSQL
			├── CreateTableProduct.sql

保存在 Sample 文件夹中的示例程序文件,可以使用 Windows 的记事本(或者其他文本编辑器)打开。

第0章 绪论——搭建 SQL 的学习环境

如果要一边执行 SQL 语句一边学习,就必须有数据库作为 SQL 语句的执行环境。本章将介绍开源数据库 PostgreSQL(版本 9.5.3)在 Windows 环境下的安装方法。已经安装了执行环境(数据库)的读者,可以跳过本章,直接学习第 1 章及之后的内容。

PostgreSQL 是 1980 年以加利福尼亚大学为中心开发出来的 DBMS,与 MySQL 一样,都是世界上广泛应用的开源数据库(DB)。它严格遵守标准 SQL 规则,是初学者的最佳选择。

PostgreSQL 的安装和连接设置

通过 PostgreSQL 执行 SQL 语句

注意

本书使用 PostgreSQL 作为 SQL 的学习环境,当然也可以使用其他关系数据库。

本书使用 Windows 10 来介绍数据库的安装方法,该方法也适用于其他 WindowsOS。

第1章 数据库和 SQL

本章介绍了数据库的结构和基本理论,以及数据库的实际应用。大家可以学习到如何对关系数据库中用来存储数据的表进行创建、更新和删除操作,同时还能掌握关系数据库专用的 SQL 语句的书写方法和规则。

数据库是什么

数据库的结构

SQL 概要

表的创建

表的删除和更新

第2章 查询基础

本章将会和大家一起学习查询前一章创建的 Product 表中数据的 SQL 语句。这里使用的 SELECT 语句是 SQL 最基本也是最重要的语句。请大家在实际运行书中的 SELECT 语句时,亲身体验一下其书写方法和执行结果。

执行查询操作时可以指定想要查询数据的条件(查询条件)。查询时可以指定一个或多个查询条件,例如“某一列等于这个值”“某一列计算之后的值大于这个值”等。

SELECT 语句基础

算术运算符和比较运算符

逻辑运算符

第3章 聚合与排序

随着表中记录(数据行)的不断积累,存储数据逐渐增加,有时我们可能希望计算出这些数据的合计值或者平均值等。本章我们将学习使用 SQL 语句进行汇总操作的方法。此外,我们还会学习在汇总操作时指定条件,以及对汇总结果进行升序、降序的排序方法。

对表进行聚合查询

对表进行分组

为聚合结果指定条件

对查询结果进行排序

第4章 数据更新

此前几章和大家一起学习了查询表中数据的几种方法,所使用的 SQL 语句都是 SELECT 语句。SELECT 语句并不会更改表中数据,也就是说,SELECT 语句是读取专用的指令。

本章将会给大家介绍 DBMS 中用来更新表中数据的方法。数据的更新处理大体可以分为插入(INSERT)、删除(DELETE)和更新(UPDATE)三类。本章将会对这三类更新方法进行详细介绍。此外,还会给大家介绍数据库中用来管理数据更新的重要概念——事务。

数据的插入(INSERT 语句的使用方法)

数据的删除(DELETE 语句的使用方法)

数据的更新(UPDATE 语句的使用方法)

事务

第5章 复杂查询

前几章我们一起学习了表的创建、查询和更新等数据库的基本操作方法。从本章开始,我们将会在这些基本方法的基础上,学习一些实际应用中的方法。

本章将以前学过的 SELECT 语句,以及嵌套在 SELECT 语句中的视图和子查询等技术为中心进行学习。由于视图和子查询可以像表一样进行使用,因此如果能恰当地使用这些技术,就可以写出更加灵活的 SQL 了。

视图

子查询

关联子查询

第6章 函数、谓词、CASE表达式

不仅 SQL,对所有的编程语言来说,函数都起着至关重要的作用。函数就像是编程语言的“道具箱”,每种编程语言都准备了非常多的函数。使用函数,我们可以实现计算、字符串操作、日期计算等各种各样的运算。

本章将会和大家一起学习具有代表性的函数以及特殊版本的函数(谓词和 CASE 表达式)的使用方法。

各种各样的函数

谓词

CASE表达式

第7章 集合运算

前面几章我们学习了使用一张表的 SQL 语句的书写方法,本章将会和大家一起学习使用 2 张以上的表的 SQL 语句。通过以行方向(竖)为单位的集合运算符和以列方向(横)为单位的联结,就可以将分散在多张表中的数据组合成为期望的结果。

表的加减法

联结(以列为单位对表进行联结)

第8章 SQL高级处理

本章将要学习的是 SQL 中的高级聚合处理。即使是“高级处理”,说到底也还是在 SQL 中能够执行的处理。从用户的角度来说,就是那些对数值进行排序,计算销售总额等我们熟悉的处理。

和自然语言一样,SQL 语言也会随着时间而不断变化,现在每隔几年就会对标准 SQL 进行功能追加和语法修正。本章将要介绍的是最近才添加的功能。掌握了这些方便的新功能,使用 SQL 能够完成的工作范围也会不断扩展。

窗口函数

GROUPING运算符

第9章 通过应用程序连接数据库

截止到第8章,关于使用SQL语句处理数据的基础知识的学习就告一段落了。本章将会转换一下视角,带领大家了解如何通过应用程序执行SQL语句来处理数据。

本章将使用Java语言来编写应用程序连接数据库。Java是现在非常流行的应用程序开发语言。为了执行Java程序,大家需要在自己的电脑中安装Java开发工具JDK(Java Development Kit)。JDK可以从Oracle公司的网站下载,下载和安装步骤请参考“JDK下载安装手册”文件,该文件可以从以下网站下载

此外,本章假定大家已经按照第 0 章的步骤完成了PostgreSQL的安装。没有安装PostgreSQL的读者,请按照第 0 章的步骤提前安装好PostgreSQL。

数据库世界和应用程序世界的连接

Java基础知识

通过Java连接PostgreSQL

附录 练习题答案" tabindex="-1">附录 练习题答案