仓酷云

标题: ASP编程:ASP教程:第十二篇 数据库查询言语(1) [打印本页]

作者: 若天明    时间: 2015-1-16 22:42
标题: ASP编程:ASP教程:第十二篇 数据库查询言语(1)
ASP在国内异常流行,因为国内大多使用的是盗版的Windows和盗版的SQLServer,而ASP+COM+SQLServer实际上也是一种不错的搭配,其性能也不输于PHP+MYSQL,特别是Windows系统和SQLServer都有图形界面,比APACHE和MYSQL易于维护,因此对于不重视知识产权的国家来说也是一种不错的选择。 原定企图从本篇入手下手就要给人人先容ASP内建的ActiveX组件,可是思索到我们在今后的进修中将会打仗到大批的数据库查询,因而作者一时决意花一到两篇的篇幅向人人扼要先容一些数据库查询言语的基础常识,这实在也是进修ASP所必需把握的一门常识。是不是可以天真地使用数据库查询言语,将间接干系到ASP程序的实行效力等一系列成绩,以是请列位务必器重。  信任良多伴侣都传闻过SQL这个名字,假如你是盘算机方面的内行,SQL的台甫必定是如雷灌耳。那末SQL事实是甚么呢?SQL一词实践上是"StructuredQueryLanguage"布局式查询言语的缩写,是用于对寄存在盘算机数据库中的数据举行构造、办理和检索的一种工具;是一种特定范例的数据库--干系数据库。而把持这类数据库的盘算机程序就是我们常说的DBMS--数据库办理体系。比如:SQLServer、Oracle、Sybase、DB2等等。当用户想要检索数据库中的数据时,就经由过程SQL言语收回哀求,接着DBMS对该SQL哀求举行处置并检索所请求的数据,最初将其前往给用户,此历程被称作为数据库查询,这也就是数据库查询言语这一位称的由来。
  SQL并非象C、COBOL和Fortran言语那样的完全的盘算机言语。SQL没有效于前提测试的IF语句,也没有效于程序分支的Goto语句和轮回语句For或Do。切实的讲,SQL是一种数据库子言语,SQL语句能够被嵌进到另外一种言语中,从而使其具无数据库存取功效。SQL也非严厉的布局式言语,它的句法更靠近英语语句,因而易于了解,年夜多半SQL语句都是直述其意,读起来就象天然言语一样了然。SQL仍是一种交互式查询言语,同意用户间接查询存储数据,使用这一交互特征,用户能够在很短的工夫内回覆相称庞大的成绩,而一样成绩若让程序员编写响应的报表程序则大概要用几个礼拜乃至更长工夫。
  在年夜部分ASP使用程序中我们城市打仗到数据库,而我们在编写ASP使用程序时用来举行数据库操纵的尺度语法恰是SQL,因而SQL语法的主要性是不问可知的。上面,我们就从最经常使用的SQL语句SELECT动手,一步一步地来进修SQL。
  查询是SQL言语的中心,而用于表达SQL查询的SELECT语句则是功效最强也是最为庞大的SQL语句,它从数据库中检索数据,并将查询了局供应给用户。在本文中我们将创建一个名为tianjiao的复杂数据库,该库中寄存了一个叫sales的发卖纪录表,以下所示:
姓名性别人为发卖方针发卖额区域墨客男250080009000上海吴冠军男3000100009999北京雷叫男2000800010000四川雪后代250050006000广州顾一男260090009800年夜连阿卓女200040004000天津熠天男40002000020000天下
  在该表中有六列即六个字段:姓名、性别、人为、发卖方针、发卖额、区域,起首我们用Select语句列出姓名、发卖方针和发卖额:
  Select姓名,发卖方针,发卖额Fromsales
  了局以下:
姓名发卖方针发卖额墨客80009000吴冠军100009999雷叫800010000雪儿50006000顾一90009800阿卓40004000熠天2000020000
  然后,我们再列出一切男性的姓名、发卖方针和发卖额:
  Select姓名,发卖方针,发卖额FromsalesWhere性别="男"
  了局以下:
姓名发卖方针发卖额墨客80009000吴冠军100009999雷叫800010000顾一90009800熠天2000020000
  接上去,我们做一个绝对庞大的查询,列出发卖额年夜于发卖方针的一切男性的姓名、发卖方针和发卖额,而且按发卖方针排序。
  Select姓名,发卖方针,发卖额
  Formsales
  Where发卖额>发卖方针
  And性别="男"
  OrderBy发卖方针
  了局以下:
姓名发卖方针发卖额墨客80009000雷叫800010000顾一90009800熠天2000020000

 人人能够看到,关于复杂查询,SQLSelect语句和英文语法很相象,我们来剖析一下SELECT语句的完全格局,它包含六个子句,个中SELECT和FROM子句是必需的,别的子句能够任选,每一个子句的功效以下:
  1、Select子句列出一切请求SELECT语句检索的数据项。它放在SELECT语句入手下手处,指定此查询要检索的数据项。这些数据项一般用选择表暗示,即一组用“,”离隔的选择项。依照从左到右的按次,每一个选择项发生的一个列的查询了局,一个选择项多是以下项目:
  (1)、列名:标识FROM子句指定表中的列。假如列名作为选择项,则SQL间接从数据库表中每行掏出该列的值,再将其放在查询了局的响应行中。
  (2)、常数:指定在查询了局的每行中都放上该值。
  (3)、SQL表达式:申明必需将要放进查询了局中的值按表达式的划定举行盘算。
  2、From子句列出包括所要查询数据的表,它由关头字FROM后跟一组用逗号分隔的表名构成。每一个标明都代表一个包含该查询要检索数据的表。这些表称为此SQL语句的表源,由于查询了局都源于它们。
  3、Where子句告知SQL只查询某些行中的数据,这些行用搜刮前提形貌。
  4、GroupBy子句指定汇总查询,即不是对每行发生一个查询了局,而是将类似的行举行分组,再对每组发生一个汇总了局。
  5、Having子句告知SQL只发生有GroupBy失掉的某些组的了局,和Where子句一样,所必要的组也用一个搜刮前提指定。
  6、OrderBy子句将查询了局按一列或多列中的数据排序。假如省略此子句,则查询了局将是无序的。
  上面作者将供应一个复杂但有用的使用SQL语句查询的ASP程序供人人参考。
  为了使人人更分明更间接地懂得SQL语法在ASP中的使用,我们先将查询的一切中心历程写成一个名为query2table的SUB,然后使用ASP的服务器端包涵功效挪用该SUB。请将以下语句剪贴到记事簿,保留为subdbtable.inc文件,并置于假造目次asptest下:
  <%
  subquery2table(inputquery)
  setconntemp=server.createobject("adodb.connection")
  conntemp.open"DSN=Student;uid=student;pwd=aspmagic"
  setrstemp=conntemp.execute(inputquery)
  howmanyfields=rstemp.fields.count-1
  统数据库中的列数
  %>
  <tableborder=1><tr>
  <%
  fori=0tohowmanyfields
  %>
  <td><b><%=rstemp(i).name%></B></TD>
  <%next%>
  </tr>
  <%
  dowhilenotrstemp.eof
  %>
  <tr>
  <%fori=0tohowmanyfields
  thisvalue=rstemp(i)
  Ifisnull(thisvalue)then
  thisvalue="?
  假如字段为空,则将变量thisvalue的值界说为一个空格
  endif%>
  <tdvalign=top><%=thisvalue%></td>
  <%next%>
  </tr>
  <%rstemp.movenext
  loop%>
  </table>
  <%
  rstemp.close
  setrstemp=nothing
  conntemp.close
  setconntemp=nothingendsub%>
  完成了SUB的界说历程,鄙人面几个ASP程序中我们只需到场想要利用的SQL查询语句,并挪用该历程就能够十分便利的失掉查询了局。将以下四段代码分离保留为asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp四个.asp文件。
  <HEAD><TITLE>asp11a.asp</TITLE></HEAD>
  <HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswherenamelikeA%%")
将表publishers中一切姓名中有字母A的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>
  <HEAD><TITLE>asp11b.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*fromtitleswhereYear_Published>=1998")
将表titles中一切宣布年份年夜于或即是1998年的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>
  <HEAD><TITLE>asp11c.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswhereamount>10000andsex=male")
将表publishers中一切数目年夜于10000且性别为男的纪录查询出来
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>

  <HEAD><TITLE>asp11d.asp</TITLE></HEAD><HTML><bodybgcolor="#FFFFFF">
  <%
  callquery2table("select*frompublisherswherestateNY")
将表publishers中一切地点乡村不为纽约的纪录查询出来。
  %>
  <!--#includevirtual="/asptest/subdbtable.inc"--></BODY></HTML>
  使用subdbtable.inc文件中的所界说的历程query2table,你就能够十分敏捷地对数据库举行查询,你所要做的只是将“conntemp.open"DSN=Student;uid=student;pwd=aspmagic"”中的数据库称号、用户身份和暗码略加修改,并在挪用query2table时输出想要利用的SQL查询语句便可。是否是很复杂?这就是ASP和SQL的魅力地点!!!
  明天,我们固然用了一整篇的篇幅只进修了一个SQL指令,但请你信任你所取得远分歧于一个DOS指令,SELECT指令使得你能够十分简单地对数据库举行查询,也许在这之前你对数据库查询还一窍不通,可是经由过程本篇的进修,你实在已会利用ASP举行经常使用的数据库查询了,是否是很冲动?鄙人一篇中,作者将持续给人人先容SQL的别的几个基础指令。在停止本文之前,作者在这里要向良多来信的伴侣道歉,因为比来作者事情忙碌,其实得空逐一回覆列位的成绩,请包涵,我会只管将一些罕见的、产生频次较高的成绩在文章中写出来,至于一些不罕见的成绩,我倡议人人到上面这个站点发问,你将会失掉实时的回复。www.onlinechina.net/friend/flybird/bbs/wwwboard.asp?id=1,这是作者至今为止所见的最棒的中文ASP进修站点,由上海的飞鸟掌管,人人务必往看看。
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;
作者: 飘飘悠悠    时间: 2015-1-19 21:23
那么,ASP.Net有哪些改进呢?
作者: 谁可相欹    时间: 2015-1-25 10:14
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
作者: 山那边是海    时间: 2015-2-2 21:38
那么,ASP.Net有哪些改进呢?
作者: 仓酷云    时间: 2015-2-8 06:30
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
作者: 若天明    时间: 2015-2-24 16:58
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
作者: 精灵巫婆    时间: 2015-3-7 12:36
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 乐观    时间: 2015-3-15 05:35
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
作者: 莫相离    时间: 2015-3-21 19:05
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2