MySQL入门
1.1 MySQL的用途
本节描述的是MySQL数据库系统的用途,具体描述了“MySQL可以干什么”,以及“它如何才能给你提供帮助”。如果你已经明白数据库的用途(也许你正在思考某个问题,到这里来只是想要找出“如何使用MySQL来解决它”的答案),那么可以直接翻阅到1.2节。
数据库系统在本质上是一种高效的管理大量列表信息的办法。这些信息的来源可能多种多样。它可能是研究数据、业务记录、客户需求、体育统计、销售报告、个人信息、人事档案、bug报告或者学生成绩。发挥数据库系统强大作用的时机在于:想要组织和管理的信息非常庞大或复杂,以至于所有记录采用手工处理会变得异常繁重。对于每天处理上百万条事务的大公司来说,数据库是必不可少的。不过,即使只有一个人的小公司,也可能会维护很多的信息,甚至多到需要用一个数据库来管理它。假设有下面这些情况。
- 你在牙科诊所工作,在那里需要管理好患者的跟踪记录:何人何时到访、做了些什么、下次预约信息、保险信息等。
- 你收集了多年的研究数据,为了发表而需要对它们进行分析。你要从大量原始数据里提炼出摘要性的信息,并取出选中的观察子集进行详细的统计分析。
- 你是一名教师,需要跟踪学生的成绩和考勤。每次考试结束,你都需要记录每一个学生的分数。虽然将成绩记录到成绩册上很简单,但之后的成绩分析却很繁琐。你很想避免为了确定分数曲线,而对每次考试的分数进行排序;也真的很不愿意在期末时为了确定最终成绩,而把每个学生的成绩都加起来。统计每个学生的考勤也很无趣。
- 你在某个组织机构(可能是一个专业团体、一个俱乐部、一个交响乐团或者一个健身俱乐部)担任秘书一职,具体负责维护机构成员名录的工作。你每年都要为所有成员生成一份打印名录,名录是用文字处理软件管理的,每当成员资料有变化时你都得编辑更新。你非常厌倦这种维护名录的方式,因为它限制了你的发挥,主要表现在:很难对名录条目按不同方式进行排序;无法轻松地选到每一条目的指定部分,如列出人名和电话号码;更不能轻松地找出一组的成员,如需要尽快更新成员资格的成员。如果有办法,就可以省却每月通过翻阅这些条目来找出那些需要更新成员资格的成员的工作。你听说过“无纸化办公”,知道它是电子化记录发展的结果,但你还未见过它所带来的任何好处。虽然成员资格记录是电子化的,但具有讽刺意味的是,它们记录的形式除了能将名录打印成纸质的以外,很难用作他途!
上面这些场景所涉及的信息量有大有小。但它们都有一个共同的特点,即这些工作都可以通过手工来完成,但使用数据库系统来管理会更高效。
在使用像MySQL这样的数据库系统时,你希望从中获得哪些具体好处呢?这取决于你的特殊需要和需求,并且,如同上面示例所示,具体的好处都各不相同。不过,在一般情况下,适合于用数据库管理系统来处理任务的人群是那些不使用数据库管理系统就要使用文件柜的人。事实上,数据库系统就像一个内置了复杂文件系统的巨大文件柜。与手工管理记录的方式相比,以电子化方式来管理记录存在有许多优势。下面来看看前面描述过的那个牙科诊所的场景。在用于管理患者记录的文档系统能力方面,MySQL可以为你带来下面这些帮助。
(1)缩短记录归档时间。你不用在文件柜里挨个拉抽屉找存放新记录的地方。你只需将它提交给MySQL,MySQL会为你找到正确的存放这条记录地方。
(2)缩短记录检索时间。当进行记录查找时,不必为了想要找到的记录而亲自动手去逐个搜索。为了给那些最近一段时间没来做检查的患者发个提醒信息,你可以让MySQL来帮你找出这些记录。当然,这与让你告诉另一个人“请帮忙确认一下最近6个月哪些患者没来参加检查”的情况有所不同。事实上,你 “念出的”是一段奇怪的“咒语”:
SELECT last_name, first_name, last_visit FROM patient WHERE last_visit < DATE_SUB(CURDATE(), INTERVAL 6 MONTH);
如果你以前从没见过类似的内容,那么它初看起来可能会相当吓人。不过,它的效果却是相当吸引人:你不用再花费一小时来翻看你的记录,只需一两秒即可得到想要的结果。不管怎样,无需多久你就会习惯这种奇形怪状的表达。等阅读完本章,你便会明白它真正的含义。
(3)灵活的检索排序。不用严格按照记录存储的顺序(如按患者的名字排序)来检索它们。MySQL可以按任何你想要的顺序来提取记录,如按名字、保险公司名字、上次就诊时间等。
(4)灵活的输出格式。在找到感兴趣的记录之后,你无需手动复制这些信息,MySQL会为你生成一个列表。有时,你可能只是想打印这些信息;有时,你可能会想在另一个程序里使用它们。例如,在生成了最近逾期未能复诊的患者名单后,你便可以把这些资料输送到某个文字处理软件,让它打印出你想要发送给那些患者的通知单。或许,你只是对如同“选中记录统计”这样的汇总信息比较感兴趣。你不用亲自来统计记录,MySQL会替你生成汇总信息。
(5)多用户同时访问记录。对于纸质记录,如果有两个人同时想要查看某个记录,那么其中一个人就必须等待另一个人将这个记录归还之后才能查看。而MySQL则可以允许这两个人同时访问这个记录。
(6)记录的远程访问与电子传输。想用纸质记录,就得亲自跑到存放它们的地方,或者让人将它们复印之后再发送给你。电子记录则为远程访问记录或者电子传输记录提供了可能。如果你的牙科集团设有许多分支机构,那么这些机构里的人员便可以在当地访问到你的资料。你完全不用再通过快递来传送这些副本。如果有人需要记录,但却又没有与你一样的数据库软件,那么你可以选择那些所需的记录,将其中的内容通过网络发送给他。
如果你曾经用过数据库管理系统,那么肯定对刚才描述的种种好处深有体会,而且可能也在思索如何才能超越常规“代替文件柜”应用程序的限制。有许多组织机构将数据库与网站结合在一起使用,这就是一种很好的方式。假设贵公司有一个商品库存数据库,每当顾客打电话过来询问仓库里是否有货、其价格是多少时,服务台的员工便会用到它。这是一种比较传统的数据库使用方式。不过,如果贵公司搭建一个供顾客访问的网站,那么就可以提供一项新的服务:创建一个搜索页面,让顾客可以查看条目,从而确定价格、可用性以及商品的库存情况。如果支持在线订购,那么顾客甚至不用离开家门便能购买到你的产品。这让顾客获得了他们想要的信息,而数据库却是根据提问自动搜索商品库存信息来提供这些内容的。顾客立即获得了所关心的信息,不用一边听着恼人的录音,一边傻等着;也不用受限于服务台的上下班时间。并且,每当有一位顾客使用贵公司网站,就意味着会少一个电话,而这是需要由一个在服务台拿工资的人来处理的事情。如此看来,该网站或许可以为自己买单。
不过,你还可以更进一步地发挥数据库的作用。基于Web的库存搜索请求,不仅可以把信息提供给顾客,也能提供给贵公司。这些查询可以让你了解到顾客正在查找哪些商品,而查询结果则会让你知道是否能够满足他们的需求。在某种程度上,如果你没有顾客想要的东西,那么你可能会错失这笔生意。因此,记录下库存搜索信息非常有意义,通过它可以了解到:顾客正在找寻什么商品,而你是否还有存货。接着,就可以根据这些信息来调整库存,并向顾客提供更好的服务。
说了半天,那么MySQL是如何工作的呢?找到答案的最好方式就是自己动手体验一下。为此,我们需要有一个可以操作的数据库。