本书面向完全没有编程和系统开发经验的初学者,介绍了关系数据库以及用来操作关系数据库的 SQL 语言的使用方法。各个章节结合具体示例进行解说,并在每章的结尾安排了习题,用来检验读者对该章内容的理解程度。大家可以从第 1 章开始,亲自验证示例程序,循序渐进地掌握 SQL 的基础知识和技巧。另外,本书还将重要知识点总结为法则,方便读者在学习完本书之后随时查阅。
近年来,和其他系统领域一样,数据库领域也实现了飞速发展,应用范围不断扩大,不但出现了具有新功能的数据库,而且操作的数据量也大幅增长。
本书将要介绍的关系数据库是时下最流行的数据库,也是理解其他数据库的基础。在系统领域,通常所讲的数据库指的就是关系数据库,其重要性可见一斑。
估计很多读者今后都会慢慢积累各个领域、各种规模的系统开发经验(或者可能已经开始从事开发方面的工作了),到那时,所有的系统必定都需要使用数据库。它们使用的数据库,即便不是关系数据库,也一定是以关系数据库为基础的数据库。从这个意义上看,如果掌握了关系数据库和 SQL,就能成为任何系统开发都需要的数据库专家了。
现在距离本书初版问世已经 6 年了,在这 6 年间,数据库发挥了越来越重要的作用。以前就有专家使用数据库进行统计分析,后来数据库也开始逐渐被应用到大规模数据的处理上,并引发了商业领域的变革。象征着这一变化的“大数据”“数据科学”等用语,已经突破了系统的领域,蔓延到了整个社会之中。甚至有观点认为,统计分析将和人工智能并列成为决定社会未来走向的重要因素。
一方面,数据库的世界中也进行着技术的革新。如今,以 KVS 为代表的非关系数据库的使用已经不再稀奇。同时,为了追求更高的大规模数据处理的性能,内存数据库和面向列数据库的技术也取得了长足的进步,并逐渐投入到实际应用当中。
另一方面,关系数据库依然是当今的主流数据库,这一点没有变。从这个意义上来说,学习关系数据库和操作关系数据库的语言 SQL 语句,仍然是探究数据库世界的第一步,这一点也没有变,但这并不是说关系数据库和 SQL 语句一直在止步不前。大多数 DBMS 都支持窗口函数和 GROUPING 运算符(详见第 8 章),高效处理大规模数据的功能也更加完善。掌握了 SQL 语句,就可以自由自在地操作数据,构筑高效的系统。
本书与时俱进地进行了版本升级。不但根据具有代表性的 DBMS 的新版本对 SQL 语法的支持情况更新了描述,还新增了第 9 章,介绍了通过应用程序来使用数据库的方法。
本书旨在把数据库领域的精彩展示给大家,衷心希望本书能为大家的进步提供一些帮助。
关于本书
本书是编程学习系列的 SQL 和关系数据库篇。该系列注重对初学者编程能力的培养,本书秉承了这一宗旨。本书不仅可以用于自学,也可以作为大学、专科学校和企业新人的培训用书。书中提供了大量的示例程序和详实的操作步骤说明,大家可以亲自动手解决具体的问题,切实提高自身的编程能力。
另外,在各章的结尾处还安排了习题来帮助大家复习该章的知识要点,习题的答案和讲解收录在附录中。
读者对象
不了解数据库和 SQL 知识的人
虽然自学了一些 SQL 知识,但仍希望进行系统学习的人
需要使用数据库,但不知道从何入手的人
在大学、专科学校和企业的教育部门等从事数据库和 SQL 教学的人
希望了解信息处理考试中 SQL 部分应试策略的人
学习本书前的预备知识
了解 Windows 的基本操作方法
能够使用Windows 的资源管理器创建文件夹并复制文件
能够使用Windows 的记事本(或者其他文本编辑器)创建文本文件
本书涉及的关系数据库
本书中使用的 SQL 语句全部都在下列关系数据库管理系统(RDBMS)中进行了验证。
Oracle Database 12cR1
SQL Server 2014
DB2 10.5
PostgreSQL 9.5.3
MySQL 5.7
在这 5 种 RDBMS 之间存在差异的 SQL 语句,或者只能在某种特定的 RDBMS 中使用的 SQL 语句,本书都用下列图标进行标识,来提示执行 SQL 语句所使用的 RDBMS。
Oracle
SQL Server
DB2
PostgreSQL
MySQL
反之,在所有 RDBMS 中都能正常执行的 SQL 语句则不用图标标识。
本书的学习安排
首先,在第 1 章前半部分学习关系数据库和 SQL 的基础知识,然后结合具体的 SQL 示例程序进行循序渐进的学习。
在 SQL 的学习中,最重要的就是以下两点:
亲自编写 SQL 语句
通过执行 SQL 语句来学习和理解数据库操作
要提高学习效率,需尽量亲自执行并验证本书中的示例程序,逐步深入学习。
为了便于初学者操作,本书使用 PostgreSQL 作为 SQL 语句的学习环境。在开始学习之前,读者需要先在自己的电脑上安装 PostgreSQL,准备好 SQL 语句的执行环境。关于 PostgreSQL 的安装方法、SQL 语句的执行方法等详细内容,我们会在第 0 章介绍。
如果你已经安装了上述“本书涉及的关系数据库”中的数据库,也可以直接使用。
另外,如无特殊说明,本书中出现的 SQL 语句的执行结果,都是在 PostgreSQL 9.5 中执行的结果。
关于程序下载
本书中的示例程序都可以从下面的网站下载。
http://www.ituring.com.cn/book/1880
示例程序为压缩的 Zip 文件形式,解压后的文件结构如下所示。
ReadMe.txt 文件
介绍了示例程序的内容和注意事项,使用前请务必阅读该文件。
Sample文件夹
本书中所使用的示例程序分别保存在以章节为单位的文件夹中。在 Sample\CreateTable 文件夹中,按照 RDBMS 的不同,分别保存了用来创建示例用表的 SQL 语句。
Answer文件夹
各章末习题的答案(示例程序),分别保存在以章为单位的目录中。
关于示例程序
示例程序的文件名与书中的代码清单编号相对应。例如,1-5 节的代码清单 1-3 的示例程序,保存的位置和文件名如下所示。
另外,像如下代码清单这样,在不同的 RDBMS 中存在差异的 SQL 语句,会在其文件名的末尾加上 RDBMS 的名称。
代码清单1-4 添加一列可以存储 100 位可变长度字符串的 product_name_pinyin 列
DB2 PostgreSQL MySQL
ALTER TABLE Product ADD COLUMN product_name_pinyin VARCHAR(100);
Oracle
ALTER TABLE Product ADD (product_name_pinyin VARCHAR(100));
SQL Server
ALTER TABLE Product ADD product_name_pinyin VARCHAR(100);
这种情况下,示例程序的文件名如下所示。
List1_4_DB2_PostgreSQL_MySQL.sql
List1_4_Oracle.sql
List1_4_SQL Server.sql
创建示例用表的 SQL 语句
用于创建示例用表的 SQL 文件保存在 Sample\CreateTable 文件夹中,文件名为“`CreateTable 表名.sql”。例如,PostgreSQL 用到的表 Product 保存在下述目录中。