《SQL基础知识.docx》由会员分享,可在线阅读,更多相关《SQL基础知识.docx(38页珍藏版)》请在优知文库上搜索。
1、第三局部操作数据:SQ1.本局部内容SQ1.基础中级SQ1.高级SQ1.第10章SQ1.基础本章内容SQ1.介绍使用SE1.ECT语句从表中取数据创立新表字段属性向表中添加数据删除和修改表为了建立交互站点,你需要使用蚊据库未存储来自访问者的信息。例如,你要建立一个职业介绍效劳的站点,你就需要存储诸如个人向历,所感兴提的工作等等这样的信息。创立动态同叶也需要使用数据库.如果你怂显示符合来访者要求的呆好的工作,你就帑要从数据库中取出这份工作的信息.你将会发现,在许多情况下得要使用数据库。在这一章里,你将学会怎样使用“结构化查询语言”(SQ1.)来操作数据库,SQ1.法盲是般据库的标准语言。Acti
2、veSverPages中,无论何时你要访问一个数据库.你就要使用SQ1.语言。因此.学提好SQ1.对ASP编程是生常重要的.注意:你可以把“SQ1.读作-seque1.,也可以按单个字母的读音读作S-Q-1.4两种发音标是正确的,每种发音各有大量的支椅者.在本书里,认为“SQ1.”读作seque1.通过这一章的学习,你将理解怎样用SQ1.实现数据库查询.你将学会怎样笠用这种丧询从蚊据表中取出信息.最后,你将学会怎样设计和建立囱己的数据库。注意:通过下面几章就SQ1.的介绍.你将对SQ1.有足够的了解,从而可以有效地使用ACtiVeSeVerPages。但是.SQ1.是一种复杂的语言.本书不可能
3、包括它的全部细节。要登首掌握SQ1.语言,你常要学习在MiCroSof1.SQ1.Sover中使用SQ1.你可以到附近的书店去买一本ZiCroSof1.SQ1.Sever6.5.SQ1.介绍:本书假设你是在SQ1.操作MiCroSoftSQ1.Sever的数据库.你也可以用SQ1.操作许多其它类型的数据库.SQ1.是操作/据库的标准语言。(事实上,关于SQ1.语音有一个专门的ANSI标准)注意:不要在你的站点上试图用MicrosoftAccess代替MicrosoftSQ1.Sever.SQ1.Sever5T以同时效劳于许多用户,如果你希曳你的站点有较高的访问率,MSACCeSS是不能胜任的。
4、在学习SQ1.的细节之前,你需要理解它的苒大构点。一个特点容易单握.另一个掌握起来有点困难.第一个特点是所有SQ1.数据库中的数崇都存偌在表中.一个表由行和列组成.例如.下面这个简单的表包括name和e-mai1.address:NameEmai1.AddressBi1.1.GatespresidentC1.intonpresiStephenUa1.ther这个表有两列(列也称为字段,域):NaBC和EmaiIAddress.有三行,每一行包含一组数据,一行中的数据俎合在一起讲为一条记录.无论何时你向表中添加新数禺,你就添加了一条新记录,一个数据表可以有几十个记录,也可以有几千甚至几十亿个记录
5、。虽然你也许永远不济要存猪十亿个Emai1.地址,但知道你能这样做总是好的,也许有一天你会有这样的需要。你的数据库很有可能也含几十个表,所有存储在你数据库中的信息都被存储在这些表中.当你考虑怎样把信息存储在数据库中时,你应该考虑怎样把它们存储在表中。SQ1.的第二个绮点有些理于掌握.这种话亩被设计为不允许你按照某种特定的顺序未取出记录.因为这样做会降低SQ1.SeYer取记录的效率,使用SQ1.,你只能按查询条件来读取记录.当考虑如何从表中取出记录时,自然会想我按记录的位置读取它们。例如,也许你会尝试通过一个循环,逐个记录地扫描.来选出特定的记录。在使用SQ1.时,你必须训练自己,不要有这种思
6、路。假设你想选出所有的名字是“Bi1.1.Ga1.es的记录,如果使用传统的编程语言,你也许会构造一个循环,逐个查看表中的记录,看名字城是否是aBi1.1.Gates-.这种选择记录的方法是可行的,但是妓军不高。使用SQ1.你只要说,“选择所有名字域等于BiI1.GateS的记录.SQ1.就会为你选出所有符合条件的记录。SQ1.会确定实现查询的最正确方法.健设你想取出表中的前十个记录.使用传统的编程语言,你可以做一个循环,取出前十个记录后转束循环.但使用标准的SQ1.查询,这是不可能实现的,从SQ1.的角度来说,在一个米中不存在前十个记录这种概念.开始时,当你知道你不能用SQ1.实现某些你感觉
7、应该能实现的功能,你会受到挫折。你也许会以失撞墙甚至博写怒毒的信件给SQ1.的设计者们。但后来你会认识到,SQ1.的这个料点不仅不是个限制.反而是其长处因为SQ1.不根密位置来读取记或,它读取记录可以很快.僚上所逑,SQ1.有两个特点:所有数据存储在表中,从SQ1.的角度来说,表中的记录没有Ifi序。在下一节,你将学会卷祥府SQ1.从表中选择特殊的记录。使用SQ1.从表中取记录。SQ1.的主要功能之一是实观数据库查询。如果你熟希IntCrne1.引擎,那么你已经熟悉麦河了.你使用查询来取得满足特定条件的信息.例如,如果你想找到有ASP信息的全部站点,你可以连接到YahOo!并执行一个对Acti
8、veSeverPages的慢索,在你输入这个查询后,你会收到一个列表,枭中包括所有其描述中包含接索表达式的站点。多数IUte1.引擎允许逻辑查询。在正辑Jt询中,你可以包括转殊的运算符如AND.OR和NoT,你使用这些运算符来选择特定的记录.例如,你可以用AM)来限制查询结果.如果你执行一个对ACtiVeSeVerPiIgeSANDSQ1.的傻家.你将得到其描述中同时包含AetiVeSeVerPageS和SQ1.的记录。当你需要泯制查询结果时,你可以使用AND,如果你裔要犷展查询的结果.你可以使用退辑操作符OR。例如,如果你执行一个搜索,技余所有的其描述中包含ACtiVeSeVerPageSO
9、RSQ1.的拈点,你收到的列表中将包括所有其描述中同时包含两个表达式或其中任何一不表达式的站点.如果你想从搜俅结果中排除特定的站点,你可以使用NOT.例如.丧询“ActiveSeverPagesANDNOTSQ1.”将返回一个列表,列表中的站点包含ACIiVCSeverPages.但不包含SQ1.。当必须排除特定的记录时.你可以使用MJTo用SQ1.执行的查询与用InteI-net攫华引擎执行的梭索非常相似。当你执行一个SQ1.查询时,通过使用包括近辑运算符的登询条件,你可以得到一个记录列表。此时登询结果是来自一个或多个表。SQ1.查询的句法聿常钩单。假设有一个名为Cmai1.tabIC的表.
10、包含名字和地址两个字段.要程到BinGatCS的ejnai1.地址,你可以使用下面的查询:SE1.ECTemai1.freeemai1._tab1.eWHEREname=Bi1.1.Gates当这个受询执行时,就从名为e三i1.tab1.e的表中读取BmGateS的eBai1.地址.这个简华的语句包括三局部: SE1.ECr语句的第一局都指名要选取的列。在比例中,只有emai1.列被选取。当执行时,只显示emai1.列的值. SE1.ECTT语句的篇二部份指明要从舞个(些)表中查询数据.在此例中,要查询的未名为emui1.tab1.e. 最后.SE1.ECT语句的IIHERE子句指明要选择满足
11、什么条件的记录.在此例中,查询条件为只有nae列的值为BiI1.Gates的记录才被选取.BinGateS很有可能拥有不止一个emai1.地址,如果我中包含BiHGateS的多个Cmai1.地址.用上述的SE1.ECT语句可以读取他所有的emai1.地址。SE1.EeT语句从表中取出所有name字段值为Bi1.IGates的记录的emai1.字段的值。前面说用,瓷询可以在查询条件中包含建辖运算符“假没你想读取Bi1.IGateS或C1.intOn总统的所有em,i1.地址,你可以使用下面的查询语句:SE1.ECTemai1.EROMCmai1.tab1.cWHEREname=,Bi1.1.Ga
12、tesORrame=*presidentC1.inton牝例中的登询条件比前一个复杂了一点。这个语句从表emai1._tab1.e中选出所有name列为Bi1.1.Gates或presidentC1.inton的记录.如果表中含有Bi1.1.GatespresidentC1.inton的多个地址,所有的地址都被读取.SE1.ECT语句的结构看起来很克现.如果你请一个用友从一个表中为你选择一俎记录,你也许以非常相似的力武提出你的要求。荏SQ1.SE1.ECT语句中,你“SE1.ECT特定的列FROM一个表WHERE某些列满足一个朴定的条件*。下一节将介绍怎样执行SQI.查询来选取记录.这将帮助你
13、熟悉用SE1.ECT语句从表中取数据的各种不同方法.使用ISQ1.执行SE1.ECT查询当你安装SQ1.Sever9?,你同时安装了一个叫作ISQ1.w的应用程序.1SQ1.a允许你执行交互的SQ1.瓷询.在把查询包括到你的ASP风页中之前,用ISQ1.w对其进行测试是非常有用的。注意在这本书的第一部份,你学习了怎样安装和配置MiCroSoftSQ1.Sever.如果没有安装SQ1.SeVer或者SQ1.SeVer不能运行,请参阅第三章“安装和使用SQ1.SeVer*.选择任务上SQ1.Svcr程序俎中的ISQ1.W以启动该程序.程序启动时.&先会出现一个对话框.要求为入效劳器信息和登录信息(
14、见图10.1).在SeVer推中,输入你的SQ1.效劳器的名字.如果效劳器正运行在本地计算机上,效劳器名字就是你计算机的名字。在聋录信息相中,输入一个督录帐号和再码或选择使用“可信连接”,ffi后单击Connect按钮。图10.1注港:如果你将SQ1.%ver配置为使用完整平安或混合平安,那么你可以使用可信连接。如果你使用标准平安,你则需要提供用户帐号和雷码.要了解更多信息,参见第三章.如果一切正常,在你单击连接按钮后会出况一个立询窗口,如图10.2所示.(如果右异蒿,请叁考第三章)图10.2在执行查询之前,你需要迷择政据阵。安笠SQ1.SeVer时你已为自己钊立了一个数据库,SQ1.SeVe
15、r迂有洋多系统数据库,如BaSter.mode1.,asdb,fctempdb,方便的是,SQ1.SeVer带有一个好殊的名为PUbS的例子数据库。库PUbS中包含供一个虚拟的出版商使用的各个表。文档中所有的例子程序都是针对这个库来谀计的。本书中的许多例子也使用这个数据序.在交询窗口顶部的DB下拉椎中选择数据库pubs,这样你就选择了数据库.你所有的爻询都将针对这个库中的各个表来执行。现在你可以执行你的第一个查询了。这真让人兴奋!你的第一个登询将针对一个名为autrors的表.表中包含所有为某个虚拟出版商工作的作者的相关数据。单击查询窗口并输入以下的语句:SE1.ECTphoneFROMaut
16、horsWHEREau-nju11e=*Ringer输入完成后.单击执行查询按钮(一个绿色三戏形.看起来像VCR拾放就)。单击此按钮后,任何出现在查询口中的语句均会帔执行.攵询富口会自助变成诘果显示窗口,你可以看到询的结果(见图10.3).你看到的查询结果也许与图10.3所示的不同,在SQ1.seVer的不同版本中,库PUbS中的数抠会有所不同,游SQ1.Sever6.5来说,将会找到两条记录。结果显示窗口中应显示如下内容:phone801826_0752801826_0752(2row(三)affected)S10.3你所执行的SE1.ECT语句从表authors中取出所有名字为Ringer的作者的