具体描述
SQL基础教程+进阶教程 2本 数据库工程师 SQL常见技术 图书籍
区域包邮 著
9787115455024 9787115470522 YL11785SQL基础教程 第2版
本书是**书《SQL基础教程》第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。每章结尾设置有练习题,帮助读者检验对各章内容的理解程度。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。第2版除了将示例程序更新为对应*新的DB的SQL之外,还新增了一章,介绍如何从应用程序执行SQL。
第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 .......SQL进阶教程
本书是《SQL基础教程》作者MICK为志在向中级进阶的数据库工程师编写的一本SQL技能提升指南。全书可分为两部分,*一部分介绍了SQL语言不同寻常的使用技巧,带领读者从SQL常见技术,比如CASE表达式、自连接、HAVING子句、外连接、关联子查询、EXISTS……去探索新发现。这部分不仅穿插讲解了这些技巧背后的逻辑和相关知识,而且辅以丰富的示例程序,旨在帮助读者提升编程水平;第二部分着重介绍关系数据库的发展史,把实践与理论结合起来,旨在帮助读者加深对关系数据库和SQL语言的理解。此外,每节末尾均设置有练习题,并在书末提供了解答,方便读者检验自己对书中知识点的掌握程度。
第1章 神奇的 SQL
1-1 CASE表达式 2
▲ 在SQL里表达条件分支 2
练习题 19
1-2 自连接的用法 21
▲ 面向集合语言SQL 21
练习题 35
1-3 三值逻辑和NULL 38
▲ SQL的温柔陷阱 38
1-4 HAVING子句的力量 55
▲ 出彩的配角 55
练习题 70
1-5 外连接的用法 72
▲ SQL的弱点及其趋势和对策 72
练习题 92
1-6 用关联子查询比较行与行 94
▲ 用SQL进行行与行之间的比较 94
练习题 110
1-7 用SQL进行集合运算 112
▲ SQL和集合论 112
练习题 128
1-8 EXISTS谓词的用法 130
▲ SQL中的谓词逻辑 130
练习题 146
1-9 用SQL处理数列 149
▲ 灵活使用谓词逻辑 149
练习题 165
1-10 HAVING子句又回来了 167
▲ 再也不要叫它配角了! 167
练习题 183
1-11 让SQL飞起来 186
▲ 简单的性能优化 186
1-12 关系数据库的世界 216
▲ 确立SQL的编程风格 201
第2章 SQL 编程方法
2-1 关系数据库的历史 216
▲ 1969年——一切从这里开始 216
2-2 为什么叫“关系”模型 222
▲ 为什么不叫“表”模型 222
2-3 开始于关系,结束于关系 229
▲ 关于封闭世界的幸福 229
2-4 地址这一巨大的怪物 233
▲ 为什么关系数据库里没有指针 233
2-5 GROUP BY和PARTITION BY 238
▲ 物以“类”聚 238
1-8 EXISTS谓词的用法
1-9 用SQL处理数列
1-10 HAVING子句又回来了
1-11 让SQL飞起来
1-12 关系数据库的世界
2-1 关系数据库的历史
2-2 为什么叫“关系”模型
2-3 开始于关系,结束于关系 229
2-4 地址这一巨大的怪物
2-5 GROUP BY和PARTITION BY 238
2-6 从面向过程思维向声明式思维、面向集合思维转变的7个关键点 243
▲ 画圆 243
2-7 SQL和递归集合 250
▲ SQL和集合论之间 250
2-8 人类的逻辑学 256
▲ 浅谈逻辑学的历史 256
2-9 消灭NULL委员会 260
▲ *世界的数据库工程师团结起来! 260
2-10 SQL中的层级 264
▲ 严格的等级社会 266
第3章 附录
3-1 习题解答 274
3-2 参考文献 298
后 记 302
《精通SQL:从入门到实践》 内容简介: 本书是一部全面、深入的SQL学习指南,旨在帮助读者从零基础掌握SQL语言,并逐步迈向精通。内容涵盖SQL的基础语法、核心概念,以及在实际数据库开发和管理中常用的进阶技术和最佳实践。本书语言通俗易懂,逻辑清晰,配以大量贴近实际开发的示例,让读者在理论学习的同时,也能动手实践,快速提升SQL技能。 第一篇:SQL基础篇——夯实根基,掌握核心 本篇将带领读者走进SQL的殿堂,从最基础的层面开始,逐步构建坚实的SQL知识体系。 第一章:数据库与SQL概览 什么是数据库? 讲解数据库的概念、作用以及不同类型的数据库(如关系型数据库、非关系型数据库)及其优劣势。 关系型数据库模型: 深入介绍关系型数据库的核心概念,包括表(Table)、行(Row)、列(Column)、主键(Primary Key)、外键(Foreign Key)等,并阐述它们之间的关系。 SQL简介: 介绍SQL(Structured Query Language)的历史、作用以及在数据库管理中的重要地位。说明SQL的标准化及其在不同数据库系统(如MySQL, PostgreSQL, Oracle, SQL Server)中的一些差异。 SQL的分类: 详细讲解SQL的四大类命令:DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)和TCL(事务控制语言),并简要介绍它们各自的用途。 环境搭建: 指导读者如何选择和安装常用的数据库管理系统(如MySQL),并介绍如何使用图形化工具(如MySQL Workbench, DBeaver)或命令行工具进行数据库操作,为后续学习做好准备。 第二章:创建与管理数据库对象(DDL) 创建数据库: 学习`CREATE DATABASE`语句,理解数据库的命名规则和常用参数。 选择与删除数据库: 掌握`USE`和`DROP DATABASE`语句,理解其操作的风险性。 创建表: 深入学习`CREATE TABLE`语句,详细讲解各种数据类型(如INT, VARCHAR, DATE, DECIMAL等)的特性和适用场景。介绍约束(Constraints)的概念,包括`NOT NULL`, `UNIQUE`, `PRIMARY KEY`, `FOREIGN KEY`, `CHECK`,以及`DEFAULT`值的设置。 修改表结构: 学习`ALTER TABLE`语句,包括添加、删除、修改列,以及添加、删除、修改约束。 删除表: 掌握`DROP TABLE`语句,理解其数据丢失的后果。 数据类型详解: 针对常用的数据类型进行更深入的讲解,包括数值类型(整型、浮点型)、字符串类型(长度、编码)、日期时间类型(精度、时区)、布尔类型、二进制类型以及JSON等特殊类型,并提供选择合适数据类型的指导。 第三章:数据查询基础(DML - SELECT) SELECT语句入门: 学习最基本的`SELECT`语句,如何从表中选取特定列。 WHERE子句: 掌握`WHERE`子句的使用,学习各种比较运算符(=, !=, <, >, <=, >=)、逻辑运算符(AND, OR, NOT)以及`BETWEEN`, `IN`, `LIKE`, `IS NULL`, `IS NOT NULL`等条件。 排序(ORDER BY): 学习如何使用`ORDER BY`子句对查询结果进行升序(ASC)或降序(DESC)排列。 限制结果集(LIMIT/TOP): 了解如何在不同的数据库系统中限制返回的记录数量。 DISTINCT关键字: 学习如何使用`DISTINCT`关键字去重。 NULL值的处理: 深入探讨`NULL`值的特性,以及在查询和条件判断中如何正确处理`NULL`。 第四章:数据操纵(DML - INSERT, UPDATE, DELETE) 插入数据(INSERT): 学习`INSERT INTO`语句的不同用法,包括插入单行、多行以及指定列插入。 更新数据(UPDATE): 掌握`UPDATE`语句,学习如何修改表中现有记录的数据,并结合`WHERE`子句进行精确更新。 删除数据(DELETE): 学习`DELETE FROM`语句,理解其删除数据的方式,并强调`WHERE`子句的重要性。 TRUNCATE TABLE: 介绍`TRUNCATE TABLE`命令,与`DELETE`的区别及其性能优势。 第五章:聚合函数与分组(DML - Aggregation & GROUP BY) 常用聚合函数: 学习`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`等聚合函数,了解它们如何对数据进行统计分析。 GROUP BY子句: 掌握`GROUP BY`子句的使用,学习如何将数据按照一个或多个列进行分组,并对每个组应用聚合函数。 HAVING子句: 学习`HAVING`子句,了解如何对分组后的结果进行过滤,区别于`WHERE`子句。 第二篇:SQL进阶篇——深入实践,提升效率 本篇将带领读者深入SQL的世界,探索更高级的查询技巧、性能优化方法以及数据集成策略。 第六章:多表查询与连接(JOIN) 内连接(INNER JOIN): 学习`INNER JOIN`,理解如何根据匹配条件连接两个或多个表,并返回匹配的行。 左连接(LEFT JOIN): 掌握`LEFT JOIN`(也称左外连接),学习如何返回左表的所有行,以及右表中匹配的行,不匹配时右表列显示为`NULL`。 右连接(RIGHT JOIN): 学习`RIGHT JOIN`(也称右外连接),了解其与左连接的对应关系。 全连接(FULL OUTER JOIN): 介绍`FULL OUTER JOIN`(在部分数据库系统中支持),理解如何返回两个表中所有行的集合。 自连接(SELF JOIN): 学习如何将一个表连接到自身,常用于处理层级结构数据。 多表连接的组合: 实践组合使用多种JOIN类型来处理复杂的数据关系。 第七章:子查询(Subqueries) 什么是子查询? 解释子查询的概念及其在SQL中的应用场景。 WHERE子句中的子查询: 学习在`WHERE`子句中使用子查询,如与`=`, `!=`, `>`, `<`, `IN`, `NOT IN`, `EXISTS`, `NOT EXISTS`等运算符结合。 FROM子句中的子查询(派生表): 学习将子查询用作临时表(派生表),进行进一步的查询。 SELECT子句中的子查询: 了解如何在SELECT列表中使用标量子查询。 相关子查询与非相关子查询: 区分并理解两种类型的子查询,以及它们的性能影响。 第八章:视图(Views) 创建视图: 学习`CREATE VIEW`语句,理解视图的创建过程和作用。 视图的优点: 讲解视图如何简化复杂查询、增强安全性、提供数据抽象。 使用视图: 学习如何像查询普通表一样查询视图。 修改与删除视图: 掌握`ALTER VIEW`和`DROP VIEW`语句。 视图的限制: 讨论视图在某些操作上的限制,如更新操作。 第九章:事务与锁定(TCL & Concurrency) 事务的概念: 深入理解事务(Transaction)及其ACID(Atomicity, Consistency, Isolation, Durability)特性,这对数据完整性至关重要。 事务控制语句: 学习`START TRANSACTION` (或`BEGIN`) , `COMMIT`, `ROLLBACK`语句。 隔离级别: 讲解SQL标准的事务隔离级别(Read Uncommitted, Read Committed, Repeatable Read, Serializable)及其对并发读写的影响。 死锁与锁: 介绍并发控制中常见的死锁现象,以及数据库系统中的锁机制(共享锁、排它锁)。 第十章:索引与性能优化 什么是索引? 解释索引的作用,以及它如何提高查询速度。 索引的类型: 介绍B-tree索引、哈希索引、全文索引等。 创建与删除索引: 学习`CREATE INDEX`和`DROP INDEX`语句。 何时使用索引? 提供选择索引列和创建索引的最佳实践。 理解查询执行计划(EXPLAIN): 学习如何使用`EXPLAIN`命令分析SQL查询的执行过程,找出性能瓶颈。 SQL语句优化技巧: 讲解减少扫描、避免函数在WHERE条件中使用、合理使用JOIN、优化子查询等常用优化方法。 数据库设计对性能的影响: 强调良好的数据库范式设计和数据类型选择对整体性能的重要性。 第十一章:存储过程、函数与触发器 存储过程(Stored Procedures): 介绍存储过程的概念、创建、调用与删除。讲解存储过程在批量处理、业务逻辑封装、减少网络通信等方面的优势。 用户定义函数(User-Defined Functions): 学习如何创建和使用用户定义函数,包括标量函数和表值函数。 触发器(Triggers): 详细讲解触发器的作用(如数据审计、维护数据一致性),以及`BEFORE`和`AFTER`触发器的应用场景。 第十二章:数据导入与导出 常用数据导入导出方法: 介绍在不同数据库系统中常用的数据导入导出工具和命令,如`LOAD DATA INFILE` (MySQL), `COPY` (PostgreSQL), BCP (SQL Server)等。 CSV、JSON等格式的数据处理: 讲解如何导入和导出CSV、JSON等常见数据格式。 数据迁移与同步: 简要介绍数据迁移和同步的基本概念与常用策略。 附录: SQL常用函数速查表: 汇总常见的字符串函数、数值函数、日期时间函数、聚合函数等。 数据库系统SQL语法差异概览: 简要列出MySQL, PostgreSQL, Oracle, SQL Server在部分SQL语法上的常见差异,方便读者在不同环境下使用。 常见SQL问题解答: 针对学习过程中可能遇到的常见问题进行解答。 本书旨在提供一个系统、全面的SQL学习路径,无论是初学者希望打下坚实基础,还是有一定经验的开发者希望深入理解和优化SQL,都能从中获益。通过本书的学习,读者将能够自信地运用SQL进行数据查询、管理和分析,从而在数据库开发和数据处理领域游刃有余。