具体描述
编辑推荐
《MySQL必知必会》是经典畅销书《SQL必知必会》之后,作者应众多读者的请求编写的,专门针对MySQL用户。书中继承了《MySQL必知必会》的优点,没有过多阐述数据库基础理论,而是紧贴实战需要,直接从数据检索开始,逐步深入各种复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过本书,读者能够掌握扎实的基本功,迅速成为MySQL高手。
内容简介
MySQL是世界上受欢迎的数据库管理系统之一。书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。通过重点突出的章节,条理清晰、系统而扼要地讲述了读者应该掌握的知识,使他们不经意间立刻功力大增。
《MySQL必知必会》注重实用性,操作性很强,适用于广大软件开发和数据库管理人员学习参考。
作者简介
Ben Forta,世界知名的技术作家,也是Adobe技术界知名的专家之一,目前担任Adobe公司的高级技术推广专家。他具有计算机行业20多年工作经验,多年来撰写了十几本技术图书,包括《正则表达式必知必会》、《SQL必知必会》(人民邮电出版社出版)等世界性的畅销书,已被翻译为十几种文字。
内页插图
精彩书评
★“此书使我获益匪浅,书的内容和版式都堪称完美,期待作者的下一部著作!”
——Raymond Camden,BroadChoice公司软件开发副总裁
目录
第1章 了解SQL
1.1 数据库基础
1.1.1 什么是数据库
1.1.2 表
1.1.3 列和数据类型
1.1.4 行
1.1.5 主键
1.2 什么是SQL
1.3 动手实践
1.4 小结
第2章 MySQL简介
2.1 什么是MySQL
2.1.1 客户机-服务器软件
2.1.2 MySQL版本
2.2 MySQL工具
2.2.1 mysql命令行实用程序
2.2.2 MySQL Adminis-trator
2.2.3 MySQL Query Browser
2.3 小结
第3章 使用MySQL
3.1 连接
3.2 选择数据库
3.3 了解数据库和表
3.4 小结
第4章 检索数据
4.1 SELECT语句
4.2 检索单个列
4.3 检索多个列
4.4 检索所有列
4.5 检索不同的行
4.6 限制结果
4.7 使用完全限定的表名
4.8 小结
第5章 排序检索数据
5.1 排序数据
5.2 按多个列排序
5.3 指定排序方向
5.4 小结
第6章 过滤数据
6.1 使用WHERE子句
6.2 WHERE子句操作符
6.2.1 检查单个值
6.2.2 不匹配检查
6.2.3 范围值检查
6.2.4 空值检查
6.3 小结
第7章 数据过滤
7.1 组合WHERE子句
7.1.1 AND操作符
7.1.2 OR操作符
7.1.3 计算次序
7.2 IN操作符
7.3 NOT操作符
7.4 小结
第8章 用通配符进行过滤
8.1 LIKE操作符
8.1.1 百分号(%)通配符
8.1.2 下划线(_)通配符
8.2 使用通配符的技巧
8.3 小结
第9章 用正则表达式进行搜索
9.1 正则表达式介绍
9.2 使用MySQL正则表达式
9.2.1 基本字符匹配
9.2.2 进行OR匹配
9.2.3 匹配几个字符之一
9.2.4 匹配范围
9.2.5 匹配特殊字符
9.2.6 匹配字符类
9.2.7 匹配多个实例
9.2.8 定位符
9.3 小结
第10章 创建计算字段
10.1 计算字段
10.2 拼接字段
10.3 执行算术计算
10.4 小结
第11章 使用数据处理函数
11.1 函数
11.2 使用函数
11.2.1 文本处理函数
11.2.2 日期和时间处理函数
11.2.3 数值处理函数
11.3 小结
第12章 汇总数据
12.1 聚集函数
12.1.1 AVG()函数
12.1.2 COUNT()函数
12.1.3 MAX()函数
12.1.4 MIN()函数
12.1.5 SUM()函数
12.2 聚集不同值
12.3 组合聚集函数
12.4 小结
第13章 分组数据
13.1 数据分组
13.2 创建分组
13.3 过滤分组
13.4 分组和排序
13.5 SELECT子句顺序
13.6 小结
第14章 使用子查询
14.1 子查询
14.2 利用子查询进行过滤
14.3 作为计算字段使用子查询
14.4 小结
第15章 联结表
15.1 联结
15.1.1 关系表
15.1.2 为什么要使用联结
15.2 创建联结
15.2.1 WHERE子句的重要性
15.2.2 内部联结
15.2.3 联结多个表
15.3 小结
第16章 创建高级联结
16.1 使用表别名
16.2 使用不同类型的联结
16.2.1 自联结
16.2.2 自然联结
16.2.3 外部联结
16.3 使用带聚集函数的联结
16.4 使用联结和联结条件
16.5 小结
第17章 组合查询
17.1 组合查询
17.2 创建组合查询
17.2.1 使用UNION
17.2.2 UNION规则
17.2.3 包含或取消重复的行
17.2.4 对组合查询结果排序
17.3 小结
第18章 全文本搜索
18.1 理解全文本搜索
18.2 使用全文本搜索
18.2.1 启用全文本搜索支持
18.2.2 进行全文本搜索
18.2.3 使用查询扩展
18.2.4 布尔文本搜索
18.2.5 全文本搜索的使用说明
18.3 小结
第19章 插入数据
19.1 数据插入
19.2 插入完整的行
19.3 插入多个行
19.4 插入检索出的数据
19.5 小结
第20章 更新和删除数据
20.1 更新数据
20.2 删除数据
20.3 更新和删除的指导原则
20.4 小结
第21章 创建和操纵表
21.1 创建表
21.1.1 表创建基础
21.1.2 使用NULL值
21.1.3 主键再介绍
21.1.4 使用AUTO_ INCREMENT
21.1.5 指定默认值
21.1.6 引擎类型
21.2 更新表
21.3 删除表
21.4 重命名表
21.5 小结
第22章 使用视图
22.1 视图
22.1.1 为什么使用视图
22.1.2 视图的规则和限制
22.2 使用视图
22.2.1 利用视图简化复杂的联结
22.2.2 用视图重新格式化检索出的数据
22.2.3 用视图过滤不想要的数据
22.2.4 使用视图与计算字段
22.2.5 更新视图
22.3 小结
第23章 使用存储过程
23.1 存储过程
23.2 为什么要使用存储过程
23.3 使用存储过程
23.3.1 执行存储过程
23.3.2 创建存储过程
23.3.3 删除存储过程
23.3.4 使用参数
23.3.5 建立智能存储过程
23.3.6 检查存储过程
23.4 小结
第24章 使用游标
24.1 游标
24.2 使用游标
24.2.1 创建游标
24.2.2 打开和关闭游标
24.2.3 使用游标数据
24.3 小结
第25章 使用触发器
25.1 触发器
25.2 创建触发器
25.3 删除触发器
25.4 使用触发器
25.4.1 INSERT触发器
25.4.2 DELETE触发器
25.4.3 UPDATE触发器
25.4.4 关于触发器的进一步介绍
25.5 小结
第26章 管理事务处理
26.1 事务处理
26.2 控制事务处理
26.2.1 使用ROLLBACK
26.2.2 使用COMMIT
26.2.3 使用保留点
26.2.4 更改默认的提交行为
26.3 小结
第27章 全球化和本地化
27.1 字符集和校对顺序
27.2 使用字符集和校对顺序
27.3 小结
第28章 安全管理
28.1 访问控制
28.2 管理用户
28.2.1 创建用户账号
28.2.2 删除用户账号
28.2.3 设置访问权限
28.2.4 更改口令
28.3 小结
第29章 数据库维护
29.1 备份数据
29.2 进行数据库维护
29.3 诊断启动问题
29.4 查看日志文件
29.5 小结
第30章 改善性能
30.1 改善性能
30.2 小结
附录A MySQL入门
附录B 样例表
附录C MySQL语句的语法
附录D MySQL数据类型
附录E MySQL保留字
索引
精彩书摘
第1章 了解SQL
1.1 数据库基础
你正在阅读本书,这表明你需要以某种方式与数据库打交道。在深入学习MySQL及其SQL语言的实现之前,应该对数据库及数据库技术的某些基本概念有所了解。
你可能还没有意识到,其实你自己一直在使用数据库。每当你从自己的电子邮件地址簿里查找名字时,你就在使用数据库。
……
前言/序言
MySQL已经成为世界上最受欢迎的数据库管理系统之一。无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定、可靠、快速、可信的系统,足以胜任任何数据存储业务的需要。本书基于我的一本畅销书Sams Teach Yourself SQL in 10 Minutes(中文版《SQL必知必会》,人民邮电出版社出版),那本书堪称全世界用得最多的一本SQL教程,重点讲解读者必须知道的东西,条理清晰,系统而扼要。但是,即使是那样一本广为使用的成功的书,也还存在着以下这些局限性。由于要面向所有主要的数据库管理系统(DBMS),我不得不把针对具体DBMS的内容一再压缩。为了简化SQL的讲解,我必须(尽可能)只写各种主要的DBMS通用的SQL语句。这要求我不得不舍弃一些更好的、针对具体DBMS的解决方案。虽然基本的SQL在不同的DBMS间具有较好的可移植性,但是高级的SQL显然不是这样的。因此,那本书里无法详细讲解比较高级的内容,如触发器、游标、存储过程、访问控制、事务等。于是就有了这本书。本书沿用了前一本书业已成功的教程模式和组织结构,除了:MySQL以外,不在其他内容上过多纠缠。
深入掌握数据处理的利器:MySQL实战指南 本书并非直接介绍《MySQL必知必会》这一具体书籍的内容,而是旨在为读者提供一个全面的、实战导向的学习路径,帮助他们深入理解和熟练运用MySQL数据库。我们相信,掌握MySQL不仅仅是学习一套语法,更是理解数据存储、查询、管理以及优化背后的原理,从而能够高效地解决实际业务问题。因此,本书将围绕MySQL的核心概念、关键功能以及高级应用,提供详尽的讲解和大量的实践案例,让您从入门到精通,成为一名合格的数据库开发者和管理员。 第一部分:MySQL基础架构与核心概念 在开始任何数据库操作之前,理解MySQL的底层架构至关重要。本部分将从MySQL的整体设计出发,揭示其内部工作机制,帮助您建立坚实的基础。 MySQL架构剖析: 我们将深入剖析MySQL服务器的各个组件,包括连接器(Connector)、查询解析器(Query Parser)、优化器(Optimizer)、执行器(Executor)、存储引擎(Storage Engine)等。理解这些组件如何协同工作,是解决性能瓶颈和进行高级调优的第一步。例如,我们会解释查询是如何从接收到最终返回结果的完整流程,以及在不同阶段可能遇到的问题。 存储引擎的抉择: MySQL支持多种存储引擎,每种引擎都有其独特的优势和适用场景。本书将重点介绍InnoDB和MyISAM这两种最常用的存储引擎。我们将详细对比它们的特性,包括事务支持、锁机制、索引类型、全文检索能力以及性能表现。通过实际的性能测试和案例分析,指导您根据具体业务需求选择最合适的存储引擎。例如,对于需要高并发读写和数据一致性的Web应用,InnoDB是首选;而对于读多写少的日志系统,MyISAM可能更具优势。 数据类型详解: 选择正确的数据类型直接影响数据的存储效率、查询性能和数据完整性。本书将对MySQL提供的各种数据类型进行全面解读,包括整数类型(TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT)、浮点数类型(FLOAT, DOUBLE, DECIMAL)、字符串类型(CHAR, VARCHAR, TEXT, BLOB)、日期和时间类型(DATE, TIME, DATETIME, TIMESTAMP, YEAR)以及枚举(ENUM)、集合(SET)等。我们将通过示例说明各种数据类型的取值范围、存储空间占用以及在不同场景下的使用注意事项。例如,为什么在存储货币时应该使用DECIMAL而不是FLOAT,以及什么时候应该选择VARCHAR而不是CHAR。 SQL语言入门: 结构化查询语言(SQL)是与MySQL交互的唯一方式。本部分将从最基本的SQL语句开始,逐步深入。我们将讲解数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)和数据删除(DELETE)等DML(Data Manipulation Language)语句。重点在于掌握WHERE子句的灵活运用,以及ORDER BY、GROUP BY、HAVING子句在数据聚合和排序中的作用。 表的创建与约束: 数据的结构由表定义。我们将学习如何使用CREATE TABLE语句创建表,并详细讲解各种约束,如主键(PRIMARY KEY)、唯一键(UNIQUE)、外键(FOREIGN KEY)、非空约束(NOT NULL)以及默认值(DEFAULT)。理解并合理使用约束,是保证数据完整性和一致性的基石。我们会通过创建具有复杂关系的多表结构来演示约束的实际应用。 第二部分:数据查询与数据处理的艺术 熟练掌握SQL查询是使用MySQL的关键。本部分将专注于提升您的数据查询能力,让您能够从海量数据中精准提取所需信息。 多表连接(JOIN): 在实际应用中,数据往往分布在多个表中。本书将深入讲解各种JOIN操作,包括INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN(在MySQL中通常通过组合LEFT JOIN和RIGHT JOIN模拟)以及CROSS JOIN。我们将通过图文并茂的方式解释JOIN的工作原理,并提供大量的联合查询示例,涵盖一对一、一对多、多对多等关系的处理。例如,如何同时查询用户的订单信息和商品详情。 子查询(Subqueries): 子查询是SQL中一种强大的特性,允许您在主查询中嵌套执行另一个查询。我们将介绍标量子查询、行量子查询、表量子查询以及在WHERE, FROM, SELECT子句中使用子查询的技巧。通过实际案例,展示如何使用子查询解决复杂的数据筛选和聚合问题。例如,查找出所有订单金额大于平均订单金额的订单。 函数与表达式的灵活运用: MySQL提供了丰富的内置函数,涵盖字符串处理、数学计算、日期时间操作、聚合函数等。本书将系统介绍常用函数的用法,并指导您如何结合表达式构造复杂的查询逻辑。例如,使用DATE_FORMAT函数格式化日期,使用CASE语句实现条件判断,以及利用聚合函数(SUM, AVG, COUNT, MAX, MIN)进行数据统计。 索引优化: 索引是提高查询性能的关键。我们将深入讲解不同类型的索引(B-tree, Hash, Full-text)以及索引的工作原理。重点在于如何根据查询语句的特点,选择合适的列创建索引,以及如何避免常见的索引失效情况。我们将通过explain命令分析查询计划,直观地展示索引对查询性能的影响,并提供优化索引的策略。例如,分析为何某些WHERE子句会导致索引失效,以及如何调整查询语句以充分利用索引。 视图(Views): 视图是一种虚拟表,其内容由查询定义。视图可以简化复杂的查询,提高数据的安全性。我们将讲解如何创建、修改和删除视图,并演示视图在数据抽象和授权方面的应用。 事务(Transactions): 对于涉及多个操作的数据修改,事务能够保证数据的一致性。本书将详细讲解事务的基本概念(ACID特性)、事务的隔离级别(READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE)以及如何使用BEGIN, COMMIT, ROLLBACK语句来管理事务。通过模拟并发场景,演示不同隔离级别可能导致的数据问题,并指导您选择合适的隔离级别。 第三部分:MySQL数据管理与进阶应用 掌握了数据的查询和处理,下一步便是如何有效地管理和维护数据库。本部分将深入探讨MySQL的数据管理、性能优化和安全相关的高级主题。 数据库的创建与管理: 我们将学习如何创建、选择、删除数据库,并了解数据库之间的关系。熟悉数据库的命名规范和组织结构,对于大型项目尤为重要。 表的设计与规范: 良好的表结构设计是数据库性能和可维护性的基础。本书将介绍范式理论(第一范式、第二范式、第三范式等),并提供实际的数据库设计方法论。我们将通过案例分析,演示如何设计出高效、冗余度低的表结构。 数据导入与导出: 在数据迁移、备份和共享过程中,数据的导入导出至关重要。我们将介绍使用LOAD DATA INFILE, SELECT INTO OUTFILE, mysqldump等工具进行数据导入导出的方法,并讨论各种文件格式(CSV, TSV, SQL)的优缺点。 存储过程与函数(Stored Procedures and Functions): 存储过程和函数可以将一组SQL语句打包成一个可执行单元,提高开发效率和代码复用性。我们将讲解如何使用DELIMITER, CREATE PROCEDURE, CREATE FUNCTION, CALL等语法创建和调用存储过程与函数,并演示其在业务逻辑实现中的应用。 触发器(Triggers): 触发器是一种特殊的存储过程,它在指定的表事件(INSERT, UPDATE, DELETE)发生时自动执行。我们将讲解触发器的创建、执行顺序以及在数据审计、数据同步等场景下的应用。 MySQL性能调优: 数据库性能直接影响应用的响应速度。本部分将提供一系列系统性的性能调优方法。除了前面提到的索引优化,我们还将深入探讨查询语句的优化、服务器参数的配置(如buffer pool, query cache, sort buffer等)、慢查询日志的分析以及数据库锁的优化。我们将通过实际案例,演示如何定位和解决性能瓶颈。 MySQL安全: 保护数据库免受未经授权的访问和数据泄露是至关重要的。我们将讲解用户账户的管理、权限分配、密码策略的设置、SSL加密连接的应用以及如何防范SQL注入攻击。 复制(Replication)与高可用性: 对于生产环境,数据的冗余和可用性至关重要。我们将深入介绍MySQL的复制机制,包括主从复制、半同步复制和多源复制,并讲解如何通过复制技术构建高可用性解决方案,以应对单点故障。 分区(Partitioning): 当数据量庞大时,分区技术可以将大表分割成更小的、更易于管理的部分。我们将讲解不同分区类型(RANGE, LIST, HASH, KEY)的特点,以及如何通过分区来提高查询性能和管理效率。 与其他技术的集成: 了解MySQL如何与其他技术栈集成,如PHP, Python, Java等,将是实际项目开发的关键。本书将提供一些集成示例,帮助您将MySQL应用到实际的Web开发或数据分析项目中。 本书内容将覆盖从基础概念到高级特性的方方面面,力求通过理论讲解与实践操作相结合的方式,帮助读者全面掌握MySQL数据库。我们的目标是让您不仅仅能够“知道”MySQL,更能“会用”,并能够解决实际工作中遇到的各种数据库相关挑战。无论您是初学者,还是希望进一步提升技能的开发者或管理员,本书都将是您不可多得的参考资料。