第1章 My SQL的概要
在实际操作数据库之前,我们先来了解一下什么是My SQL。
想马上接触My SQL的读者也可以跳过本章,直接从第2章开始阅读。
1.1 数据库的概要
1.1.1 数据库是什么
MySQL是世界上最受欢迎的开源数据库软件。那么,我们常常听到的数据库到底是什么呢?
据说,第二次世界大战后,美军为了有效管理大量的资料,便把所有的信息都集中在一个基地里,这个集中了所有信息的基地就称为数据库(database)。“数据库”一词便由此诞生。
现在,数据库表示“具有某种规则的数据集合”。但提到数据库时,我们一般都默认它具备对数据进行添加、查询和提取等用于管理数据的功能。所以,只是随便收集起来的数据的集合不能称为数据库。只有具备了有效运用这些数据的管理功能,才能称为数据库(见图1-1)。
图1-1 数据库是什么
1.1.2 关系数据库是什么
现在使用最为广泛的数据库是关系数据库(Relational DataBase,RDB)。
在关系数据库中,一条数据用多个项目来表示。例如,关系数据库将一条会员数据分成会员编号、姓名、住址和出生年月日等项目,然后把各个会员的相关数据收集起来。
其中,一条数据称为记录(record),各个项目称为列(column)。在刚才的例子中,××先生或者××小姐的数据是记录,会员编号和姓名等项目是列。
如果想象成Excel的工作表(work sheet),横向的一行就相当于记录。注意,纵向的一列中输入的是相同类型的数据(见图1-2)。
图1-2 表、记录和列
我们把收集了这些数据的表格称为表(table)。一个数据库中可以包括多个表。
管理关系数据库的系统称为RDBMS(Relational DataBase Management System,关系数据库管理系统)。MySQL也是RDBMS的一种。RDBMS是以IBM公司的埃德加·弗兰克·科德(Edgar F. Codd)于1970年发表的关系数据库相关论文为基础发展起来的。
在关系数据库中,不用把所有的项目都存入一个表里。我们可以把各个项目拆到多个“具有关联性”的表中,只对需要用到的数据进行收集和使用。
1.1.3 数据库的特征
如果是Excel的工作表,在任何单元格中都可以自由地输入字符串或数值,而且还可以通过拖曳鼠标来自由地挪动数据。
但是在数据库中,上面的做法是行不通的。如果最开始决定“在列a中输入整数”,之后在列a中就只能输入整数,不能再输入字符串。(严格来讲,在My SQL中即使输入了不同类型的数据也不会报错,但是结果可能变成什么值都没有插入进去,这一点需要特别注意。→5.1节)
另外,很多应用程序有还原(UNDO)功能,如果操作结果不理想,可以使用该功能进行还原。但是在数据库中,如果不使用事务(transaction)(→13.3节)等特殊功能,就无法还原到上一步操作(见图1-3)。
图1-3 数据库的特征
大家也许一开始会讨厌数据库这种“缺乏灵活性”的特性。但多亏了这一特性,数据库才变得安全且稳定,才成了可靠的数据存储场所(见图1-4)。“只能按照决定好的规则来操作,并且严格地进行管理”的特征,正是数据库值得信赖的原因。
图1-4 数据库的特征
1.2 My SQL是什么样的数据库
下面将介绍My SQL和其他RDBMS有哪些不同,以及开源软件究竟为何物。
1.2.1 My SQL是开源软件
My SQL是一种RDBMS(→1.1.2节)。现在世界上有许多种RDBMS被广泛使用。表1-1中列出了一些主流的数据库。
表1-1 主流数据库
Oracle和Microsoft SQL Server是商用数据库。使用这些数据库时需要付费,还要签订授权许可协议。My SQL和Postgre SQL是开源数据库。这些开源的应用程序可以免费使用,并允许他人对其进行修改。只要通过互联网下载相关程序就可以自由地使用了。
但这并不表示开源应用程序可以被随意使用,开源应用程序的使用也有一些规则和限制。特别是在商用的情况下,使用前一定要充分理解和掌握使用协议的内容。
Postgre SQL虽然作为开源RDBMS在日本非常受欢迎,但从世界范围来看,还是My SQL更胜一筹。目前世界上有超过1000万台服务器安装并使用My SQL,可以说My SQL是世界上最常用的开源RDBMS。在互联网领域,深受欢迎的Yahoo!、Twitter、You Tube和Facebook等网站的数据库现在也都使用了My SQL。需要提一下的是,Google正从My SQL向Maria DB进行切换。(2017年6月时的信息)
1.2.2 My SQL的历史
My SQL是米卡埃尔•维德纽斯(Michael Widenius)在1995年开发的RDBMS。最初,My SQL是由瑞典的My SQL AB公司进行支持和开发的。维德纽斯正是这家公司的前身公司的创始人。但在2008年2月,My SQL AB公司被Sun公司收购。而拥有被认为是世界第一的商用数据库Oracle的Oracle公司又于2010年1月收购了Sun公司。也就是说,作为开源数据库世界第一的My SQL和作为商用数据库世界第一的Oracle,现在都由同一家公司管理。虽然全世界都在关注Oracle公司的下一步举措,但目前为止Oracle和My SQL依然在各自擅长的领域作为优秀的RDBMS良好地发展着。
另外,维德纽斯原供职于Sun公司,但是他在Oracle公司收购Sun公司前从Sun公司离职,并于2010年创建了Maria DB公司,开始开发和My SQL具有兼容性的Maria DB数据库。My SQL源于维德纽斯大女儿的名字“My”,而Maria DB则源于维德纽斯二女儿的名字“Maria”。
Maria DB最初发布的版本只是增强了My SQL的部分功能,但是从2014年3月发布的10.0版本起,Maria DB开始有了自己专有的功能,逐渐和My SQL区分开来。不过在本书介绍的内容中,My SQL和Maria DB的基本操作方法并没有什么区别。
1.2.3 My SQL的两种版本
My SQL主要有以下两种版本。
▶MySQL社区版(Community Edition)
{L-End} 可免费使用
{L-End} 有参考手册(reference manual)
{L-End} 有论坛(forum)和邮件列表(mailing list),但没有技术支持
▶MySQL商业版(Commercial Edition)
{L-End} 需要付费
{L-End} 定期更新,并提供服务包(service pack)及技术支持
{L-End} 拥有以下多个版本
MySQL标准版(Standard Edition)
MySQL企业版(Enterprise Edition)
MySQL集群运营商级版(Cluster Carrier Grade Edition)
本书介绍的是可以免费使用的MySQL社区版。MySQL社区版重视加入新功能,在一定的限制条件下可以自由使用。
而My SQL商业版面向的是那些需要售后技术支持的企业。商业版更注重稳定性,可以保证运营和管理按照计划进行。My SQL商业版面向企业等客户,为了实现高可用性和高效率的运营,提供了丰富的软件和全面的技术支持服务。
1.2.4 My SQL的特征
My SQL有以下几个特征。
1.执行速度快
2.开放源代码
3.支持在多种操作系统上运行
4.支持多种编程语言
5.拥有免费和付费两种版本
My SQL的执行速度非常快,这种轻快性正是它的卖点。早期的版本为了维持这种轻快性,曾削减事务、子查询(→10.5节)和存储过程(→12.1节)等功能,所以给人一种“执行速度快,但功能太简单”的感觉。不过,现在My SQL在功能方面已经不逊色于其他RDBMS了。
表1-2是My SQL新功能的添加历史。
表1-2 My SQL新功能的添加历史
※编写本书时(2017年6月),MySQL的最新稳定版本是5.7.1
虽然My SQL的许多竞争对手从一开始就具备了这些功能,但是现在My SQL也具备了与其他RDBMS相媲美的功能。
如果问使用过数据库的人哪个RDBMS最好,每个人都会自信满满地推荐自己喜欢的数据库。
到底哪个RDBMS最好?这个问题并没有一个标准的答案。但是,My SQL是世界上最常用的开源RDBMS却是一个不争的事实。能够成为世界上最受欢迎的数据库必然有它的理由。
1.3 SQL的概要
1.3.1 什么是SQL
▶查询和SQL
在操作数据库的时候,作为用户的我们会向数据库发出命令(command),并指定需要处理的内容。表示这种命令的语句就是查询(query)。例如,创建表时使用的查询是“CREATE TAB LE ...”,插入数据时使用的查询是“INSERT INTO ...”。
编写查询需要遵守SQL(Structured Query Language)的规则。SQL直译过来就是结构化查询语言,用于对数据库进行操作。
我们来看一个例子。假设你在政府办公室等地方进行咨询,在向政府办公室窗口的负责人提出“想请××部门帮忙提供××证明”的申请后,就能得到需要的文件了。如果把申请对象换成数据库,申请手续就是SQL。SQL是数据库的窗口,充当用户与数据库交互的媒介。
实际上,即使不使用SQL这种语言向数据库发送命令,也可以使用一些工具通过直观的鼠标操作来编辑和显示数据。例如附录中介绍的php My Admin就是这样的一个工具。使用php My Admin就可以不用输入“SELECT * FROM tb ... WHERE ...”等复杂的SQL语句了。因此,也有很多书不介绍SQL语句的详细内容,而是直接介绍如何利用php My Admin等工具来创建数据库。
但是,当使用PHP等语言编写Web应用程序时,如果需要实际操作某个数据库,就必须输入正确的SQL语句。所以在本书中,我们会一个一个地输入SQL语句并执行,然后确认其结果,在此过程中学习My SQL。
▶SQL的“方言”
SQL原本是IBM公司开发的语言,但现在这门语言基本可以在所有的数据库上使用。不过麻烦的是,各个数据库使用的SQL的语法稍有不同。笔者经常使用Postgre SQL,但因Postgre SQL和My SQL的SQL命令有一些微妙的差异,所以也常常感到困惑。因此,如果你已经习惯了My SQL以外的RDBMS,就要注意这种SQL的“方言”了。
1.3.2 首先熟悉SELECT命令
SQL中有许多命令。其中,SELECT是用于选择数据的命令,它也是SQL中使用得最为频繁的关键字。无论怎样使用SELECT命令,都不必担心会损坏或更改数据,所以在数据库的入门阶段,要尽可能多地使用SELECT来熟悉SQL。
在附录3中,笔者准备了一系列用于熟悉数据库操作的My SQL基础练习。想尽早自由使用My SQL的读者,请试着每天反复做这个基础练习。相信经过反复的练习,你会灵活使用最初连意思都不明白的SQL。
成为My SQL专家的第一步,就是和My SQL成为朋友。
1.4 总结
本章主要介绍了以下内容。
●什么是数据库,什么是RDBMS
●MySQL的特征
●使用MySQL的两种版本
●数据库的操作方法
对于世界上最常用的开源数据库My SQL,大家是不是已经有了大致的了解?下一章我们将会安装MAMP,并进行My SQL的环境配置。
▶自我检查
我们来检查一下本章学习的内容是否全部理解并掌握了。
{L-End} 理解了数据库是什么
{L-End} 理解了MySQL的特征
{L-End} 理解了查询和SQL是什么