仓酷云

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

[学习教程] ASP网站制作之ASP中利用SQL语句教程

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。1.SELECT语句
在SQL的天下里,最最基本的操纵就是SELECT语句了。在数据库工具下间接接纳SQL的时分良多人城市熟习上面的操纵:
SELECTwhat
FROMwhichTable
WHEREcriteria
实行以上语句就会创立一个寄存其了局的查询。
而在ASP页面文件上,你也能够接纳以上的一样平常语法,不外情形略微分歧,ASP编程的时分,SELECT语句的内容要作为字符串赋给一个变量:SQL="SELECTwhatFROMwhichTableWHEREcriteria"
分明了ASP下SQL“措辞”的体例,接上去依样画葫芦便可,只需满意你的必要,传统的SQL查询形式和前提查询都能派用处。
举例申明,无妨假定你的数据库内有个数据表,名字是Products,如今你想掏出这个内外的全体纪录。然后你就编写了上面的代码:
SQL="SELECT*FROMProducts"
以上代码――SQL语句的感化就是掏出表内的全体数据――实行后将会选出数据表内的全体纪录。不外,如果只想从表内掏出某个特定列,好比p_name。那就不克不及用*通配符了,这里得键进详细某列的名字,代码以下:
SQL="SELECTp_nameFROMProducts"
实行以上查询以后Products表内、p_name列的内容就会全被拔取出来。

2.用WHERE子句设置查询前提
有的时分掏出全体数据库纪录大概恰好满意你的请求,不外,在年夜多半情形下我们一般只需失掉部分纪录。如许一来该怎样计划查询呢?固然会更费点头脑了,况且本文也居心不想让你往用谁人甚么劳什子的recordset。
举个例子,假设你只盘算掏出p_name纪录,并且这些纪录的名字必需以字母w打头,那末你就要用到上面的WHERE子句了:
SQL="SELECTp_nameFROMProductsWHEREp_nameLIKEW%"
WHERE关头词的前面随着用来过滤数据的前提,有了这些前提的匡助,只要满意必定尺度的数据才会被查询出来。在以上的例子里,查询的了局只会失掉名字以w打头的p_name纪录。
以上例子中,百分比标记(%)的寄义是唆使查询前往一切w字母打头并且前面是任何数据乃至没无数据的纪录条目。以是,在实行以上查询的时分,west和willow就会从Products表内被拔取出来并寄存在查询里。
就像你看到的那样,只需细心地计划SELECT语句,你就能够限定recordset中前往的信息量,多揣摩揣摩总能满意你的请求。
这些啊还不外是把握SQL用处刚起步。为了匡助你慢慢把握庞大的SELECT语句用法,上面就让我们再来看一下关头的尺度术语:对照运算符,这些玩意都是你在修建本人的SELECT字符串来取得特定命据时要常常用到的。
WHERE子句基本
在入手下手创立WHERE子句的时分,最复杂的体例是接纳尺度的对照标记,它们是<、<=、>、>=、和=。明显,你很快就可以分明以下代码的寄义和详细运转了局:
SELECT*FROMProductsWHEREp_price>=199.95
SELECT*FROMProductsWHEREp_price19.95
SELECT*FROMProductsWHEREp_version=4
注重:这里你会注重到,最初一个例句中的数字4四周加了单引号。缘故原由是如许的,在这个例子中的4是文本范例而非数字范例。由于你会把SELECT语句放到引号中来把它作为一个值赋给变量,以是你也能够在语句中接纳引号。
对照运算符
对照运算符指定从表内掏出数据的内容局限。你能够用它们来创立过滤器以便减少recordset的局限,促使其只保留给定义务下你体贴的信息。
3.LIKE、NOTLIKE和BETWEEN
你已在下面掏出w打头纪录的例子中看到了LIKE的用法。LIKE判断词是一个十分有效的标记。不外,在良多情形下用了它大概会带给你太多的数据,以是在用到它之前最好先开动头脑多想一想本人究竟想取得甚么数据。假定你想掏出5位数字的SKU号码,并且其开首是1开头是5,那末你能够用下划符(_)取代%标记:
SQL="SELECT*FROMProductsWHEREp_skuLIKE1___5"
下划符暗示恣意一个字符。以是在输出“1___5”的情形下,你的搜刮就会限定在满意特定形式的5位数局限内了。
假设你想反其道而行之,要找出一切不婚配“1___5”形式的SKU条目。那末你只必要在方才语句例子中的LIKE后面加上NOT就能够了。
BETWEEN
假定你想掏出必定局限内的数据,并且你事前晓得局限的出发点和尽头,那末你无妨接纳BETWEEN判别词。如今就让我们假定你想拔取给定表内局限在1和10之间的纪录。你能够以下利用BETWEEN:
…WHEREIDBETWEEN1AND10
大概你也能够接纳已熟习的数学判别字句:
…WHEREID>=1ANDID>=10

4.团结语句
我们到今朝为止所谈到的SQL语句绝对较为复杂,假如再能经由过程尺度的recordset轮回查询,那末这些语句也能满意一些更庞大的请求。不外,何须非要拘泥在浅尝则止的基本水准之上呢?你完整能够再增添其他一些标记,好比AND、OR和NOT来完成更壮大的功效。
以上面的SQL语句为例:
SQL="SELECTc_firstname,c_lastname,c_emailFROMcustomersWHEREc_emailIS
NOTNULLANDc_purchase=1ORc_purchase=2ANDc_lastnameLIKE
A%"
就你今朝所把握的SQL常识,以上的例子也不难明释,不外下面的语句并没有很分明地让你看清前提字句是怎样胶合在单一SQL语句中的。
多行语句
在SQL语句欠好懂的情形下,你无妨把全部语句分化为多行代码,然后在现有变量基本上慢慢增添查询语句的各个构成部分并把它存在统一变量内:
SQL="SELECTc_firstname,c_lastname,c_emailaddress,c_phone"
SQL=SQL&"FROMcustomers"
SQL=SQL&"WHEREc_firstnameLIKEA%andc_emailaddressNOTNULL"
SQL=SQL&"ORDERBYc_lastname,c_firstname"
到了最初一句,SQL变量就包括了以下的完全SELECT语句:
"SELECTc_firstname,c_lastname,c_emailaddress,c_phoneFROMcustomers
WHEREc_firstnameLIKEA%andc_emailaddressNONULLORDERBYc_lastname,
c_firstname"
整句照下面分化以后明显好读多了!在举行调试的时分,你也许更乐于多敲几个字符把程序改得更好读些。不外你可要记着了,在关闭引号之前大概在翻开引号以后你必要增添空格,如许才干包管字符串联接起来的时分你没有把几个词凑到了一块。
5.入手下手实行
在学会了SELECT语句的机关和用处以后你就该进修怎样利用它了。在你所把握的数据库工具下,这大概意味着你得按下某个写着“实行”字样的按钮。在ASP网页上,能够当即实行SQL语句也能够看成存储历程挪用。
一旦创立了SQL语句,你还得想法会见其查询了局。明显,这里的关头就是ASPrecordset。在利用非SQL的recordset时,创立recordset的代码一般以下所示:
DimobjRec
SetobjRec=Server.CreateObject("ADODB.Recordset")
objRec.Open"customers",objConn,0,1,2
假如你对ASP对照熟习以上的代码对你可就不生疏了,你应当晓得“customers”暗示你翻开数据库内一个数据表的名字。
翻开recordset
为了充实使用你更加熟习的SQL妙技,你必要调剂惯例ASP网页上最常接纳的recordset:
DimobjRec
SetobjRec=Server.CreateObject("ADODB.Recordset")
objRec.OpenSQL,objConn,0,1,2
这里独一的修正就是在objRec.Open,以后用包括SQL语句的变量取代了要查询的数据表的称号。
这类办法的长处之一是你能够指定游标范例(如以上0,1,2所示)。
实行SQL
你能够用松散的一行代码实行SQL语句来创立recordset。以下是语法:
DimobjRec
setobjRec=objConn.Execute(SQL)
在上例中,你所看到的SQL是你寄存本人SQLSELECT语句的变量。该代码行“运转”SQL语句(大概说对数据库举行查询),拔取数据并把数据寄存在recordset内,在上例中就是变量objRec。这类办法的次要弱点是你不克不及选择本人想接纳的游标范例。相反,recordset老是用前向游标翻开。
由于游标的原因,你也许盘算熟习两种创立recordset的办法。间接实行查询节俭了键进字符所损耗的工夫,但那样的话你就得接纳默许的游标了,如许有大概遭受常常不克不及一般运转的偏差。不论你详细接纳哪一种举措,二者之间的最年夜的不同也不过乎代码简练与否。在不思索你获得甚么字段、你的尺度是甚么的条件下,也不论你怎样存储数据,接纳SQL式的recordset在体积上会比ASP上翻开的尺度recordset要小很多,更别提操纵起来的浅易性了。究竟,经由过程过滤数据,你打消了泯灭工夫的if-then测试和大概用到的轮回。
编写测试用SQL
这里有个技能,很多专业ASP程序员习气在测试网页的时分“编写”本人的SQL语句。如许做能够匡助你调试代码,由于你能够从中看到传送给服务器实行的字符串。而你要做的不过是增添Response.WriteyourVariable在屏幕上显现有关信息。在你把和SQL有关的成绩提交给ASP会商组的时分你就应当附上这些信息。
6.存储查询

当你的查询绝对复杂的时分,每次重新入手下手创立SQL语句也不费甚么光阴,不外,庞大的查询就分歧了,每次都重新来会发生良多开辟毛病。因而,一旦让SQL顺遂地运转起来,你最好把它们存起来,在必要时再挪用它们。如许,哪怕是一个复杂查询你都能随时用上存储的查询语句了。
假定你每周都要给团队做一次呈报,指出今朝存在的营业撑持成绩,这些数据必要从你的数据库当选取,并且要依照日期选择纪录,同时依据你地点团队所接纳的撑持成绩的种别排序。一旦你计划了这一查询,你何须今后每周都从头编写一次呢?不要在你的HTML页面上创立查询,你应当用你的数据库工具创立查询而且保留它。
然后你能够接纳ActiveCommand属性把查询拔出到你的ASP网页。头一两回你大概会以为没啥意义,实在也就几行代码罢了:
SetobjSQ=Server.CreateObject("ADODB.Command")
objSQ.ActiveConnection="databaseName"
objSQ.CommandText="storedQueryName"
objSQ.CommandType=adCmdStoredProc
setobjRec=objSQ.Execute
注重,接纳adCmdStoredProc暗示你已在页面上包括了adovbs.inc文件。该文件界说了你能够依照名字而非数字举行会见的Access常数。只必要在页面上包括该文件便可(<!--#INCLUDE-->),然后你就能够用adCmdStoredProc这类名字了。如许,未来你再看到的时分更简单了解以上被存储的查询究竟是个甚么意义。
7.ORDERBY
从Access数据库当选取纪录有件最使人沮丧的事变,它们是以如何的按次输出到数据库内就依照如何的按次出来。就算你在Access情况内接纳SortBy来改动纪录视图,数据表内的纪录按次也并没有产生改动。

假如你正在利用ASPrecordset在网页上写出纪录,那末你也许晓得乱纷繁的按次是多使人疾苦的事。可是你大概不能不常常得面临这一成绩,由于其实不存在甚么复杂便利的办理计划。幸亏ORDERBY能够简化这一困难。
为了对你的了局排序,只需在SELECT语句开端加上ORDERBY,然后指定你必要排序的参照列便可。因而,假如你想要依据主顾的姓氏对Customers表排序,那末你能够编写以下的查询语句:
SQL="SELECTc_lastname,c_firstname,c_emailFROMCustomersORDERBYc_lastname"
如许,只需你创建了recordset并且入手下手把了局写到屏幕上,你就会瞥见数据依照字母按次分列起来了。

8.纪录统计

断定数据库内有几纪录,大概断定有几纪录到达了某些尺度,这些用ASP完成并不是难事。假如你接纳了准确的游标范例,你能够用RecordCount属性取得纪录数固然也能够用recordset。可是,有个更复杂的举措,这就是在本人的SELECT语句中接纳count(*),代码以下所示:
SQL="SELECTcount(*)FROMCustomers"
大概
SQL="SELECTcount(*)FROMCustomersWHEREc_lastnameLIKEA%"
举例申明,以下代码将选出一些纪录和这些纪录的总数:
SQL="SELECTc_firstname,c_lastname,count(*)FROMCustomersWHEREc_lastnameLIKEA%"
可是你不克不及完成本人的目标。这里接纳的“count”函数实际上是一种汇合函数,意义是只前往单行信息:回覆你提出的成绩。对第1个SELECT语句来讲,成绩是“在客户表内有几笔记录?”查询前往单一的值作为呼应,因而它不克不及同你惯例的查询相组合。假设你但愿失掉其他数据,你必要接纳RecordCount。
汇合函数除“count”以外还包含AVG、MIN、MAX和SUM等。

9.毗连
任何熟习SQL和干系数据库的人都碰见过大批的毗连范例。最复杂的说,毗连(join)会把两个表的内容组合到一个假造表大概recordset内。假设数据表无效地规一化,也许你会常常从某一个表当选出特定的信息再从另外一个表当选出联系关系信息。如许做就必要复杂的“一律毗连(equijoin)”。
缺点:正版成本价格贵(盗版就不说了)、不够安全,大多数服务器用windows系统,没有linux安全
分手快乐 该用户已被删除
沙发
发表于 2015-1-17 18:07:55 | 只看该作者
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
柔情似水 该用户已被删除
板凳
 楼主| 发表于 2015-1-21 06:36:31 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
小魔女 该用户已被删除
地板
发表于 2015-1-30 09:52:24 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
爱飞 该用户已被删除
5#
发表于 2015-2-6 09:45:09 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
因胸联盟 该用户已被删除
6#
发表于 2015-2-15 22:09:42 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
变相怪杰 该用户已被删除
7#
发表于 2015-3-4 15:36:22 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
飘飘悠悠 该用户已被删除
8#
发表于 2015-3-11 20:12:29 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
再现理想 该用户已被删除
9#
发表于 2015-3-19 11:19:03 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
不帅 该用户已被删除
10#
发表于 2015-3-27 22:09:44 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-14 20:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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