仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 738|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计运转perl DBI

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:23:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL的支持者们却认为,MySQL所保留的功能都是精华,并且是你部署、MySQL学习教程配置和维护这个数据库所必不可少的一些功能。在这里,已看到很多触及DBI程序计划的观点,以是让我们持续做一些样例数据库能处置事变。最后,第1章简述了我们的方针。本章经由过程编写DBI剧本,我们将处置的那些成绩在这里列出。
关于学分保留计划,我们想可以检索任何给定的检验或测试的分数。
关于汗青同盟,我们想做上面的事变:
以分歧格局发生成员目次。我们想在年度宴会程序中,以能够用于天生显现目次的格局利用一个只要称号的列表。
寻觅不久就要更新其成员资历的League成员,然后发送电子邮件关照他们。
编纂成员项目(究竟,在更新成员资历时,我们将要更新他们的停止日期)。
寻觅分享配合乐趣的成员。
使这个目次联机。
关于如许一些义务,我们将编写从命令行上运转的剧本。其他义务,我们将在7.4节“在Web使用程序中利用DBI”中创立剧本,能够与Web服务器共同利用。在本章的最初,我们将仍有很多有待完成的方针。将在第8章“PHPAPI”中,完成残剩的方针。

天生汗青联盟目次

我们的方针之一是能以分歧格局发生汗青联盟目次的信息。我们将天生的最复杂格局是一个年度宴会程序的成员名列表。那多是一个复杂的无格局文本列表。它将成为创立这个程序的一部分较年夜文档,以是,我们所必要的就是能够粘贴到文档中的一些内容。
关于可显现的目次,则必要一种比无格局文本更好的暗示办法,缘故原由是我们想把一些内容更精密地格局化。这里一个公道的选择为RTF(丰厚的文本格局RichTextFormat),它是由Microsoft开辟的一种格局,能够由很多字处置程序来辨认。固然,Word就是这类程序之一,可是很多其他的软件,如WordPerfect和AppleWork也是能够辨认的。分歧的字处置程序对RTF的撑持水平也有所分歧,可是我们将利用由即便对最初级别RTF都确信的任何字处置程序所撑持的全体RTF划定的一个基础子集。
天生宴会列表和RTF目次格局的历程实质上是一样的:公布查询来检索这些项目,然后运转将每一个项目提取和格局化的轮回。给出了基础的类似的地方湍芎芎玫乇苊獗嘈戳礁龇挚慕疟尽K裕颐潜嘈匆桓龅ザ赖慕疟gen_dir,它能够以分歧的格局从这个目次天生输入。我们能够如许构造这个剧本:
1)在编写进项目内容之前,完成这个输入格局大概必要的任何初始化。宴会程序成员列表不必要任何特别的初始化,可是我们必要为这个RTF版本编写一些初始的把持言语。
2)提取和显现每一个项目,将我们要输入的范例得当地格局化。
3)处置完一切的项目以后,还要完成任何须需的扫除和停止。除这个RTF版本必要的一些封闭把持言语之外,宴会列表不必要特别的处置。
未来,我们大概想利用这个剧本以其他格局编写输入,以是我们经由过程设置“转换盒”――每一个输入格局都有一个元素的散列,使它成为可扩大的。每一个元素都指定对给定格局天生得当输入的函数:初始化函数、编写项目函数和扫除函数以下所示:
[img=479style=,265src=]http://www.ckuyun.com/[/img]
由一个格局名(在这类情形下的“banquet”和“rtf”)标识转换盒的每一个元素。我们将编写这个剧本,以便在运转它时能够在命令行中指定想要的格局:
%gen_dirbanquet
%gen_dirrtf
经由过程以这类体例设置转换盒,我们能够很简单地增添新格局的功能:
1)编写三个格局化函数。
2)向转换盒增添一个指向那些函数的新元素。
3)为了以新的格局发生输入,挪用gen_dir,并在命令行中指定这个格局名。
依照命令行中的第一个参数所选择的得当转换盒项目标代码以下所示。它是因为输入格局的称号为%switchbox散列中关头字。假如在转换盒中不存在如许的关头字,则这个格局是有效的。不必要这个代码中的硬连线格局;假如向转换盒增添新的格局,则主动地检测它。假如在命令行中没有指定格局名,大概指定了一个有效的称号,则这个剧本发生毛病动静,并显现一列同意的称号:
[img=461style=,199src=]http://www.ckuyun.com/[/img]
假如在命令行指定了一个无效的格局名,则前述的代码设置$func_hashref。它的值将是指向选择了格局输入的编写函数的散列援用。然后我们能够运转这个选择项目标查询。以后,我们挪用初始化函数、提取和显现这些项目,并激活扫除函数:
[img=477style=,353src=]http://www.ckuyun.com/[/img]
由于某种缘故原由,提取项目标轮回利用了fetchrow_hashref()。假如这个轮回提取数组,则这个格局化函数必需晓得列的序次。它大概经由过程会见$sth->{NAME}属性(它含有前往序次的列名)来失掉,但为何干扰呢?经由过程利用散列援用,格局化函数将只能定名那些想利用$entry_ref->{col_name}的列值。那样效力就十分低,但它简单做到,并可用于想天生的任何格局,由于我们晓得我们必要的任何域都在散列中。
残剩的事情就是为每种输入格局编写这些函数(也就是说,经由过程转换盒项目为这些函数定名)。
1.天生宴会程序成员列表
关于这类输入格局,我们只想要成员的姓名。不必要初始化或扫除挪用。只必要一个项目格局化函数:
[img=225style=,19src=]http://www.ckuyun.com/[/img]
[img=487style=,201src=]http://www.ckuyun.com/[/img]
format_banquet_entry()的参数是行的列值的散列援用。这个函数将名和姓连在一同,加上大概呈现的任何后缀。这里的秘诀是如“Jr.”或“Sr.”后缀的后面应当有一个逗号或空格,可是如“II”或“III”后缀的后面只能为一个空格:
[img=160style=,66src=]http://www.ckuyun.com/[/img]
由于字母‘I’、‘V’和‘X’掩盖了一切天生的数字,从第1到第39,以是我们可使用上面的测试来断定是不是增添一个逗号:
[img=392style=,20src=]http://www.ckuyun.com/[/img]
和称号放在一同的format_banquet_entry()的代码也是这个目次的RTF版本将必要的一些内容。但是,并非复制format_rtf_entry()中的代码,让我们将它填进函数中:
[img=493style=,226src=]http://www.ckuyun.com/[/img]
将断定称号的字符串放在format_name()函数中,将把format_banquet_entry()函数削减到几近没有:
[img=298style=,67src=]http://www.ckuyun.com/[/img]
2.天生显现格局的目次
天生这个目次的RTF版本比天生宴会程序成员列表更要辣手一些。起首,我们必要从每一个项目中显现更多的信息。其次,我们必要用每一个项目发生一些RTF把持言语来完成我们想要的感化。RTF文档的最小框架是如许的:
[img=183style=,48src=]http://www.ckuyun.com/[/img]
[img=269style=,34src=]http://www.ckuyun.com/[/img]
这个文档用花括号‘{’和‘}’作为入手下手和停止。RTF关头字用反斜线标记入手下手,而且文档的第一个关头字必需为tfn,n为这个文档对应的RTF划定的版本号。假如按我们的目标,0就对照符合。
在这个文档的外部,我们指定字体表来讲明这些项目所利用的字体。字体表信息列在组中,由含有前导的fonttbl关头字和一些字体信息的花括号构成。在框架中申明的这个字体表把字体号0界说为Times(我们只必要一个字体,可是假如想显现得更好一些,可使用多种字体)。
上面的一些唆使设置了缺省格局作风:plain选择无格局的格局,f0选择字体0(我们已在字体表中界说为Times),fs24设置字体巨细为12个点阵(fs前面的数目暗示半个点阵的巨细)。设置页边空缺并非必须的;年夜多半的字处置程序将供应公道的缺省值。
要想失掉一个十分复杂的办法,能够将每一个项目显现为一系列的行,每行上都有一个标号。假如对应于特定输入行的信息缺掉,则疏忽这个行(比方,没有电子邮件地点的成员没有显现“Email:”行)。一些行(如“Address:”行)由多个列(街道、乡村、州、邮政编码)中的信息组成,以是这个剧本必需可以处置缺掉值的各类组合。这里是我们将利用的输入格局的样例:
[img=369style=,81src=]http://www.ckuyun.com/[/img]
关于显现的格局化项目,RTF的暗示办法以下所示:
[img=398style=,81src=]http://www.ckuyun.com/[/img]
要想使“Name:”举动粗体,则在它的后面加(前面有个空格)来翻开粗体,并用0来封闭粗体。每行在末了都有一个段标志符(par)来告知字处置程序移到下一行――没有太庞大的事变。
初始化函数发生前导RTF把持言语(请注重,两个反斜线标记取得输入中的一个反斜线标记):
[img=303style=,98src=]http://www.ckuyun.com/[/img]
相似地,扫除函数发生停止把持言语(其实不太多!):
subrtf_cleanup
{
print}
";
}
真实的事情与格局化这个项目有关,即便这个义务绝对复杂。次要庞大点是将地点字符串格局化,并断定应当显现哪一个输入行:
[img=560style=,272src=]http://www.ckuyun.com/[/img]
固然,不必限于这类特别的格局化作风。能够变动怎样显现任何域的办法,以是经由过程复杂地变动format_rtf_entry(),能够几近恣意地变动显现的目次。用它原始格局的目次(一个字处置文档),是何等不简单做的事变!
gen_dir剧本如今完成了。经由过程运转以下这些命令,我们能够以恣意一种输入格局天生这个目次:
%gen_dirbanquet>name.txt
%gen_dirrtf>directory.rtf
在Windows中,我能够运转gen_dir,则这些文件筹办从基于Windows字处置程序的外部利用。在UNIX中,我可就以运转下面那些命令,然后将这些输入文件以邮件情势发给本人作为附件,以即可以从我的Macintosh中猎取它们,并将它们加载到字处置程序中。我偶然利用mutt邮寄程序,它同意利用-a选项从命令行指定附件。能够以下发送给本人一个具有这两个附加文件的动静:
%mutt-aname.txt-adirectory.rtfpaul0snake.net
其他邮寄程序大概也同意创立附件。大概,能够以其他意义传输这些文件,如FTP。不管怎样,在这些文件被放到想放的中央以后,读取这个称号列表,并将它粘贴到年度程叙文档,大概在可辨认RTF的任何字处置程序中读取RTF文件,这都是较简单的。DBI使我们从MySQL中抽取想要的信息很简单,Perl的文本处置才能使我们将这些信息放在指定的格局中很简单。MySQL不供应信息输入的任何特别体例,但没有干系,由于将MySQL的数据库处置才能集成到如Perl的言语中其实不吃力,而这些言语具有极好的文本处置才能。

发送成员资历更新关照

看成为字处置文档保护汗青联盟目次时,断定必要关照哪一个成员其成员资历应当更新,这是件泯灭工夫而且简单呈现毛病的事变。既然我们在数据库中有信息,那末让我们看看怎样主动地处置更新关照。我们想标识必要经由电子邮件更新的成员,如许我们就不用经由过程电
话或邮件与他们接洽了。
我们必要做的事变就是断定哪一个成员在某些天之内快到更新的工夫了。这个的查询触及一个绝对复杂的日期盘算:
SELECT...FROMmember
WHEREexpiration<DATE_ADD(CURRENT_DATE,INTERVALcutoffDAY)
cutoff暗示我们批准的可同意偏差的天数。这个查询选择在几天以内快到更新工夫的成员项目。作为特别情形,停止点值为0,寻觅停止日期已过的成员(也就是说,实践上已停止了的那些成员)。
我们标识了限定关照的这些纪录以后,我们对它们应当怎样办呢?一个选择是间接从一样的剧本中发送邮件,可是,起首审视不发送任何动静的列表大概有效。因为这个缘故原由,我们将利用一个两阶段的办法:
阶段1:运转剧本need_renewal来标识必要更新的成员。可反省这个列表,大概可使用它作为将更新关照发送到第2阶段的输出。
阶段2:运转剧本renewal_notify,它经由过程电子邮件向成员发送“请更新”的关照。这个剧本应当关照您不具有电子邮件地点的成员,以即可以用其他体例与他们接洽。
在此义务的第一部分中,need_renewal剧本必需标识哪一个成员必要更新。它的操纵以下所示:
[img=463style=,459src=]http://www.ckuyun.com/[/img]
need_renewal剧本的输入以下所示(由于是针对以后日期断定的了局,而您读这本书的工夫和我誊写它的工夫将是分歧的,以是将取得分歧的输入)
[img=459style=,57src=]http://www.ckuyun.com/[/img]
能够察看到,处于正数天数的那些成员资历必要更新。正数意味着我们已过时了(当手工地保护纪录时,便可能产生这类情形;有些人从漏洞中滑失落了。既然我们在数据库中有了这些信息,那末我们要寻觅在后面丧失的几团体)!
更新关照义务的第二部分触及了经由过程电子邮件发送关照的剧本renewal_notify。要想使renewal_notify更简单利用,则我们可使它撑持三类命令行参数:成员干系ID号码,电子邮件地点和文件名。数值的参数暗示成员资历ID值,带有字符‘@’的参数暗示电子邮件的地点。其他任何事变都注释为应当读取的文件名,以便找到他们的ID号码或电子邮件地点,能够间接在命令行中如许做,大概经由过程将它们在文件中列出往复做(出格是,可使用need_renewal的输入作为renewal_notify的输出)。
关于要发送关照的每一个成员,此剧本查找响应的member表项目,抽取电子邮件地点,并向谁人地点发送一条动静。假如此项中没有电子邮件地点,则renewal_notify天生一条动静,关照您必要以一些其他体例与这些成员接洽。
要想发送电子邮件,renewal_notify翻开与sendmail程序的管道,并将这封邮件推进此管道中(在Windows下不克不及如许操纵,Windows中没有sendmail。大概必要寻觅发送邮件的模块来取代它利用)。在此剧本开首四周,将到sendmail的路径名设置为参数。大概必要变动该路径,由于sendmail的地位随体系的变更而变更:
#changepathtomatchyoursystem
my($sendmail)="/usr/lib/sendmail-t-oi";
次要参数处置轮回的操纵以下所示。假如在命令行没有指定参数,则我们读取尺度的输入作为输出。不然,我们经由过程将参数传送给interpret_argument(),将它分类为ID号、电子邮件地点大概文件名来处置每一个参数:
[img=416style=,194src=]http://www.ckuyun.com/[/img]
函数read_file()读取了文件的内容(假定已翻开),并检察每行的第一个域(假如我们将need_renewal的输入作为renewal_notify的输出,则每行都有多少域,可是我们只想检察第一个域)。
[img=451style=,211src=]http://www.ckuyun.com/[/img]
interpret_argument()函数将每一个参数分类,以便断定它是ID号码、电子邮件地点仍是文件名。关于ID号码和电子邮件地点,它查找得当的成员项目,并将它传送给notify_member()。我们必需注重由电子邮件所指定的成员。两个成员具有一样的地点是大概的(比方,丈夫和老婆),而且我们不想将一条动静发送给不克不及用这条动静的人。为了不这一点,我们查找了与电子邮件地点绝对应的成员的ID号码,来确保内容的准确。假如此地点和一个以上的ID号码婚配,则它是不断定的,我们在显现一条告诫动静后疏忽它。
假如参数看起来不像ID号码或电子邮件地点,则将它作为文件名读取为进一步的输出。在这里,我们也必需当心――为了不无量轮回的大概性,假如我们已读取一个文件,则我们不想再读取文件:
[img=511style=,670src=]http://www.ckuyun.com/[/img]
实践上,发送更新关照的notify_member()函数的代码以下所示。假如得出这个成员没有电子邮件地点,则甚么也不做,可是notify_member()显现一条告诫动静,以便晓得必要以其他某种体例与该成员接洽。能够挪用具有这条动静中所显现的这个成员资历ID号码的show_member,来检察全体项目―比方,找出这个成员的德律风号码和通讯地点。
[img=459style=,578src=]http://www.ckuyun.com/[/img]
用它大概取得更好的内容―比方,经由过程向member表中增添一列来纪录比来更新的提醒是什么时候发送进来的。如许做将有助于制止过于频仍地发送关照。实践上,我们只需假定不存在约莫每个月运转一次以上的程序。
如今运转这两个剧本,从而能够如许利用它们:
%need_renewal>junk
%(看一看junk,反省它是不是公道)
%renewal_notifyjunk
要想关照单个的成员,能够经由过程ID号码或电子邮件地点指定它们:
%need_renewl18g.steve@pluto.com

汗青联盟成员项目编纂

我们入手下手发送更新关照以后,假定我们关照的一些人将更新他们的成员资历是个平安的措施。当这类情形产生时,我们将必要一种更新其所具有的新的停止日期项的办法。下一章中,我们将开辟一种办法,在Web扫瞄器上编纂成员纪录,可是在这里,我们将创建一个命
令行剧本edit_member,同意用提醒项的各部分新值的办法来更新项目。其操纵以下:
假如在命令行上无参数挪用,则edit_member假定您想输出一个新的号码,提醒放在成员项目中的初始信息,并创立新的项目。
假如在命令行上挪用时带有成员ID号码,则edit_member查找这个项目标已有内容,然后提醒更新每列。假如输出一列的值,则其交换以后的值。假如按Enter键,这列其实不变动(假如不晓得成员的ID号码,能够运转show_memberlast_name来查找其内容)。
假如只想更新成员的停止日期,则同意编纂全体项目标这类体例多是不用要的过分举动。另外一方面,相似如许的剧本也供应了一种复杂的通用目标体例,来更新一个项目标任何部分而不用懂得SQL的任何常识(一种特别的情形为edit_member不同意变动member_id域,由于当创立一个项目时,主动地分派这个域,而且在今后不克不及变动)。
edit_member必要懂得的第一件事为member表中这些列的称号:
[img=476style=,84src=]http://www.ckuyun.com/[/img]
然后我们能够输出主体轮回:
[img=499style=,499src=]http://www.ckuyun.com/[/img]
创立新成员项目标代码以下所示。它哀求每一个member表列,然后公布一条INSERT语句以增添一条新纪录:
[img=235style=,113src=]http://www.ckuyun.com/[/img]
[img=490style=,504src=]http://www.ckuyun.com/[/img]
new_member()所用的提醒例程以下所示:
[img=415style=,397src=]http://www.ckuyun.com/[/img]
col_prompt()带有$show_current参数的缘故原由是,当这个剧本用于更新项目时,我们也对已有成员项目哀求的列值利用这个函数。当创立新的项目时,$show_current将为0,由于以后没有值能够显现。在编纂一个已有项目时,它将为非零。后一种情形中的提醒将显现以后的值,用户能够复杂地经由过程按Enter键来承受。
编纂已有成员的代码相似于创立新成员的代码。但是,我们有一个可操纵的项目,以是提醒例程显现以后项目标值,而且edit_member()函数公布一条UPDATE语句,而不是INSERT语句:
[img=518style=,657src=]http://www.ckuyun.com/[/img]
edit_member的成绩为它不举行任何输出值校验。关于member表中的年夜多半域,都没有甚么校验――它们只是字符串域。可是关于expiration列,实践上应当反省输出值,以便确保它们看起来像日期。在一样平常方针的数据输出使用程序中,大概想抽取有关表的信息,以便断定它的一切列的范例。然后,大概依照那些范例上的束缚前提来校验。那就比我在这里想寻找的内容触及得更多,以是我只在col_prompt()函数中增添一个疾速办法,以便假如列名为“expiration”,则反省输出的格局。最低限制的日期值反省能够如许来做:
[img=280style=,63src=]http://www.ckuyun.com/[/img]
[img=467style=,201src=]http://www.ckuyun.com/[/img]
这个模板测试了非数字字符分开的三个序列的数字。这只是反省的一部分,由于它没有侦测如“1999-14-22”的值为有效。要想使剧本更好,则应当给它更严厉的日期反省和其他反省,如必要名和姓的域,就应当给非空值。
一些其他的改善多是,假如没有变动列,则跳过这个更新,当用户正在编纂它时,假如其他一些人已变动了这笔记录,则关照这个用户。能够经由过程保留成员项目列的原始数据来做到这一点,然后,编写UPDATE语句来只更新那些已变动的列。假如没有,则乃至不必要公布这条语句。一样,关于每一个原始列值,能够编写WHERE子句来包含ANDcol_name=col_val。假如其他一些人已变动了这笔记录,则这大概招致UPDATE失利,此时它的反应为,两团体要同时变动这个项目。

寻觅配合乐趣的汗青联盟成员

汗青联盟秘书的义务之一就是处置成员的哀求,这些成员大概请求对美国汗青范畴内特别时代或特别人物(如在年夜冷落中大概亚伯拉罕・林肯的性命)感乐趣的其别人清单。当在字处置程叙文档中保护这个目次时,利用字处置程序的“Find”功效,能够十分简单地找到如许的成员。但是,发生一列只含有及格成员的项就要坚苦一些,由于它触及大批的拷贝和粘贴。利用MySQL,事情就变得简单很多,由于我们能够只运转以下如许的查询:
SELECT*FROMmemberWHEREinterestsLIKE"%lincoln%"
ORDERBYlast_name,first_name
不幸的是,假如在mysql客户机程序运转这个查询,则了局看上往并非十分好。让我们把大批的DBI剧本和天生较大度的输入的interests放在一同。起首,反省一下剧本,确保在命令行最少有一个定名的参数,由于假如没有一个定名的参数就没有内容能够搜刮。然后,关于每一个参数,剧本在member表的interests列上运转一个查询:
[img=323style=,33src=]http://www.ckuyun.com/[/img]
为了搜刮关头字字符串,我们在每边都放了通配符‘%’,以即可以在interests列的任何中央都能够找到这个字符串。然后,我们显现相婚配的项:
[img=393style=,166src=]http://www.ckuyun.com/[/img]
[img=373style=,147src=]http://www.ckuyun.com/[/img]
这里没有呈现format_entry()函数。它与gen_dir剧本的函数format_rtf_entry()在实质上是不异的,但format_entry()函数往失落了RTF把持字。

联机汗青联盟目次

在7.4节中,我们将入手下手编写毗连到MySQL服务器并抽失信息的剧本,还要编写以Web页面情势在客户机的Web扫瞄器中呈现的信息。那些剧本依照客户机哀求静态地天生了HTML。在我们抵达那一点之前,让我们经由过程编写天生能装载到Web服务器文档树中的静态
HTML文档的DBI代码,入手下手思索有关的HTML。以HTML格局创立的汗青联盟目次是最好的选择,由于我们的方针之一就是不管怎样要使目次联机。
一样平常来讲,HTML文档有点像上面如许的布局:
[img=452style=,179src=]http://www.ckuyun.com/[/img]
为了以这类格局天生目次,编写完全的剧本关于你来说其实不需要。回忆一下,当我们编写gen_dir剧本时,我们利用了可扩大的框架,因而,为了以其他格局发生目次而拔出了代码。这意味着假设代码天生了HTML输入,我们则必要编写文档初始化和扫除的函数,和格局化独自项一样。然后我们必要创立转换盒元从来指向这些函数。
只显现出的联机文档十分简单地分化为能够由初始化函数和扫除函数处置的叙言和扫尾部分,和由项目格局化函数天生的两头部分。HTML初始化函数天生级别1题目的每部分,而扫除函数天生封闭</BODY>和</HTML>标志的部分:
[img=476style=,240src=]http://www.ckuyun.com/[/img]
一样平常来讲,真实的事情在于格局化项目。但即便如许也不太坚苦。我们能够拷贝format_rtf_entry()函数,确保项目中的任何特别字符都被编码,而且用HTML标出的标记交换RTF把持字:
[img=508style=,421src=]http://www.ckuyun.com/[/img]
如今我们把另外一个元素加到转换盒中,指出编写HTML的函数,而且完成对gen_dir的改正:
[img=481style=,355src=]http://www.ckuyun.com/[/img]
为了发生HTML格局的目次,运转上面的命令并在Web服务器的文档树中安装了局输入文件:
%gen_dirhtml>directory.html
当更新目次时,能够再次运转命令来更新联机版本。另外一个计划是创建周期性实行的cron功课。那就是说,联机目次将被主动地更新。比方,我大概利用相似于这个的crontab项在天天凌晨4点运转gen_dir:
04****/u/paul/samp_db/gen_dir>/usr/local/apache/htdocs/directory.html
这个cron功课所运转的用户必需同意它们都实行位于samp_db目次中的剧本,并将文件编写到Web服务器的文档树中。只需每年花费2000到5000美元。无论你是自掏腰包来创建一个新兴公司,还是得到了风险投资商的赞助,使用MySQL都可以降低你所需要的人力成本。
乐观 该用户已被删除
9#
发表于 2015-3-22 02:10:36 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
柔情似水 该用户已被删除
8#
发表于 2015-3-15 15:17:22 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
兰色精灵 该用户已被删除
7#
发表于 2015-3-7 22:25:07 | 只看该作者
所以你总能得到相应的升级版本,来满足你的需求。
蒙在股里 该用户已被删除
6#
发表于 2015-2-25 14:28:25 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
小妖女 该用户已被删除
5#
发表于 2015-2-8 12:24:58 | 只看该作者
现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.
老尸 该用户已被删除
地板
 楼主| 发表于 2015-2-2 22:13:21 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
只想知道 该用户已被删除
板凳
发表于 2015-1-25 13:14:13 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
再见西城 该用户已被删除
沙发
发表于 2015-1-19 10:31:04 来自手机 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 21:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表