账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
开放源码的资料库大哥大 - MySQL
 

【作者: 謝一綸】2004年09月27日 星期一

浏览人次:【2680】

MySQL是一个快速、多执行序(Multithread)、多使用者,以及功能强大的关联式资料库管理系统(Relational database management system,RDBMS)。它可以轻易地与C、C++、Java、Perl、PHP等语言作连结,也能够运行于多种不同的作业平台上,包括Solaris、RedHat、Linux、FreeBSD、OS/2、Windows等都可以安装这个功能强大的开放原始码资料库软体。


MySQL的优点与特性

MySQL基本的SQL指令执行效率非常地快速,尤其是 “select/insert/update” 等相关指令执行的速度比商业软体的资料库(如MSSQL、Oracle)还要快上许多。 MySQL同时也支援许多不同的语言,中文的Big5也在支援的名单内。


虽然MySQL是以Open Source为出发点的软体,但它并不完全是一个免费的软体,因为其版权在某些情况下是需要付费的,例如将它与其它产品一起包装与贩售、商业或营利单位使用,或制成一个套件等都需要付版权费。不过对于个人及非营利单位来说,它并不需要付任何的费用,且可任意地下载使用。


MySQL所收取的授权费主要是用来协助MySQL的研发所需,这也算是对为开放原始码软体作出贡献的一些社群鼓励。且透过这样的付费机制,MySQL将会在这些社群的研发下,成长得更为茁壮、延展性也会更强。不过读者要注意的一点是,「MySQL」的正确发音是「My Ess Que Ell」,而不是「My Sequel」。


《图一 MySQL的登入画面》
《图一 MySQL的登入画面》

当然,MySQL虽然是一款开放原始码软体,但性能却一点也不逊于一般的商业软体,下面就列出一些MySQL的优点:


  • * MySQL是免费的,且可提供原始码,并支援中文Big5码。


  • * MySQL的速度非常快,甚至比Oracle、MSSQL快,但功能项目却不如Oracle完整。不过以网页的前端介面而言,若未用到过量的资料交换(Transaction),则差别就不会很大。


  • * MySQL并无人数限制,完全视使用者的配备机器等级而定。不过和一些以Client的人数来作计费的资料库系统相比,其建置成本几乎是微不足道。


  • * 可设定系统密码及个人使用权限。


  • * 有可变和固定的记录(Records)大小。


  • * 每个表格允许有16个索引,而每个索引可以由1至16个列,或列的一部份组成。其最大索引的长度可达256 Bytes。


  • * 所有的栏位都可以有预设值。


  • * 包含了Isamchk这个工具。其工具可让使用者快速检查、最佳化和修复资料库。


  • * 支援了ODBC的所有功能。举例来说,使用者可以使用MS – Access连上MySQL Server来作管理或传输的动作。


  • * MySQL在设计之初就是以速度为第一考量,即使资料库的Data超过100 GB,它也一样能够正常使用,并不会出现当机或延迟的情形。


  • * 支援远端操控的功能,使用者可透过网路来存取或传送资料。也就是说,我们可以透过网路将资料库的资料送到远端目的地,也可以将远端电脑的资料传进资料库。



MySQL的不足之处

每个资料库系统都有不同的优点与缺点,而MySQL也不例外。在这里,我们将它与Access作个简单的比较。


关联性资料库管理系统

Access是一个关联性资料库管理系统(Relational Database Management System,RDBMS),而MySQL却并非在每一个层面都可以当作这种系统来使用。这也意味着,虽然MySQL很好用,但它还不是最好的资料库软体,因为MySQL无法处理复杂的关联性资料库,如子查询(Subqueries)的功能。不过还是有替代方案,就是使用者可将大多数的子查询功能改写成“Join”,虽然意思不同,但功能却很类似子查询。


《图二 Access的登入画面》
《图二 Access的登入画面》

交易、确认/撤回

另一个MySQL所没有支援的管理层面功能,是交易(Transaction)和确认(Commit)/撤回(Rollback)。一个交易所需的是资料库能够被当作一个单位,以共同执行一群或一套命令。如果一个交易没有办法完成,那么整个交易里面就没有一个指令能够执行的下去。对于必须在线上处理订单的商业网站来说,MySQL没有支援这项功能,的确会让他们觉得很失望。不过虽然MySQL本身没有处理交易的功能,但可透过MaxSQL伺服器来执行这项任务。


MaxSQL是一个外挂形式的伺服器,它本身所提供的表格可用来支援交易的功能。


外来键的支援

外来键(Foreign key)和参考整合限制(Referential Integrity)可让使用者订定表格中的资料规则,然后将规则(Constraint)加到想要设定规则的资料里面。不过一个有赖复杂的资料关系的应用程式并不适合使用MySQL,所以当有人说MySQL不支援外来键时,所指的就是资料库的参考整合限制。 MySQL除了没有支援外来键规则之外,当然更没有支援连锁删除效应(Cascading Delete)。简单地说,如果使用者需要复杂的资料关系,那么最好还是用原来的 Access吧。


此外,使用者在MySQL也不会找到预存程序(Stored Procedure)和触发(Trigger)。而在Access里,有提供相对事件程序(Event Procedure),以及GetRows功能,这是都是不错的资料撷取功能。


《图三 MySQL的联机示意图》
《图三 MySQL的联机示意图》

MySQL的架构

在MySQL的架构中,包含了几种资料型态。而在这里,笔者将要介绍其中的基本资料型态,及具体的档案资料型态。


MySQL的基本资料型态

MySQL的基本资料型态主要分为四类,以下将个别作个简介:


数值资料(Numeric Values​​)

数值资料简单来说,就是数字。其中包括一般的10进位数字,以及科学记号的表示法,如1.2 E + 12。此外,16进位的数字表示法也会显示出来,如0XA8。


字串资料(String Values​​)

字串资料是由文字字元所组成的资料,在MySQL中的字串表示,是以「'」或「"」围起来。而跳脱出字元,使用者可以在字串中放入特殊的值,如(表一):


表一 跳脱字元与意义解释表

跳脱字元

意义

/0

NUL,指的是字元ASCII 0,不是NULL。

/'

单引号文字字元,「'」

/"

双引号文字字元,「"」

/本

倒退

/你

换行

/让

回到最初

/他

跳行


日期与时间资料(Date and Time Values​​)

顾名思义,这是用来储存日期与时间的资料。


NULL Values

NULL就是什么都没有,表示没有任何的数值。在这种情况下,资料表中会显示NULL。所以当使用者在建立资料表时,需要对表中的栏位设定其资料型态。在资料表的栏位中,有些参数是以选择性的方式出现,在下定义时可以不用放上去。这些参数的意义分别是:


  • * ():刮号中的数字可指定资料的长度。


  • * M:这里所代表的是指定资料最大长度,也就是字元的数目,例如8850是一个数字,但字元长度为“4”。


  • * D:这是用来指定浮点数型态的小数位数。


  • * ZEROFILL:这是用来在数值型态中,将不足的位数补0。


  • * UNSIGNED:这可以让数值不会产生负数,只有正数与0。



MySQL具体的档案资料型态

在上述的四种型态中,除了NULL之外,其他三类中又可以分成多栏位资料型态。这些型态如(表二)。


表二 资料型态说明表

资料型态

说明

TINYINT

有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT

有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT

有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT

有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER

INT的同义词。

BIGINT

有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。

FLOAT

单精密浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0和1.175494351E-38到3.402823466E+38。

DOUBLE

双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。

DOUBLE PRECISION

DOUBLE的同义词。

REAL

DOUBLE的同义词。

DECIMAL

DECIMAL值的最大范围与DOUBLE相同。

NUMERIC

DECIMAL的同义词。

DATE

日期。其支援的范围是“ 1000-01-01 ”到“ 9999-12-31 ”。

DATETIME

日期与时间组合。支援的范围是 “1000-01-01 00:00: ' 00” 到“9999-12-31 23:59: ' 59” 。

TIMESTAMP

时间戳记。范围是“1970-01-01 00:00: ' 00” 到2037年的某时。

TIME

一个时间。范围是“-838:59:59'到'838:59: ' 59” 。

YEAR

2或4位数字格式的年(内定是4位)。允许的值是1901到2155。

CHAR

固定长度,1 - 255个字元。

VARCHAR

可变长度,1 - 255个字元。

TINYBLOB

二进位数值的栏位,最大长度为255(2^8-1)个字串。

TINYTEXT

最大长度为255(2^8-1)个字串。

MEDIUMBLOB

二进位数值的栏位,最大长度为16777215(2^24-1)个字串。

MEDIUMTEXT

最大长度为16777215(2^24-1)个字串。

LONGBLOB

二进位数值的栏位,最大长度为4294967295(2^32-1)个字串。

LONGTEXT

最大长度为4294967295(2^32-1)个字串。

ENUM

一个INT最多能有65535不同的值。 

SET

一个SET最多能有64个成员。


结语

《图四 My SQL的使用画面》
《图四 My SQL的使用画面》

MySQL是一个很出色的资料库软体,对许多中小企业(Small Medium Bussiness,SMB)来说,它不但可以替企业省去许多不必要的花费(如客户端数目费、伺服器数目费等),且它还是一个半开放源码的免费软体,除了与其它的软体Bundle起来,或再制出售的用途外,使用者可随意地更改与使用。虽然功能并不会比其它的资料库软体强大,但也足以应付一个SMB所拥有的资料量了。


至于想要下载MySQL的读者,可以到MySQL的官方网站(http://www.mysql.com)点选Downloads项目。在点选后,由于MySQL的网站上,提供了各项作业系统平台的版本,所以请读者选择适合您需要的版本下载就行了。


"


延 伸 阅 读

本文介绍作者使用MYSQL服务的一些经验,主要从以下几个方面讲解MYSQL服务规划设计:1. MYSQL服务的安装/配置的通用性;2. 系统的升级和资料迁移方便性;3. 备份和系统快速恢复。相关介绍请见「MySQL服务维护笔记」一文。

MySQL,出自瑞典MySQL公司的开放原始码资料库软体,目前对资料库大厂Oracle、IBM、Microsoft,及Sybase等公司产生威胁。本文将对MySQL公司作个简介。你可在「IT业界名词解释:MySQL」一文中得到进一步的介绍。
MySQL是的客户端/伺服器结构,它由一个伺服器守护程式mysqld和很多不同的客户程式和资料库所组成。 SQL是一种标准化的语言,它使得存储、更新资讯更容易。 MySQL主要目标是快速、健壮和易用,并可在不同的平台上应用。在「VoWLAN通讯系统设计中的技Linux伺服器配置MySQL方案」一文为你做了相关的评析。
相关组织网站
MySQL官方网站
phpmyadmin MySQL研发计画网站
PHP/MySQL教学网站
相关文章
个人电脑架构整合汽车媒体中心
克服数字权利管理应用障碍
数字出版品的守护者 - DRM
无线影音处理与保护技术
comments powered by Disqus
相关讨论
  相关新闻
» 台达推出5G ORAN小型基地台 实现智慧工厂整合AI应用
» 欧洲航太技术展在德国盛大展开,全球吸睛 镭洋推出卫星通讯整合方案,目标抢占庞大的欧洲卫星商机
» 经济部促成3GPP大会来台争话语权 国内外大厂共商5G/6G新一代技术标准
» 经济部支持跨国研发有成 台欧双方分享B5G~6G规划
» 达梭系统收购IQMS扩展3DEXPERIENCE平台


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK85H2OXX7QSTACUKM
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw