《MySQL5 数据库应用入门与提高(附光盘)》从初学者的角度出发,由浅入深,循序渐进地介绍了MySQL数据库应用与开发的相关知识,书中不但提供了大量操作MySQL数据库的示例,还提供了大量实战和上机练习供读取演练。
《MySQL5 数据库应用入门与提高(附光盘)》共分为15章,主要内容包括MySQL数据库的开发背景、使用优势、发行版本、MySQL数据库的安装和常用的图形操作界面,数据库的操作、数据库表的操作、数据库表中的字段操作、字段约束,表中数据记录的添加、删除、更新和查询操作,常量、系统变量、用户变量、运算符、内部函数、自定义函数、存储过程、触发器、视图和索引,数据备份和还原,以及用户权限的管理、MySQL数据库的性能优化和日志文件管理等,最后还提供了一个项目实战案例。
《MySQL5 数据库应用入门与提高(附光盘)》几乎涉及了MySQL数据库应用与开发的所有重要知识,既适合所有的MySQL数据库初学者,也适合MySQL数据库管理员和想全面学习MySQL数据库技术的人员阅读。另外,对于大中专和培训班的学生,本书更是一本不可多得的教材。
第1章
MySQL数据库概述
数据库是指以一定的方式存储在一起、能为多个用户共享、具有尽可能小的冗余度,并且与应用程序彼此独立的数据集合。目前使用最为广泛的是关系型数据库,它是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方式来处理数据库中的数据。现在的数据库大多数都是关系型数据库,例如Oracle、MicrosoftSQLServer、Access和MySQL等。
MySQL数据库是由瑞典MySQLAB公司开发的一个开放源码的小型关联式数据库管理系统,被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。本章将简单介绍MySQL数据库的基础知识,包括发展历史、发行版本、系统特性以及如何安装等内容。
本章重点:
了解数据管理技术的3个发展阶段
熟悉数据库系统的组成和数据模型
熟悉常见的一些数据库管理系统
了解MySQL数据库的发展背景
掌握MySQL数据库的使用优势
熟悉MySQL的系统特性和发行版本
熟悉MySQL5.6的新增亮点
掌握如何安装MySQL5.6数据库
掌握如何启动MySQL服务
了解my.ini文件的基本配置
熟悉常用的一些错误代码
1.1数据管理和数据库系统
数据是指描述事物的符号记录,人们通过数据来认识世界、交流信息。数据库是存储在一起的相关数据的集合。最初的数据存储并不是使用数据库的,数据库是发展到一定阶段时出现的产物。本节简单介绍数据管理系统、数据库系统和关系型数据库。
1.1.1数据管理技术
具体来说,数据管理技术是人们对数据进行收集、组织、存储、加工、传播和利用的一系列活动的总和,该技术的发展经历了人工管理、文件管理和数据库管理3个阶段。每个阶段的发展都以数据存储冗余不断减小、数据独立性不断增强、数据操作更加方便和简单为标志,并各有各的特点。
1.人工管理阶段
在计算机出现之前,人们运用常规的手段从事记录、存储和加工数据。简单来讲,就是利用纸张来记录,利用计算工具(例如算盘和计算尺)进行计算,并且主要通过人的大脑来管理和利用这些数据。
到了20世纪50年代中期,计算机主要用于科学计算。当时没有磁盘等直接存取设备,也没有操作和管理数据的专门软件,只有纸带、卡片和磁带等介质。数据处理的方式是批处理,该阶段管理数据的特点如下。
由于当时的计算机只用于科学计算,对于数据保存的需求尚不迫切,因此数据并不进行保存。
系统没有专用的软件对数据进行管理,每个应用程序都要包括数据的存储结构、存取方法和输入方法等。
数据不共享。数据是面向程序的,一组数据只能对应一个程序。
数据不具有独立性。程序依赖于数据,如果数据的类型、格式或输入/输出方式等逻辑结构或物理结构发生了变化,那么必须对应用程序做出相应的修改。
2.文件系统阶段
20世纪50年代后期到60年代中期,随着计算机硬件和软件的发展,磁盘和磁鼓等直接存取设备开始普及,这一时期的数据处理系统是把计算机中的数据组织成相互独立的被命名的数据文件,并且可以按照文件的名字进行访问,对文件中的记录进行存取的数据管理技术。数据可以长期保存在计算机的外存上,可以对数据进行反复处理,并支持文件的查询、修改、插入和删除等操作,这就是文件系统。
文件系统实现了记录内容的结构化,但是从文件的整体来看却是没有结构的。其数据面向特定的应用程序,因此,数据共享性、独立性差,并且冗余度大,管理和维护的代价也相当大。
3.数据库系统阶段
20世纪60年代后期以来,计算机的性能得到进一步提升,更重要的是出现了大容量的磁盘,存储容量大大增加且价格下降。在这个基础上,才有可能克服文件系统管理数据时的不足,并且满足和解决实际应用中多个用户、多个应用程序共享数据的要求,从而使数据能为尽可能多的应用程序服务,这就出现了数据库这样的数据管理技术。
数据库系统阶段的特点如下。
(1)数据结构化。在描述数据时不仅要描述数据本身,还要描述数据之间的联系。数据结构化是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
(2)数据共享性高、冗余少,并且容易扩充。数据不再针对某一个应用程序,而是面向整个系统,数据可被多个用户和多个应用程序共享,而且容易增加新的应用程序。数据共享大大减少数据冗余。
(3)数据独立性高。
(4)数据由数据库管理系统(DataBaseManagementSystem,DBMS)统一进行管理和控制。数据库为多个用户和应用程序所共享,对数据的存取往往是并发的,即多个用户可以同时存取数据库中的数据,甚至可以同时存取数据库中的同一个数据,为确保数据库数据的正确有效和数据库系统的有效运行,数据库管理系统提供以下4方面的数据控制功能。
数据安全性控制。防止因不合法使用数据而造成数据的泄露和破坏,保证数据的安全和机密。
数据的完整性控制。系统通过设置一些完整性规则,以确保数据的正确性、有效性和相容性。
并发控制。多用户同时存取或修改数据库时,防止相互干扰而给用户提供不正确的数据,并使数据库受到破坏。
数据恢复。当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。
1.1.2数据库系统
数据库系统(DataBaseSystem,DBS)是由数据库及其管理软件组成的系统,这是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。数据库系统有大小之分,大型数据库系统有MicrosoftSQLServer、Oracle和DB2等,中小型数据库系统有FoxPro和Access等。
1.数据库系统的组成
一般情况下,数据库系统由4部分组成,即数据库、硬件、软件和使用人员。
数据库(DataBase,DB)。数据库是指长期存储在计算机内的、有组织、可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并且可为各种用户共享。
硬件。硬件是构成计算机系统的各种物理设备,包括存储所需的外部设备,硬件的配置应满足整个数据库系统的需要。
软件。软件包括操作系统、数据库管理系统和应用程序。数据库管理系统是数据库系统的核心软件,它在操作系统的支持下工作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件。其主要功能包括数据定义功能、数据操纵功能、数据库的运行管理和数据库的建立与维护。
使用人员。具体划分时可以将使用人员分为4类,具体说明如下。
系统分析员和数据库设计人员。前者负责应用系统的需要分析和规范说明,他们和用户、数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计。后者负责数据库中数据的确定、数据库各级模式的设计。
应用程序员。也称开发人员或者编程人员,他们负责编写使用数据库的应用程序,这些应用程序可以对数据进行查看、添加、删除或修改。
最终用户。他们利用系统的接口或者查询语言访问数据库。
数据库管理员(DataBaseAdministrator,DBA)。他们负责数据库的总体信息控制。其职责包括具体数据库中的信息内容和结构,决定数据库的存储结构和存取策略,定义数据库的安全性要求和完整性约束条件,兼容数据库的使用和运行,负责数据库的性能改进、数据库的重组和重构,以提高系统的性能。
2.数据库系统的数据模型
数据模型是信息模型在数据世界中的表示形式,根据具体数据存储需要的不同,可以将数据模型分为3类:层次模型、网状(网格)模型和关系模型。使用对应模型的数据库分别称为层次型数据库、网状(网格)型数据库和关系型数据库。
(1)层次模型
用层次(树型)结构表示实体类型及实体间联系的数据模型称为层次模型(HierarchicalModel)。使用层次模型可以使层次分明、结构清晰,不同层次间的数据关联直接简单,且提供了良好的完整性支持。这种模型需要满足两个条件:有且只有一个根节点和根节点以外的其他节点有且只有一个父节点。使用这种模型时存在着如下一些缺点。
对插入和删除操作的限制比较多。
查询子女节点必须通过父节点,任何一个节点只有按其路径查看时,才能显示它的全部内容。
节点之间很难建立横向关联。
(2)网状模型
用有向图结构表示实体类型及实体间联系的数据结构模型称为网状模型(NetworkModel)。网状模型能够更加直接地描述现实世界,而且存取效率比较高。但是这种模型的结构关系错综复杂,难以维护。网状模型需要满足两个条件:允许一个以上的节点没有父节点和一个节点可以有多个父节点。
(3)关系模型
关系模型是用二维表的形式表示实体和实体间联系的数据模型,是由埃德加科德于1970年首先提出的。关系模型由关系数据结构、关系操作集合和关系完整性约束3个部分组成。与层次和网状模型相比,关系模型具有概念单一、规范化、以二维表格表示等特点,具体如下。
数据结构单一。关系模型中,不管是实体还是实体之间的联系都用关系来表示,而关系都对应一张二维数据表,数据结构简单、清晰。
关系规范化,并建立在严格的理论基础上。构成关系的基本规范要求关系中的每个属性不可再分割,同时关系建立在具有坚实的理论基础的严格数学概念的基础上。
概念简单,操作方便。关系模型最大的优点就是简单,用户容易理解和掌握,一个关系就是一张二维表格,用户只需用简单的查询语言就能对数据库进行操作。
1.1.3常见的数据库
关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体和实体之间的各种联系都用关系模型来表示。虽然对此模型存在着一些批评意见,但它还是数据存储的传统标准。标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。
现在关系型数据库已经成为发展的主流,许多优秀的商业数据库大多都是关系型的。下面介绍一些常见的数据库。
1.Oracle数据库
OracleDataBase又称OracleRDBMS,或者简称Oracle,是甲骨文公司的一款关系型数据库管理系统,也是目前最流行的C/S或B/S体系结构的数据库之一。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,也是世界上第一个支持SQL语言的数据库。
作为一个通用的数据库系统,Oracle具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理功能。Oracle主要应用于大型系统,但是该数据库十分复杂,管理起来非常不方便。在2009年甲骨文全球大会上,甲骨文公司宣布最新版Oracle服务器虚拟化软件OracleVM2.2正式上市。
2.DB2数据库
DB2是IBM公司研制出的一种关系型数据库管理系统,分别在不同的操作系统平台上服务。虽然DB2产品是基于UNIX的系统和个人计算机操作系统的,但是,在基于UNIX系统和Microsoft公司在Windows系统下的Access方面,DB2追寻了Oracle的数据库产品。
DB2主要应用于大型应用系统,具有较好的可伸缩性,可以支持从大型机到单用户环境,应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性和可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2还采用了数据分级技术,能够使大型数据很方便地下载到LAN数据库服务器,使C/S用户和基于LAN的应用程序可以访问大型数据,并且使数据库本地化及远程连接透明化。
3.PostgreSQL数据库
PostgreSQL是一个开放源代码的关系型数据库管理系统,它是在加州大学伯克利分校计算机系开发的POSTGRES基础上发展起来的。目前,PostgreSQL数据库已经是个非常优秀的开源项目,很多大型网站都使用PostgreSQL数据库来存储数据。
PostgreSQL支持大部分SQL标准,并且提供了许多其他特性,如复杂查询、外键、触发器、视图、事务完整性和MVCC。同样,PostgreSQL可以用许多方法扩展,例如,通过增加新的数据类型、函数、操作符、聚集函数和索引方法等。
4.MicrosoftOfficeAccess数据库
MicrosoftOfficeAccess是由Microsoft公司发布的关联式数据库管理系统,它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的系统程式之一。一般情况下,直接将MicrosoftOfficeAccess数据库简称为Access数据库,它主要应用于一些小型系统中。
5.MicrosoftSQLServer数据库
MicrosoftSQLServer数据库可以简称为SQLServer数据库,它也是由Microsoft公司开发和推广的关系型数据库管理系统。SQLServer用于大型的管理系统中,最初由Microsoft、Sybase和Ashton-Tate三家公司共同开发,并于1988年推出了第一个OS/2版本。近些年来,SQLServer的版本在不断更新,目前最新版本是2012年3月份推出的SQLServer2012。
6.MySQL数据库
MySQL数据库是一个开放源码的小型关联式数据库管理系统,其开发者是瑞典的MySQLAB公司,被广泛地应用在Internet上的中小型网站中。MySQL数据库的发展速度非常快,而且由于体积小、速度快、总体拥有成本低,尤其是开放源码这一特性,许多中小型网站为了降低网站总体拥有成本而选择了MySQL数据库作为网站数据库。
注意:Access数据库和SQLServer数据库都是Microsoft公司的产品,只能在Microsoft公司Windows系列的操作系统上运行。而Oracle、DB2、MySQL和PostgreSQL等数据库是可以跨平台的,它们不仅可以在Windows系列的操作系统上运行,还可以在其他操作系统(例如UNIX、Linux和MaxOS)上运行。
1.2MySQL数据库概述
MySQL数据库是一个关系型数据库管理系统,由瑞典的MySQLAB公司开发,目前和Oracle数据库一样,都属于甲骨文公司。MySQL的标志是一只名叫Sakila的海豚,它代表速度、力量和精确。本节将介绍与MySQL数据库相关的基本知识,包括它的背景、使用优势以及系统特性等内容。
1.2.1MySQL数据库的发展背景
MySQL数据库的历史最早可以追溯到1979年,当时有一个名叫MontyWidenius的程序员在名为TcX的小公司里打工,并且使用BASIC设计了一个报表工具,使其可以在4MB主频和16KB内存的计算机上运行。没过多久,Monty又将此工具用C语言进行了重写并移植到UNIX平台。当时,这只是一个很底层的且仅面向报表的存储引擎,名叫Unireg。
虽然TcX这个小公司的资源有限,但Monty的天赋极高,面对资源有限的不利条件,反而更能发挥他的潜能。Monty总是力图写出最高效的代码,并因此养成了习惯。与Monty在一起的其他同事,很少有人能坚持把那些代码持续写到20年后,但他做到了。
1990年,TcX公司的客户中开始有人要求为他的API提供SQL支持。当时有人提议直接使用商用数据库,但是Monty觉得商用数据库的速度难以令人满意。于是,他直接借助mSQL的代码,将它集成到自己的存储引擎中。令人失望的是,效果并不令人满意,于是,Monty雄心大起,决心自己重写一个SQL支持。
1996年,MySQL1.0版本发布,它可以在小范围内使用。到了1996年10月,MySQL3.11.1版本发布,没有2.x版本,最开始只提供了Solaris下的二进制版本。一个月后,Linux版本出现了。这时的MySQL还非常简陋,除了在一个表上做一些INSERT、UPDATE、DELETE和SELECT操作外,没有其他更多的功能。
紧接下来的两年里,MySQL被依次移植到各个平台。它在发布时采用的许可策略有些与众不同:允许免费使用,但是不能将MySQL与自己的产品绑定在一起发布。如果想一起发布,就必须使用特殊许可,这就意味着用户要花“银子”。当然,商业支持也是需要花“银子”的。其他方面用户怎么用都可以,这种特殊许可为MySQL带来了一些收入,从而为它的持续发展打下了良好的基础。
MySQL关系型数据库于1998年1月发行第一个版本。它使用系统核心的多线程机制提供完全的多线程运行模式,提供了面向C、C++、Eiffel、Java、Perl、PHP、Python以及Tcl等编程语言的编程接口(API)。支持多种字段类型,并提供了完整的操作符支持。
1999年至2000年,MySQLAB公司在瑞典成立。Monty雇了几个人与Sleepycat公司合作开发出了BerkeleyDB(简称为DBD)引擎,由于BDB支持事务处理,所以MySQL数据库从此开始支持事务处理了。
2000年4月,MySQL数据库对旧的存储引擎ISAM进行了整理,将其命名为MyISAM。2001年,HeikkiTuuri向MySQL数据库提出建议,希望能集成他的存储引擎InnoDB,这个引擎同样支持事务处理,还支持行级锁。该引擎之后被证明是最为成功的MySQL事务存储引擎。
2003年12月,MySQL5.0版本发布,提供了视图和存储过程等功能。
2008年1月,MySQLAB公司被Sun公司以10亿美金收购,MySQL数据库进入Sun时代。在Sun时代,Sun公司对其进行了大量的推广、优化和Bug修复等工作。
2008年11月,MySQL5.1发布,它提供了分区、事件管理,以及基于行的复制和基于磁盘的NDB集群系统,同时修复了大量的Bug。
2009年4月,甲骨文公司以74亿美元收购Sun公司,自此MySQL数据库进入Oracle时代,而其第三方的存储引擎InnoDB早在2005年就被甲骨文公司收购。
2010年12月,MySQL5.5发布,其主要新特性包括半同步的复制及对SIGNAL/RESIGNAL的异常处理功能的支持,最重要的是InnoDB存储引擎终于变为当前MySQL数据库的默认存储引擎。MySQL5.5不是时隔两年后的一次简单的版本更新,而是加强了MySQL数据库各个方面在企业级的特性。甲骨文公司同时也承诺MySQL5.5和未来版本仍是采用GPL授权的开源产品。
2013年2月,甲骨文公司宣布MySQL5.6正式版发布,首个正式版本号为5.6.10。同年7月13日,发布了MySQL5.6.13版本,这是目前最新的版本,本书介绍的MySQL数据库就是使用5.6.13版本。
1.2.2MySQL使用优势
如今MySQL数据库的发展势头迅速,许多大型网站也已经使用MySQL数据库来存储数据,例如新浪和网易。那么,MySQL数据库为什么成为他们的选择,它到底有哪些优势呢?下面从4个方面进行了分析。
1.MySQL数据库是开放源代码的数据库
MySQL数据库是开放源代码的数据库,任何人都可以获取该数据库的源代码,这就使得任何人都可以修改MySQL数据库的缺陷,并且任何人都能够以任何目的来使用该数据库。MySQL数据库作为一款自由的软件,它完全继承了GNU的思想,这保证了MySQL数据库是一款可以自由使用的数据库。
2.MySQL数据库的跨平台性
MySQL数据库不仅可以在Windows系列的操作系统上运行,还可以在UNIX、Linux和MacOS等操作系统上运行。许多网站都选择UNIX和Linux作为网站的服务器,因此MySQL数据库的跨平台性保证其在Web应用方面的优势。虽然,Microsoft公司的SQLServer数据库是一款非常优秀的商业数据库,但是它只能用在Windows操作系统上。因此,MySQL数据库的跨平台性是一个相当大的优势。
3.MySQL的价格优势
MySQL数据库是一款自由软件,任何人都可以从MySQL数据库的官方网站下载该软件。这些社区版本的MySQL数据库软件都是免费使用的,即使是需要付费的附加功能,其价格也是很便宜的。相对于Oracle、SQLServer和DB2这些价格昂贵的商业软件,MySQL数据库具有绝对的价格优势。
4.功能强大使用方便
MySQL数据库是一个真正的多用户、多线程SQL数据库服务器,它是C/S结构的实现,由一个服务器守护程序mysqlId和很多不同的客户程序和库组成。MySQL数据库能够快速、有效和安全地处理
......