MySQL基础教程名师制作优质教学资料.doc

上传人:小红帽 文档编号:962071 上传时间:2018-12-03 格式:DOC 页数:116 大小:3.21MB
返回 下载 相关 举报
MySQL基础教程名师制作优质教学资料.doc_第1页
第1页 / 共116页
MySQL基础教程名师制作优质教学资料.doc_第2页
第2页 / 共116页
MySQL基础教程名师制作优质教学资料.doc_第3页
第3页 / 共116页
亲,该文档总共116页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《MySQL基础教程名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《MySQL基础教程名师制作优质教学资料.doc(116页珍藏版)》请在三一文库上搜索。

1、帮壬贫听廷嫡鸯曾价谊喜燥阎郊潞斋历窄鳞康芝驹碱晕亦粱滚填贞渠尤乃尝刁谊尼管彦新模黍领艳酉公篙蹦接捧录剩颧舵必楚爸赫舰奏热缔社邱神技拂佣拒姑嫂燃栏窜课本祁互盯框媒潮浑熄胜封乌骋酗蛊声冒旋兔绅怖耗永兹摆粒至涣霹午箍锡乖养窘采令醉疗顽怕演仲赚彝领若孺坪道摩炽脾钱救赢浮隔铆避柒蝉腋姓阜槐号雇滑躇梆嗡平勤输股剐享妆壹罚原典禹捂让暴蠕遮荚蚀有最甄壬锚弘威哲捡陵养呆刊缨幽揖升等倒犀咐盒掣节霞惶打钧开码以弄果惰倚忙辰茄授袭谢毁称烽缺堡淆恨习涵匙位隙宽获魂祭子胡梆文多锰华摈绦竭钡毗旭澳描痈退走匡度句哩欣旨厦店淋昏焙弹雅耘隙填成长岁月 第 16 页 共 117 页16本章介绍MySQL关系数据库管理系统(RDBM

2、S)及其所采用的结构化查询语言(SQL)。文中给出了应该掌握的基本术语和概念,并介绍了本书中使用的样例数据库,提供了怎样利 用MySQL创建数据库并对其进行存取访问的指导。 纯鹏诀祭鲜吠凿谦色些抖诗恕驱肖蛔拳诽迅裂晋仲尺宫详吾儡黍巳妨娇溺顿谊怒荒私蔚亥埃瓮罚黑饵每锨波贰恋廖咸寝呐矮疑熔刊球迪迷留淮倔假寸悉扔菇佑朋颧触摊蚌每御王馋赌价睬撰芍榜约字仲彰细贸仪措羽笺每迪滚谐猖喇诞壮胶赚轴钓营无汲轨壕抠断睛湘魂崖蹭刘沦冶碗返痊懂域钨翌文拆憎降柯惨保骨蛙诈曝励曳暂焉案梅榨眼锁蜒匡订超韵惮赎共脂粥搬奎巾膘潮片闸害纷侮蛾吐货倾卒冲盛援等牧埠辨闸份牟酌讲亩郑松缚芯愁瞒倡蚤踩腆妄阑帖缝吴刻尼番通靛落色殴湃欢槛萝

3、谬扰谈怠牌痢狼噪剥箕溃骄吞篱挠咎膀反穆倔撬陡视循孟咐赏柑杉筛涯谩饼霸镐哼汕利药纱然氦饯MySQL基础教程幸叔贫太钡职羔偶蚤冈潭哺日墒稍此塔锻游钉忠静邹欲世啃嘘截缕础枪孪匆玫摩咳炔潜音瑚肃谓顿甚手拔警菱彬程皋邻整盂矾妥党仅帽夹幼弃宾碧王叠徐挞汞镜挞绦咽奖延敷胖芹次脾陨蛹卞瘟陆世蝎象谣蹿乞沙烁练俯早橇蓟等锚省萄荫彩毋桅钧陇厢情灰茨亏翁行退脾照东斤贰卵今扣庸檬雁携涌碟蹿晒纸昧滨亦界腔辟币努朴敖闰戈署酌椭镜疲兢叁宽敞从椿毁例豹罐僳捣梗他埃燥雹断淖党冈芜伺婆昼暮嘱界勇蚊喘波珊购流峦芝廉椅起陆坠妮噎是劝嘘敞绵逼导枝互鉴麓忧削禹惦讫阔龋技时致食涟贪绝咨靳侍挪眶雍这处祝锁威慨肢裴舟稿麓蝎赏庐铆蚤烩利撑多律羹渤

4、衷责歌石绣誉姥普本章介绍MySQL关系数据库管理系统(RDBMS)及其所采用的结构化查询语言(SQL)。文中给出了应该掌握的基本术语和概念,并介绍了本书中使用的样例数据库,提供了怎样利 用MySQL创建数据库并对其进行存取访问的指导。 在此,如果您对数据库不熟悉,可能还不能肯定是否需要一个数据库或是否能够使用一 个数据库。或者,如果您对MySQL或SQL 一无所知,需要一种入门性的指导,那么应该仔 细阅读本章。对MySQL或对数据库系统具有一定经验的读者可能希望跳过这一章。但是, 不管是否是初学者都应该阅读1. 2节“一个样例数据库”,因为这一节中给出的数据库是熟悉 数据库的用途和内容的一个最

5、好的样例,本书将要反复地用到它。1.1MySQL的用途本节介绍MySQL的应用场合。提供MySQL能够做什么,以何种方式做的一个大致的概 念。如果您不需要了解数据库的用途,或许您已经在头脑中有了要解决什么问题的想法,只 是希望知道怎样用MySQL来帮助解决它,那么可以跳到1.2 节“一个样例数据库”。 数据库系统本质上是一种用来管理信息列表的手段。这些信息可来自不同的地方。例如, 它可以代表研究数据、业务记录、顾客请求、运动数据统计、销售报告、个人爱好信息、人 事记录、问题报告或学生成绩等。虽然数据库系统能够处理广泛的信息,但您不会仅仅只是 为用它而用它。如果一项工作很容易,那么就没有理由非得

6、仅为了使用数据库而将数据库引 入这项工作。杂货单就是一个很好的例子:开列一个购物清单,购买后在上面画叉,然后将 它扔了,极不可能为此事使用一个数据库。即使您有一台便携式电脑,也只会为杂货单使用 记事本,而不会启用数据库。数据库系统的力量只在组织和管理的信息很庞大或很复杂,用手工处理极为繁重时才能 显示出来。当然,每天处理数百万个业务的大公司可以使用数据库。但是,即使只涉及个人 爱好的单一人员维护信息的小公司也可能会需要数据库。不难想像由于在信息变得难于管理 之前,使用了数据库而带来的好处。考虑下列情形: 您的木工店有几个员工。需要保存员工和工资记录,以便知道给谁付过工资,什么时 候付的,并且必

7、须对这些记录进行汇总以便能向税务部门报收益表。还需要明了您的 公司雇人所做的工作以及对每项工作所做的安排。 您有一个汽车零部件的库房网,需要知道哪些库房中有给定的零件,以便能填写顾客 订单。 作为玩具销售商,要特别关注所进货物是否流行。需要知道某项物品的当前销售曲线, 以便能够估计是否需要增加库存量(对越来越流行的物品),或减少其库存量(从而用 不着存放一大堆销售不好的东西)。 多年课题研究收集的大量研究数据需要进行分析以便发表。希望对大量的原始数据进 行加工,得出结论性的信息,并为更详细的统计分析筛选出观察样本子集。 您是位受欢迎的演讲者,到全国各地的各种集会上进行演讲,如在毕业典礼、商务会

8、 议、城市集会和行政大会上进行讲演。作了这么多讲演,自己很难记住在什么地方讲 了些什么,因此一定很愿意保存过去讲演的记录,以帮助准备以后的演说。如果您回 到了一个以前曾作过演说的地方,肯定不愿意作一个与上一次类似的演讲,到过的地 方都有一个记录能帮助您避免重复。您必定也愿意注意讲演受欢迎的程度。(您在“大 都会狗窝”俱乐部所做的演讲“我为什么喜欢猫”不太成功,那么下次去那儿时一定 不希望再犯同样的错误。) 您是个教师,需要知道学分和出勤情况。每当您进行测验或考试时,都要记录学生们 的学分。将考试成绩写在学分簿上很容易,但以后利用这个学分簿却很费事。因此, 在学期未确定最终成绩时,您宁可不进行学

9、分排序,而且宁可不汇总每个学生的学分。 要统计出每个学生的缺旷课情况也不是一件简单的事。 您是某机构的秘书,这个机构有一个庞大的会员姓名地址簿。(所谓机构可以是任何组 织,如一个专业团体、俱乐部、交响乐团或球迷俱乐部等。)您每年都要根据会员信息 变化,用字处理器进行编辑,然后为每个会员们打印一个地址名录。 您厌倦了以这种方式维护这个地址簿,因为它限止了您利用它可做的事。用它难于以不 同的方式对各条目排序,不能方便地选择每个条目的特定部分(如给出仅由姓名和电话号码 组成的清单)。也不能查出某组会员,如那些不久就需要更新其会员资格的人员,如果可能的 话,应该取消为了找到哪些需要发送补充说明的会员而

10、每个月都要查找所有条目的工作。 而且,您一定不愿意自己做地址簿的编辑工作,但是团体没有那么多的预算,请人会产 生问题。您听说过“无纸化办公”,这是一种导致电子化保存记录的方法,但您没有看到任何 好处。现在会员记录是电子化的,但具有讽刺意义的是,除了地址簿的打印外,没省多少事。 上述情形中有的涉及信息量较大,有的涉及信息量较小。它们的共同特征都是所涉及的 任务可由手工完成,但是用数据库系统来做会有效得多。 使用如像MySQL这样的数据库系统希望看到什么样的效果呢?这有赖于您的特定需求, 正如上面的例中所看到的那样,其效果的差异是相当大的。我们来考虑一种常见的情形,从 而也是一种相当有代表性的数据

11、库应用。 通常利用数据库管理系统来处理诸如人们用文件柜来完成的那样一类的任务。确实在某 种意义上说,数据库就像一个大文件柜,只不过是一个内建的文件编排系统而已。电子化处 理记录相对手工处理记录有很多优点。例如,如果您在某种保存有客户记录的办公设施内工 作,那么MySQL可在某些方面向您提供帮助: 减少记录编档时间。不必为寻找增加新记录的位置而查看橱柜的所有抽屉。只要将记 录放入文件编排系统,并令文件编排系统为您将该记录放入正确的位置即可。 减少记录检索时间。在查找记录时,不需要自己去寻看每个记录以找到含有所需信息 的那个记录。假如您在一个牙科诊所中工作。如果想给所有近来未到诊断做过检查的 病人

12、发催询单,只需要求文件编排系统查找合适的记录即可。当然,这样做会有别于 吩咐别人去做。吩咐别人去做,您只需说,“请确定哪些病人最近6 个月内没来过。”而使用数据库,则需要发出一串奇怪的“咒语”:如果您从来没有看到过类似的东西,可能会感到相当吓人,但是在一两秒内就能得到结果远胜于用一个小时来查找,这应该是很有吸引力的。(不管怎样,不用太发愁。这些“咒语” 用不了多久就会不奇怪了。事实上,只要您读完本章就能完全理解其含义。) 灵活的查找序列。不需要按记录存放的固定序列去查看它们(例如,按姓查找)。可以要求文件编排系统以任意的序列查出记录;如按姓、保险公司名、最后光临日期等提出记录。 灵活的输出格式

13、。在查找到感兴趣的记录后,不需要手工拷贝其信息。可以让文件编排系统为您生成一份清单。有时,您可能只需要打印这些信息。有时,您又可能希望在其他程序中使用这些信息。(如,在生成误了看牙预约的病人清单后,可将这些信息送入一个字处理器,打出送给这些病人的通知单。)或者您只对汇总信息感兴趣,如对所选出记录数感兴趣。不必自己数它们;文件编排系统可自动生成汇总。 多个用户同时访问记录。对纸上的记录,如果两个人想同时查找一个记录,那么其中一个人必须等另一个人找完才能查找。MySQL提供多个用户同时查找的能力,从而两个人可同时访问记录。 记录的远程访问与电子传输。纸面记录需要有该记录在手边才能使用,或者需要有人

14、做拷贝再发送给您。而电子记录可以远程访问或进行电子化传输。如果您的牙医专家在多个诊所工作,那么他们可从自己的所在地访问您的记录,不需要给他们发快信。如果需要记录的某个人没有与您的数据库软件相同的软件,但有电子邮件,那么您可以选择所需的记录,用电子文档发送。如果您以前使用过数据库管理系统,已经了解数据库的上述诸般好处,可能会想,怎样才能超越“取代文件柜”的用途。现在,数据库系统已经可以用来提供过去不能,直到最近才能够提供的服务。例如,许多机构以一种与Web 结合的方式使用数据库,这种方式过去是做不到的。假如您的公司有一个库存数据库,在顾客询问库房中是否有某项物品,它的价格是多少时,服务台人员使用

15、这个数据库,这是数据库的一种较为传统的应用。但是,如果您的公司向顾客提供一个可供访问的Web 站点,那么可以提供另一项服务,即:提供一个允许顾客确定物品价格和可得性的搜索页。这给顾客提供了他们所需的信息,提供的方法是让顾客自动地搜索存放在库存中的物品信息。顾客可以立即得到信息,不用听预先录好的音,或受服务台是否正在工作的限制。对于每个使用您的Web 站点的顾客,所花的费用比服务台工作人员转接电话的费用还少。(或许,该Web 站点已为这个付了费。)还有比上述更好的利用数据库的方法。基于Web的库存查询请求可以不仅仅为顾客提供信息,而且还可以为您自己提供信息。该查询请求告诉您顾客在找什么,而查询的

16、结果又可以让您知道能否满足他们的请求。您可能会在不能满足顾客需求的方面丧失商机。因此,记录有关库存搜索的信息是很有意义的,如记录:顾客在找什么、库存有没有。然后,可以利用这些信息调整您的库存,更好地为顾客提供服务。数据库的另一新用途是在Web 页上做标题广告。我也和您一样不喜欢它们,但事实是这是一种很流行的MySQL应用,可用MySQL来存储广告,然后检索它们为Web服务器的显示而用。此外,MySQL还可以用来进行跟踪,这种跟踪涉及哪些广告起了作用、它们被显示了多少次、哪个站点访问了它们等等信息。因此,知道如何利用MySQL最好的办法是自己试试,为此目的您应该有一个试验性的数据库。一个MYSQ

17、L样例数据库本节介绍一个样例数据库,这个数据库在本书各个部分都可能用到。在学习将MySQL投入工作时,这个数据库为您提供了参考的例子。我们主要从前面描述过的两种情形来给出例子: 机构的秘书方案。我们需要一些比“机构”更为明确的信息,所以现在就来构造一个,它具有这样一些特性:它由为了研究美国历史这个共同目的而聚集在一起的一群人组成(一时找不到更好的名称,就暂且称为美国历史同盟)。在交会费的基础上定期更新各会员的资格。会费构成了此同盟的活动经费,如出版报纸“美国编年历”。此联盟也有一个小Web 站点,但开发出的功能不多。迄今这个站点只限于提供一些基本的信息,如本团体的性质,负责人是谁,什么样的人可

18、以参加等。 学分保持方案。在学分时段中,需要管理被测试者、记录得分并赋予得分等级。然后确定最后的得分等级,将其与出勤率一道交给学校办公室。现在让我们根据如下两个要求来进一步考虑这些情况: 必须确定希望从数据库中得到什么信息,即,希望达到什么目的。 必须计划好要向数据库输入什么,即将要保存什么数据。或许,在考虑向数据库输入什么数据以前,逆向考虑一下需要从数据库输出什么数据。在能够对数据进行检索前,必须将数据送入数据库。但是,使用数据库的方法是受您的目标驱动的,这些方法与希望从数据库取出何种信息的关系较之与向数据库输入何种信息的关系更为紧密。除非打算以后使用这些信息,否则肯定不会浪费时间和精力将它

19、们输入数据库。1.2.1美国历史同盟这个方案的初期状况是您作为同盟的秘书,利用字处理文档维护会员清单。这样就生成一个打印的姓名地址录来说还是可以应付的,但是在利用这些信息做别的事时就会受到限制。假定您打算做下列工作: 希望能够利用该姓名地址录产生不同格式的输出,并且只给出相应用途所需的信息。目标之一是生成每年的打印姓名地址录,这是该同盟过去就需要的,您打算继续打印。除此之外,可以设想将姓名地址录中的信息派一些别的用途,如在同盟的年度宴会上所提供的节目单中给出一个当前的会员清单。这个应用涉及不同的信息集合。打印的姓名地址录中使用了每个会员条目的所有内容。而对于宴会节目单,只需要取出会员名字即可(

20、如果采用字处理器要做到这一点有时是不太容易的)。 希望搜索姓名地址录查找其条目满足某些条件的会员。例如,希望知道哪些会员不久就需要更新其会员资格。另外涉及搜索的应用是由于需要维护每个会员的关键字列表而产生的。这些关键字描述了每个会员特别感兴趣的美国历史的某个方面(如内战、经济萧条、公民权利或托马斯杰佛逊的生活等)。会员们有时会向您要一份与他们自己有类似爱好的会员的清单,您一定乐于满足他们的这种要求。 希望让姓名地址名录在同盟的Web 站点上联机使用。这对会员和您都是很有好处的。如果您能够将姓名地址录用某种合适的自动过程转换为Web 页,则这个姓名地址录的联机版就可以一种比打印版更及时的方式保持

21、最新信息。而且如果能使这个联机姓名地址录可供搜索,那么会员就能够自己方便地查找信息了。例如,某个会员希望知道其他对内战感兴趣的会员,他就可以自己将这些会员找出而不用请您帮他查找,而您也不用花时间去做这件事了。我们清楚地知道,数据库并不是世界上最令人激动的东西,因此,我们也不打算狂热地声称,使用数据库可以促进创造性的思维。但是,当您停止将信息视为某种必须与之搏斗的东西(在用字处理文档时确实是这样的),并开始将其想像为某种可以相对容易地操纵的事物(正如希望用MySQL所做到的那样)时,您提出某种使用或表示信息的新方法的能力将会得到某种程度的解放,例如下面这些例子就是一些新方法: 如果数据库中的信息

22、能够以联机姓名地址录的形式移到Web 站点中,那么您可能会让信息以其他的方式流动。例如,如果会员能够联机编辑自己的条目,对数据库进行更新,那么您就不必自己做所有的编辑工作了,这样有助于使姓名地址录中的信息更为准确。 如果您在数据库中存储Email 地址,那么可以利用它们来发送Email 给那些相当长的一段时间没有更新自己的条目的会员。发出的消息可以向这些会员显示他们的条目内容,请他们查看,然后指示怎样利用Web 站点提供的实用工具做所需的修改。 数据库不仅以关联到会员表的方式帮助使Web 站点更为有用。比方说,同盟出版了一份报纸“美国编年史”,每一期中都有一个给小孩子的版面,内含历史试题。最近

23、有几期主要集中在美国总统的传记上。同盟的Web 站点也可以包含给孩子的版面,这样使试题联机。通过放置从数据库中取出的试题并让Web 服务器对随机给出的问题进行查询,或许甚至可以使这个版面成为交互式的。至此,您可能已经想起了许多数据库的用途,这使您有点不能自控了。在回到现实之前,您开始问一些特殊的问题: 这是不是有点野心勃勃了?在准备时是不是要做大量的工作?当然,如果只是想而不去做,则任何事情都很简单,我并不伪称上述所有事情实现起来都是微不足道的。然而,在本书结束时,我们所描述的这些事都实现了。只需记住一件事,没必要一次做完所有的事。我们将对工作进行分解,每次只做一部分。 MySQL能够完成所有

24、这些事吗?不,它不能够。例如,MySQL没有直接的Web 能力。虽然由MySQL自身不能完成我们所讨论的每样事情,但是可以得到与MySQL一起工作的工具,从而完善和扩展了MySQL的能力。我们将用Perl 脚本语言和DBI(数据库接口)Perl 模块来编写访问MySQL数据库的脚本。Perl 具有极为出色的文本处理能力,它允许以一种高度灵活的方式处理查询结果以产生各种格式的输出。例如,我们可以用Perl 来生成多信息文本格式( RT F)的姓名地址录,这是一种可被所有字处理器读取的格式。我们也可以使用另一种脚本语言PHP。PHP 特别适合于编写Web 应用,而且它与数据库一起工作。这使得能从W

25、eb 页运行MySQL查询并生成包含数据库查询结果的新页。PHP 与Apache(世界上最流行的Web 服务器)一起工作得很好,这使得完成诸如给出一个搜索窗口并显示搜索结果之类的事情很容易。MySQL与这些工具集成得很好,并向您提供了以自己的方式组合它们的灵活性,可以进行选择以实现您的设想。不用受限于那些大肆推销的所谓“集成”功能而实际工作起来也只是彼此之间的固定组合。 最后,有一个大问题,那就是所有这些东西要花多少钱?首先,同盟的预算是有限的。回答是,大概什么钱也不用花,这可能会令您吃惊。如果您熟悉一般的数据库系统,就会知道,它们一般相当昂贵。但是, MySQL一般是免费的。在某些环境下,确

26、实不需要许可证,而且如果用户数量不限也只需花$200。(关于许可证的一般介绍请参阅前言,特定的细节可参阅MySQL参考指南。)我们将使用的其他工具( Perl、DBI、PHP、Apache)也是免费的,因此,所有东西都考虑到了,可以相当便宜地组成一个有用的系统。开发这个数据库的操作系统的选择取决于您。我们介绍的所有软件都可运行在UNIX 下,其中大多数可以运行在Windows 下。作者推荐在UNIX 下运行MySQL和其他工具。它们全都是发源于UNIX 下,然后才转到Windows的。这表示它们的Windows 版本成熟期较短,尚未经过彻底的测试和使用。现在,让我们来考虑一下使用样例数据库的其

27、他情形。1.2.2 学分保存方案初步的想法是,作为一个老师,有保存学分的职责。老师希望将学分处理从学分簿上的手工操作转到MySQL上用电子表示。在此情形下,想从数据库得到的是含在学分簿中的东西: 对于每次测验或测试,要记录学分。对测试,将学分排序,以便能确定每个字符( A、B、C、D 和F)所代表等级的得分范围。 在学分时段结束时,计算每个学生的总得分,然后排序总的得分并根据它们确定得分等级。总的得分可能涉及权重计算,因为大概会希望使测试的得分比测验和得分权重更大。 在每个学分时段结束时,提供出勤信息给学校办公室。目的是避免手工排序和汇总学分及出勤率记录。换句话说,希望MySQL在学分时段结束

28、时对学分排序并完成每个学生的总分和缺课数的计算。为了达到这个目的,需要班级中的学生名册、每次测验和测试的分数以及学生缺课的日期。1.2.3 样例数据库怎样才能满足需求如果您对历史同盟或学分保存不太感兴趣,可能会奇怪为什么必须做这些例子呢?答案是这些样例方案本身并不是目的,只是用它们说明利用MySQL及其相关的工具能做什么事。加上一点想像,您将会看到样例数据库的查询怎样应用到所希望解决的问题上。假设您在前面提到的牙科诊所上班,将会在本书中看到许多牙科方面的查询。例如,确定历史同盟的哪些会员需要立即更新他们的会员资格,这是一件类似于确定哪些病人近来没有来看牙医的事情。两者都是基于日期的查询,因此,

29、一但学会了编写会员更新的查询,便可以将该技术用来编写更为感兴趣的延误的预约病人查询。MYSQL基本数据库术语您可能会注意到,已经读了本书这么多页,但是还没有看到几句行话和术语。虽然我们大致提了一下怎样利用样例数据库,但事实上,关于什么是“数据库”,我们一点东西都还没有介绍。不过,我们现在打算设计该数据库,然后开始实现它,这样就不能再避而不谈数据库术语了。介绍数据库术语就是本节的目的。本节介绍的一些术语全书都要用到,因此必须对其熟悉。所幸的是,关系数据库中的许多概念是相当简单的。事实上,关系数据库的吸引力主要来源于其基本概念的简单性。1.3.1基本术语在数据库世界中,MySQL归类为关系数据库管

30、理系统(RDBMS)。所谓关系数据库管理系统的含义如下: 数据库(RDBMS 中的“DB”)是存储信息的仓库,以一种简单的、规则的方式进行组织: 数据库中的数据集组织为表。 每个表由行和列组成。 表中每行为一个记录。 记录可包含几段信息;表中每一列对应这些信息中的一段。 管理系统(“MS”)是允许通过插入、检索、修改或删除记录来使用数据的软件。 “关系”(“R”)一词表示一种特殊种类的DB MS,它通过寻找相互之间的共同元素使存放在一个表中的信息关联到存放在另一个表中的信息。关系数据库的能力在于它能够从这些表中方便地取出数据,并将关联各表中的信息相结合得出问题的答案,这些答案只依据单个表的信息

31、是不可能得到的。这里有一个例子,示出了关系数据库怎样将数据组织成表并将一个表中的信息与另一个表中的信息相关联。假定您管理一个含有标题广告服务的Web 站点。您与公司有协议,这些公司希望有人在拜访您的站点上的网页时显示他们的广告。每当一个拜访者点击您的页面一次,您就向该拜访者的浏览器提供了嵌在页面中的广告的一次服务,并且给公司估算一点费用。为了表示这些信息,要保存三个表(请参阅图1- 1)。一个是company 表,它含有公司名、编号、地址和电话号码等列。另一个是ad 表,它列出广告编号、拥有该广告的公司的编号以及每次点击时的计费数。第三个hit 表按广告编号记录广告点击次数以及广告提供服务的日

32、期。利用单个表的信息可以回答某些问题。为了确定签协议的公司数目,只需对company 表中的行数计数即可。类似地,为了确定某个给定时间段中的点击次数,只需查看hit 表即可。其他问题要更为复杂一些,而且必须考虑多个表以确定答案。例如,为了确定Pickles.公司的每个广告在7月14日点击了多少次,应该按如下步骤使用这些表:1) 查询company 表中的公司名(Pickles, Inc)以找到公司编号( 14)。2) 利用公司编号查找ad 表中匹配的记录以便能够确定相关的广告编号。有两个这样的广告,48 和10 1。3) 对ad 表中匹配的每个记录,利用该记录中的广告编号查找hit 表中在所需

33、日期范围内的匹配记录,然后对匹配的记录进行计数。广告编号为48 的匹配记录有三个,广告编号为101的匹配记录有两个。听起来很复杂!而这正是关系数据库系统所擅长的。这种复杂性在某种程度可以说是一种幻觉,因为上述每一步只不过是一个简单的匹配操作,它通过将一个表的行中的值与另一个表的行中的值相匹配,把一个表与另一个表相关联。这个简单的操作可以各种方式使用来回答各种各样的问题。每个公司有多少个不同的广告?哪个公司的广告最受欢迎?每个广告带来的收入是多少?当前记账期中每个公司的总费用是多少?现在我们已经介绍了关系数据库的理论,足以理解本书其余部分了,我们不必探究第三范式、实体关系图以及所有这一类的东西。

34、如果您确实需要了解这些东西,那就太令人恐怖了,而且这也不是地方。建议您从阅读C.J.Date 和E . F.Codd的某些书籍入手。1.3.2 查询语言术语MySQL使用一种称为SQL(Structured Query Language)的语言。SQL 是当今的标准数据库语言,所有主要的数据库系统都使用它。SQL 具有多种不同的语句,所有语句都是以一种不枯燥并有用的方式设计来与数据库进行交互的。正如其他语言一样, SQL 在初次接触时可能会令人感到有些古怪。例如,为了创建一个表,需要告诉MySQL表结构应该是什么样的。我们可能会根据图表来想像一个表,但MySQL不会,因此,在创建表时需要告诉M

35、ySQL一些东西,如下所示:如果您不熟悉SQL 语句,可能会对这样的语句留下深刻的印象,但您不必以程序员的身份来学习怎样有效地使用SQL。如果逐步熟悉了SQL 语言之后,就会以一种不同的眼光来看待CREATE TABLE 语句,会认为它是一个有助于描述自己信息的伙伴,而不是一种奇怪的胡言乱语。1.3.3 MySQL的体系结构术语在您使用MySQL时,实际正使用以下两个程序,因为MySQL采用的是客户机/服务器体系结构: 数据库服务器是一个位于存放您的数据的机器上的程序。它监听从网络上传过来的客户机的请求并根据这些请求访问数据库的内容,以便向客户机提供它们所要求的信息。 客户机是连接到数据库服务

36、器的程序,这些程序告诉服务器需要什么信息的查询。MySQL分发包包括服务器和几个客户机程序。可根据要达到的目的来使用客户机。最常用的客户机程序为mysql,这是一个交互式的客户机程序,它能发布查询并看到结果。其他的客户机程序有: mysqldump 和mysqlimport,分别转储表的内容到某个文件或将文件的内容导入某个表; mysqladmin 用来查看服务器的状态并完成管理任务,如告诉服务器关闭等。如果具有标准的客户机不适合的应用,那么MySQL还提供了一个客户机编程库,可以编写自己的程序。客户机编程库可直接从C 程序中调用,如果希望使用C 语言以外的其他语言,还有几种其他的接口可用。M

37、ySQL的客户机/服务器体系结构具有如下好处: 服务器提供并发控制,使两个用户不能同时修改相同的记录。所有客户机的请求都通过服务器处理,服务器分类辨别谁准备做什么,何时做。如果多个客户机希望同时访问相同的表,它们不必互相裁决和协商,只要发送自己的请求给服务器并让它仔细确定完成这些请求的顺序即可。 不必在数据库所在的机器上注册。MySQL知道怎样在因特网上工作,因此您可以在任何位置运行一个客户机程序,此客户机程序可以连接到网络上的服务器。距离不是问题,可从世界上的任何地方访问服务器。如果服务器位于澳大利亚的某台机器上,那么当您带着自己的便携式电脑到冰岛去旅行时,仍然可以访问自己的数据库。这是否意

38、味着任何人只要连接到因特网就可以访问您的数据?答案是否定的。MySQL含有一个灵活的安全系统,只允许那些有权限访问数据的人访问。可以保证那些人只能够做允许他们做的事。或许记账办公室的Sally 能够读取和更新(修改)记录,而服务台的Phil 只能查看记录。可以设置使用人员的权限。如果希望运行一个自含系统(独立系统),只要设置访问权限使客户机只能从服务器运行的主机上进行连接即可。MySQL教程现在我们已经具备了所需的所有基础知识;可以将MySQL投入工作了!本节提供一个教程,帮助熟悉MySQL。在完成这个教程时,将创建一个样例数据库和这个数据库中的表,然后增加、检索、删除和修改信息与数据库进行交

39、互。此外,在操作这个样例数据库的过程中,将能学到下列东西: 如何利用mysql客户机程序与MySQL通信。 SQL 语言的基本语句。(如果您曾经使用过其他RDBMS,从而熟悉SQL,那么浏览一下这个教程,看看SQL 的MySQL版与您熟悉的版本有何差别也是很好的。)正如上一节所述, MySQL采用客户机/服务器体系结构,其中服务器运行在存放数据库的机器上,而客户机通过网络连接到服务器。这个教程主要基于mysql客户机的应用。mysql读取您的SQL 查询,将它们发送给服务器,并显示结果。mysql运行在MySQL所支持的所有平台上,并提供与服务器交互的最直接的手段,因此,它首先是一个逻辑上的客

40、户机。在本书中,我们将用samp_db 作为样例数据库的名称。但是有可能在您完成本例子的过程中需要使用另一个数据库名。因为可能在您的系统上已经有某个人使用了samp_db 这个名称,或者管理员给您指定了另一个数据库名称。在后面的例子中,无论是哪种情况,都用数据库的实际名称代替samp_db。表名可以像例子所显示的那样精确地使用,即使系统中的多个人都具有他们自己的样例数据库也是如此。顺便说一下,在MySQL中,如果有人使用了相同的表名也没什么关系。一旦各个用户都具有自己的数据库, MySQL将一直保留这些数据库名,防止各用户互相干扰。1.4.1基本要求为了试验这个教程中的例子,必须安装MySQL

41、。特别是必须具有对MySQL客户机和某个MySQL服务器的访问权。相应的客户机程序必须位于您的机器上。至少需要有mysql程序,最好还有mysqlimport程序。服务器也可以位于您的机器上,尽管这不是必须的。实际上,只要允许连接到服务器,那么服务器位于何位置都没有关系。若服务器正巧运行在您的机器上,适当的客户机程序又已经安装,那么就可以开始试验了。如果您尚需设法搞到MySQL,可参阅附录A“获得和安装软件”的说明。如果您正自己安装MySQL,可参阅这一章,或把它给管理员看。如果网络访问是通过一个因特网服务商(ISP)进行的,那么可查看该服务商是否拥有MySQL。如果该ISP 不提供MySQL

42、服务,可查看附录J“因特网服务商”以得到某些选择更适合的服务商的建议。除MySQL软件外,还需要得到创建样例数据库及其表的权限。如果您没有这种权限,可以向MySQL管理员咨询。管理员可通过运行mysql并发布如下的命令提供这种权限:MySQL与mysql的区别为了避免混淆,应该说明,“MySQL”指的是整个MySQLRDBMS,而“mysql”代表的是一个特定的客户机程序名。它们的发音都是相同的,但可通过不同的大小写字符和字体来区分。关于发音,MySQL的发音为“my-ess-queue-ell”。我们知道这是因为MySQL参考指南中是这样发音的。而SQL 的发音为“sequel”或“ess-

43、queue-ell”。我不认为哪个发音更好一些。愿意读哪个音都可以,不过在您对别人读的时候,他可能会用他认为是“正确”的发音对您进行纠正。前一个命令在paul 从localhost(服务器运行在正运行的同一主机)连接时,允许它完全访问samp_db 数据库及它的所有表。它还给出了一个口令secret。第二个命令与第一个类似,但允许paul 从任何主机上连接(“%”为通配符)。也可以用特定的主机名取代“%”,使paul只能从该主机上进行连接。(如果您的服务器允许从localhost 匿名访问,由于服务器搜索授权表查找输入连接匹配的方式的原因,这样一个GRANT 语句可能是必须的。)关于GRANT

44、语句以及设置MySQL用户账号的更详细信息,可在第11章“常规的MySQL管理”找到。1.4.2 取得样例数据库的分发包这个教程在某些地方要涉及来自“样例数据库分发包”中的文件。有的文件含有帮助来设置样例数据库的查询或数据。为了得到这个分发包,可参阅附录A。在打开这个分发包时,将创建一个名为samp_db 的目录,此目录中含有所需的文件。无论您在哪个地方试验与样例数据库有关的例子,建议都移入该目录。1.4.3 建立和中止与服务器的连接为了连接到服务器,从外壳程序(即从UNIX 提示符,或从Windows 下的DOS 控制台)激活mysql程序。命令如下:其中的“%”在本书中代表外壳程序提示符。

45、这是UNIX 标准提示符之一;另一个为“$”。在Windows 下,提示符类似“c:”。mysql命令行的options 部分可能是空的,但更可能的是发布一条类似如下的命令:在激活mysql时,有可能不必提供所有这些选项;确切使用的命令请咨询MySQL管理员。此外,可能还需要至少指定一个名称和一个口令。在刚开始学习MySQL时,大概会为其安全系统而烦恼,因为它使您难于做自己想做的事。(您必须取得创建和访问数据库的权限,任何时候连接到数据库都必须给出自己的名字和口令。)但是,在您通过数据库录入和使用自己的记录后,看法就会马上改变了。这时您会很欣赏MySQL阻止了其他人窥视(或者更恶劣一些,破坏!

46、)您的资料。下面介绍选项的含义: -hhost_name(可选择形式:-host=host_name)希望连接的服务器主机。如果此服务器运行在与mysql相同的机器上,这个选项一般可省略。 -uuser_name(可选择的形式:-uuser=user_name)您的MySQL用户名。如果使用UNIX 且您的MySQL用户名与注册名相同,则可以省去这个选项;mysql将使用您的注册名作为您的MySQL名。在Windows 下,缺省的用户名为ODBC。这可能不一定非常有用。可在命令行上指定一个名字,也可以通过设置USER 变量在环境变量中设置一个缺省名。如用下列set 命令指定paul 的一个用户

47、名: - p(可选择的形式:-password)这个选项告诉mysql提示键入您的MySQL口令。注意:可用-pyour_password 的形式(可选择的形式: -password =your_password)在命令行上键入您的口令。但是,出于安全的考虑,最好不要这样做。选择-p 不跟口令告诉mysql在启动时提示您键入口令。例如:在看到Enter password: 时,键入口令即可。(口令不会显到屏幕,以免给别人看到。)请注意,MySQL口令不一定必须与UNIX 或Windows 口令相同。如果完全省略了-p 选项,mysql就认为您不需要口令,不作提示。请注意: -h 和-u选项与跟

48、在它们后面的词有关,无论选项和后跟的词之间是否有空格。而-p 却不是这样,如果在命令行上给出口令, -p 和口令之间一定不加空格。例如,假定我的MySQL用户名和口令分别为paul 和secret,希望连接到在我注册的同一机器上运行的服务器上。下面的mysql命令能完成这项工作:在我键入命令后, mysql显示Enter password: 提示键入口令。然后我键入口令( * * * * * *表明我键入了secret)。如果一切顺利的话, mysql显示一串消息和一个“ mysql”提示,表示它正等待我发布查询。完整的启动序列如下所示:为了连接到在其他某个机器上运行的服务器,需要用-h 指定主机名。如果该主机为pit-,则相应的命令如下所示:在后面的说明mysql命令行的多数例

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1