MYSQL网页编程之一个MYSQL样例数据库
首先我们要知道,或许有一项技术存在很多理由让我们可以选择使用MySQL学习教程,但是让我们不使用它往往只要有一个理由就足够了。本节先容一个样例数据库,这个数据库在本书各个部分都大概用到。在进修将MySQL投进事情时,这个数据库为您供应了参考的例子。我们次要夙昔面形貌过的两种情况来给出例子:
■机构的秘书计划。我们必要一些比“机构”更加明白的信息,以是如今就来机关一个,它具有如许一些特征:它由为了研讨美国汗青这个配合目标而会萃在一同的一群人构成(一时找不到更好的称号,就临时称为美国汗青联盟)。在交会费的基本上按期更新
各会员的资历。会费组成了此联盟的举动经费,如出书报纸“美国嗄昀薄4肆艘灿幸桓鲂Web站点,但开辟出的功效未几。迄今这个站点只限于供应一些基础的信息,如本整体的性子,卖力人是谁,甚么样的人能够列入等。
■学分坚持计划。在学分时段中,必要办理被测试者、纪录得分并付与得分品级。然后断定最初的得分品级,将其与缺勤率一道交给黉舍办公室。如今让我们依据以下两个请求来进一步思索这些情形:
■必需断定但愿从数据库中失掉甚么信息,即,但愿到达甚么目标。
■必需企图好要向数据库输出甚么,行将要保留甚么数据。也许,在思索向数据库输出甚么数据之前,逆向思索一下必要从数据库输入甚么数据。在可以对数据举行检索前,必需将数据送进数据库。可是,利用数据库的办法是受您的方针驱动的,这些办法与但愿从数据库掏出何种信息的干系较之与向数据库输出何种信息的干系更加严密。除非盘算今后利用这些信息,不然一定不会华侈工夫和精神将它们输出数据库。
1.2.1美国汗青联盟这个计划的早期情况是您作为联盟的秘书,使用字处置文档保护会员清单。如许就天生一个打印的姓名地点录来讲仍是能够对付的,可是在使用这些信息做其余事时就会遭到限定。假定您盘算做以下事情:
■但愿可以使用该姓名地点录发生分歧格局的输入,而且只给出响应用处所需的信息。方针之一是天生每一年的打印姓名地点录,这是该联盟已往就必要的,您盘算持续打印。除此以外,能够假想将姓名地点录中的信息派一些其余用处,如在联盟的年度宴会上
所供应的节目单中给出一个以后的会员清单。这个使用触及分歧的信息汇合。打印的姓名地点录中利用了每一个会员条目标一切内容。而关于宴会节目单,只必要掏出会员名字便可(假如接纳字处置器要做到这一点偶然是不太简单的)。
■但愿搜刮姓名地点录查找其条目满意某些前提的会员。比方,但愿晓得哪些会员不久就必要更新其会员资历。别的触及搜刮的使用是因为必要保护每一个会员的关头字列表而发生的。这些关头字形貌了每一个会员出格感乐趣的美国汗青的某个方面(如内战、经济冷落、国民权力或托马斯・杰佛逊的生存等)。会员们偶然会向您要一份与他们本人有相似喜好的会员的清单,您必定乐于满意他们的这类请求。
■但愿让姓名地点名录在联盟的Web站点上联机利用。这对会员和您都是很有优点的。假如您可以将姓名地点任命某种符合的主动历程转换为Web页,则这个姓名地点录的联机版就能够一种比打印版更实时的体例坚持最新信息。并且假如能使这个联机姓名地点录可供搜刮,那末会员就可以够本人便利地查找信息了。比方,某个会员但愿晓得其他对内战感乐趣的会员,他就能够本人将这些会员找出而不必请您帮他查找,而您也不必花工夫往做这件事了。我们分明地晓得,数据库并非天下上最使人冲动的器材,因而,我们也不盘算狂热地
宣称,利用数据库能够增进制造性的头脑。可是,当您中断将信息视为某种必需与之奋斗的器材(在用字处置文档时的确是如许的),并入手下手将其想像为某种能够绝对简单地利用的事物(正如但愿用MySQL所做到的那样)时,您提出某种利用或暗示信息的新办法的才能将会失掉某种水平的束缚,比方上面这些例子就是一些新办法:
■假如数据库中的信息可以以联机姓名地点录的情势移到Web站点中,那末您大概会让信息以其他的体例活动。比方,假如会员可以联机编纂本人的条目,对数据库举行更新,那末您就不用本人做一切的编纂事情了,如许有助于使姓名地点录中的信息更加正确。
■假如您在数据库中存储Email地点,那末能够使用它们来发送Email给那些相称长的一段工夫没有更新本人的条目标会员。收回的动静能够向这些会员显现他们的条目内容,请他们检察,然后唆使如何使用Web站点供应的有用工具做所需的修正。
■数据库不但以联系关系到会员表的体例匡助使Web站点更加有效。例如说,联盟出书了一份报纸“美国纪年史”,每期中都有一个给小孩子的版面,内含汗青试题。比来有几期次要会合在美国总统的列传上。联盟的Web站点也能够包括给孩子的版面,如许使试题联机。经由过程安排从数据库中掏出的试题并让Web服务器对随机给出的成绩举行查询,也许乃至可使这个版面成为交互式的。
至此,您大概已想起了很多数据库的用处,这使您有点不克不及自控了。在回到实际之前,您入手下手问一些特别的成绩:
■这是否是有点狼子野心了?在筹办时是否是要做大批的事情?固然,假如只是想而不往做,则任何事变都很复杂,我其实不伪称上述一切事变完成起来都是微乎其微的。但是,在本书停止时,我们所形貌的这些事都完成了。只需记着一件事,没需要一次做完一切的事。我们将对事情举行分化,每次只做一部分。
■MySQL可以完成一切这些事吗?不,它不克不及够。比方,MySQL没有间接的Web才能。固然由MySQL本身不克不及完成我们所会商的每样事变,可是能够失掉与MySQL一同事情的工具,从而完美和扩大了MySQL的才能。我们将用Perl剧本言语和DBI(数据库接口)Perl模块来编写会见MySQL数据库的剧本。Perl具有极其杰出的文本处置才能,它同意以一种高度天真的体例处置查询了局以发生各类格局的输入。比方,我们能够用Perl来天生多信息文本格局(RTF)的姓名地点录,这是一种可被一切字处置器读取的格局。我们也能够利用另外一种剧本言语PHP。PHP出格合适于编写Web使用,并且它与数据库一同事情。这使得能从Web页运转MySQL查询并天生包括数据库查询了局的新页。PHP与Apache(天下上最盛行的Web服务器)一同事情得很好,这使得完成诸如给出一个搜刮窗口并显现搜刮了局之类的事变很简单。MySQL与这些工具集成得很好,并向您供应了以本人的体例组合它们的天真性,能够举行选择以完成您的假想。不必受限于那些大举倾销的所谓“集成”功效而实践事情起来也只是相互之间的流动组合。
■最初,有一个年夜成绩,那就是一切这些器材要花几钱?起首,联盟的预算是无限的。回覆是,也许甚么钱也不必花,这大概会令您受惊。假如您熟习一样平常的数据库体系,就会晓得,它们一样平常相称高贵。可是,MySQL通常为收费的。在某些情况下,的确不
必要允许证,并且假如用户数目不限也只需花$200。(关于允许证的一样平常先容请参阅媒介,特定的细节可参阅MySQL参考指南。)我们将利用的其他工具(Perl、DBI、PHP、Apache)也是收费的,因而,一切器材都思索到了,能够相称廉价地构成一个有效的体系。开辟这个数据库的操纵体系的选择取决于您。我们先容的一切软件都可运转在UNIX下,个中年夜多半能够运转在Windows下。作者保举在UNIX下运转MySQL和其他工具。它们全都是起源于UNIX下,然后才转到Windows的。这暗示它们的Windows版本成熟期较短,还没有经由完全的测试和利用。
如今,让我们来思索一下利用样例数据库的其他情况。
1.2.2学分保留计划
开端的设法是,作为一个先生,有保留学分的职责。先生但愿将学分处置从学分簿上的手工操纵转到MySQL上用电子暗示。在此情况下,想从数据库失掉的是含在学分簿中的器材:
■关于每次检验或测试,要纪录学分。对测试,将学分排序,以便能断定每一个字符(A、B、C、D和F)所代表品级的得分局限。
■在学分时段停止时,盘算每一个先生的总得分,然后排序总的得分并依据它们断定得分品级。总的得分大概触及权重盘算,由于也许会但愿使测试的得分比检验和得分权重更年夜。
■在每一个学分时段停止时,供应缺勤信息给黉舍办公室。目标是制止手工排序和汇总学分及缺勤率纪录。换句话说,但愿MySQL在学分时段停止时对学分排序并完成每一个先生的总分和旷课数的盘算。为了到达这个目标,必要班级中的先生名册、每次检验和测试的分数和先生旷课的日期。
1.2.3样例数据库如何才干满意需求
假如您对汗青联盟或学分保留不太感乐趣,大概会奇异为何必需做这些例子呢?谜底是这些样例计划自己并非目标,只是用它们申明使用MySQL及其相干的工具能做甚么事。加上一点想像,您将会看到样例数据库的查询如何使用到所但愿办理的成绩上。假定您在后面提到的牙科诊所下班,将会在本书中看到很多牙科方面的查询。比方,断定汗青联盟的哪些会员必要当即更新他们的会员资历,这是一件相似于断定哪些病人最近没有来看牙医的事变。二者都是基于日期的查询,因而,一但学会了编写会员更新的查询,即可以将该手艺用来编写更加感乐趣的耽搁的预定病人查询。
无疑希望员工得到系统、有深度的培训,显然MySQL在这一点上还做得很不够。 一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。 一个是把SQL语句写到客户端,可以使用DataSet进行加工; 可以动态传入参数,省却了动态SQL的拼写。 sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西 以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了 再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
页:
[1]