第0章 MySQL学习指南
本章视频教学录像:23分钟
数据库(DataBase, DB)是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效地组织和管理存储在数据库中的数据。如今,已有Oracle、SQL Server和MySQL等诸多优秀的数据库。
0.1 什么是数据库
本节视频教学录像:8分钟
要想学好MySQL,就必须对数据库的概念和基础知识有所了解。MySQL是众多数据库的一种。
1.什么是数据库
数据库(DataBase, DB)是按照数据结构来组织、存储和管理数据的仓库。随着信息技术和市场的发展,特别是20世纪90年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统,在各个方面都得到了广泛的应用。
数据库是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。它是一个按数据结构来存储和管理数据的计算机软件系统。也就是说,数据库包含有两种含义:保管数据的“仓库”,以及管理数据的方法和技术。
数据库的发展大致可以划分为以下几个阶段:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。根据数据结构的联系和组织,数据库大致可以分为3类:层次式数据库、网络式数据库和关系型数据库。
不管是哪种类型的数据库,都应该有以下共同的属性:采用特定的数据类型;增加数据共享、减少数据冗余;具有较高的数据独立性;具有统一的数据控制功能。
常见的数据库有甲骨文公司的Oracle、IBM公司的DB2、微软公司的Access与SQL Server以及本书正要详细介绍的MySQL。
2.数据库系统
数据库系统包括3个主要的组成部分。
(1)数据库:用于存储数据的存储空间。
(2)数据库管理系统:用于管理数据库的软件。
(3)数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
数据库(DataBase, DB)提供一个存储空间用于存储数据,就像一个仓库一样,可以存储很多种不同的文件。一个数据库系统可能包含有很多种数据库。
数据库管理系统(Database Management System, DBMS)是用于创建、管理、和维护数据库时所使用的软件,介于用户和操作系统之间,对数据库进行管理。DBMS能定义数据存储结构,提供数据的操作机制,维护数据库的安全性、完整性和可靠性。
数据库应用程序(Database Application),相对于DBMS,数据库应用程序可以帮助用户实现对数据库操作的更高要求,可以让管理过程更加的直观和友好。
3.SQL语言
SQL的含义是结构化查询语言(Structured Query Language),它是用来实现对数据库进行查询和修改操作的标准语言。
SQL语言包含以下4个部分。
(1)数据定义语言(DDL):DROP、CREATE、ALTER等语句。
(2)数据操作语言(DML):INSERT、UPDATE、DELETE语句。
(3)数据查询语言(DQL):SELECT语句。
(4)数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
在这里不对上面的语句一一说明,只是给读者一个直观的印象,在后面的章节,笔者将详细介绍这些知识。
4.数据库访问技术
数据库存储的程序最终是要为软件服务的,因此,程序通过数据库访问技术访问调用数据库。不同的程序设计语言会采用不同的数据库访问技术。主要的数据库访问技术有ODBC、JDBC、ADO.NET、PDO等。
0.2 MySQL简介
本节视频教学录像:4分钟
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:MySQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
2008年1月16日MySQL AB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。
MySQL是数据库的一种,具有数据库的通用特征,同时,比起其他类型的数据库,它还具有自己鲜明的特点。
1.MySQL介绍
MySQL是一个小型的开源的关系型数据库管理系统,与其他大型数据库管理系统例如Oracle、DB2、SQL Server等相比,MySQL规模小,功能有限,但是它体积小、速度快、成本低,且它提供的功能对稍微复杂的应用已经够用,这些特性使得MySQL成为世界上最受欢迎的开放源代码数据库。
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS), MySQL数据库系统使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。
由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。由于这四个软件都是免费或开放源码软件(FLOSS),因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统。
2.MySQL版本介绍
针对不同的用户,MySQL分为两个不同的版本:
● MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。用户可以自由下载使用。
● MySQL Enterprise Server(企业版服务器):为企业提供数据库应用,支持ACID事务处理,提供完整的提交、回滚、崩溃恢复和行政锁定功能。需要付费使用,官方提供技术支持。
时至今日MySQL和php的结合绝对是完美。很多大型的网站也用到MySQL数据库。MySQL的发展前景是非常光明的!
0.3 MySQL的技术体系
本节视频教学录像:3分钟
要学好MySQL,就必须先要对MySQL数据库的技术体系做一个系统的了解和认识,这对于学者以后进行数据库的开发和应用有重要的意义。
1.C/S架构
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。通过C/S可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是C/S形式的两层结构。
在C/S模式中服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、MySQL等。客户端需要安装专用的客户端软件。用户使用应用程序时,首先启动客户端通过有关命令告知服务器完成各种操作,而服务器则按照命令提供相应的服务。每一个客户端软件都可以向一个服务器或应用程序服务器发出请求。
2.MySQL命令行实用程序
MySQL数据库管理系统提供了许多命令行工具程序,这些工具用来管理MySQL服务器、对数据库进行访问控制、管理MySQL用户以及数据库备份和恢复工具等。这些工具程序分为MySQL服务器端工具程序和客户端工具程序。
3.MySQL Workbench
MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。你可以用MySQLWorkbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL迁移。主要功能如下。
● 数据库设计和模型建立。
● SQL开发。
● 数据库管理。
MySQL Workbench同时有开源和商业化两个版本。
(1)MySQL Workbench Community Edition(社区版本),用户可免费使用。
(2)MySQL Workbench Standard Edition(商业版本),需要收取费用,官方提供技术支持。
两个版本的软件均支持Windows和Linux系统。
0.4 MySQL的应用领域和前景
本节视频教学录像:3分钟
经过多年的发展,MySQL已经应用到各行各业,同时MySQL自身也得到了空前的发展,越来越多的数据库从业者选择使用并提高了MySQL。
MySQL数据库有很多优势,下面总结几点。
(1)MySQL是开放源代码的数据库,任何人都可以获得该数据库的源代码。这就使得任何人都可以修正MySQL的缺陷。并且任何人都能以任何目的来使用该数据库。Richard Stallman提出GUN工程以及GPL许可协议,目的是为用户提供可以自由使用的软件。MySQL作为一款自由软件,延续并继承了GUN的思想,保证了MySQL是一款可以自由使用的数据库。
(2)MySQL能够实现跨平台操作,不仅可以在Windows系列操作系统上运行,还可以在UNIX、Linux和Mac OS等操作系统上运行。因为很多网站都选择UNIX、Linux作为网站的服务器,所以MySQL的跨平台性保证其在Web应用方面的优势。虽然微软公司的SQL Server数据库是一款很优秀的商业数据库,但是其只能在Windows系列的操作系统上运行。因此MySQL数据库的跨平台性决定其应用前景广泛。
(3)MySQL数据库是一款自由软件。任何人都可以从MySQL的官方网站下载该软件。有些社区版本的MySQL都是可以免费使用的。即使是需要付费的附加功能,其价格也是很便宜的。相对于Oracle、DB2和SQL Server这些价格昂贵的商业软件,MySQL具有绝对的价格优势。
(4)MySQL功能强大且使用方便。MySQL是一个真正的多用户、多线程SQL数据库服务器。它是以客户机/服务器结构的实现,由一个服务器守护程序mysqld和很多不同的客户程序与库组成。它能快速、有效和安全地处理大量的数据。相对于Oracle等数据库来说,MySQL的使用是非常简单的。这也为MySQL在各行各业得到广泛的应用奠定了基础。
正是因为MySQL是一款开源的软件,使它才能够在各行各业迅速得到广泛的应用。随着越来越多的知名企业阿里巴巴、新浪等正在使用MySQL数据库系统,而这方面的人才需求也是供不应求,2014年,ORACLE官方也增设了MySQL OCP(认证专家)认证考试,通过考试后,将颁发Oracle官方证书:即Oracle Certified Professional(MySQL 5.6 Database Administrator)。熟练掌握MySQL以后,可以从事系统架构师、系统维护、数据开发等职业。
0.5 MySQL学习经验谈
本节视频教学录像:3分钟
数据库的适用范围越来越大,它已经成为软件系统的一个重要组成部分,因此,学好数据库将是软件开发的一个必要条件。如何快速有效地掌握并能熟练应MySQL呢?笔者认为没有捷径可走,但多写多练多商机实践,对于初学者十分有效。
学习好数据库,快速掌握并熟练应用MySQL,最主要的就是多写多实践。笔者将自己学习MySQL的方法总结如下。
(1)多上机实践。要想熟练地掌握数据库,就必须经常上机练习。只有在上机实践中才能深刻体会数据库的使用。通常情况下,数据库管理员工作的时间越长,其工作经验就越丰富。很多复杂的问题,都可以根据数据库管理员的经验来很好的解决。上机实践的过程中,可以将学到的数据库理论知识理解得更加透彻。本书后面的章节有很多上机实践的小节,希望通过这些实践能够让读者对每个章节都能理解透彻。
(2)多编写MySQL语句。SQL语句是数据库的灵魂。数据库中的很多操作都是通过SQL语句来实现的。虽然现在数据库都有很易用的图形界面,可以直接在图形界面上创建数据库和表。但是,图形界面却掩盖了这些操作是如何实现的。只有经常使用SQL语句来操作数据库中的数据,读者才可以更加深刻地理解数据库。本书后面的章节也为读者准备了很多SQL语言编程的例子。希望读者能够通过编写SQL语句能够更好地学习数据库。
(3)通过编程语言来操作MySQL。目前,数据库系统已经成为了软件系统的一个必要组成部分。软件开发者学习数据库的最终目的就是在软件开发中使用数据库。因此,在学习过程中,多思考一下如何使用程序语言来操作MySQL。最好多编一些程序来操作MySQL,这样,既可以加深对数据库的理解,也可以提高自己的编程能力。
(4)不断加强MySQL理论知识的学习。数据库理论是学好MySQL的基础。虽然理论知识会有点枯燥,但是这是学好数据库的前提。如果没有理论基础,学习的东西就不扎实。例如,数据库理论中会讲解E-R图、数据库设计原则等知识。如果不了解这些知识,就很难设计出一个很好的数据库及表。读者可以将数据库理论知识与上机实践结合到一起来学习,这样学习效率会很高。
0.6 MySQL学习路线图
本节视频教学录像:2分钟
学习是一个由浅入深的过程。学习MySQL也是如此,笔者编制了一个系统的学习路线图,在以后的章节中,将带领大家按照学习论线图,一点一点引领大家认识MySQL、熟悉MySQL直至掌握MySQL。
学习MySQL主要分为4个阶段。
1.MySQL基础知识的学习。主要包括MySQL安装与配置、MySQL数据库基础、MySQL管理工具的使用、数据库的基本操作等。
2.MySQL核心技术的学习。主要包括数据表的基本操作、MySQL数据类型和运算符、MySQL函数、关于查询语句的详细讲解、存储程序与自定义函数、触发程序、视图等。
3.MySQL的高级应用。主要包括MySQL的备份和恢复、MySQL的复制、MySQL日志管理、MySQL分布式应用、MySQL缓存的配置和使用、MySQL错误代码和消息的使用。
4.MySQL的项目实战。在此列举了3个比较典型的实战项目,来检验上面3个阶段的学习情况,以及各种综合应用。