仓酷云

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

[学习教程] ASP教程之ASP静态网页制造中利用SQL语句的办法

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

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

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

x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。sql|静态|网页|语句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子句设置查询前提
举个例子,假设你只盘算掏出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"是文本范例而非数字范例。
3,对照运算符:LIKE、NOTLIKE和BETWEEN
对照运算符指定从表内掏出数据的内容局限。你能够用它们来创立过滤器以便减少recordset的局限,促使其只保留给定义务下你体贴的信息。
你已在下面掏出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_emailISNOTNULLANDc_purchase=1ORc_purchase=2ANDc_lastnameLIKEA%"
就你今朝所把握的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_phoneFROMcustomersWHEREc_firstnameLIKE‘A%’andc_emailaddressNONULLORDERBYc_lastname,c_firstname"
整句照下面分化以后明显好读多了!在举行调试的时分,你也许更乐于多敲几个字符把程序改得更好读些。不外你可要记着了,在关闭引号之前大概在翻开引号以后你必要增添空格,如许才干包管字符串联接起来的时分你没有把几个词凑到了一块。
5,入手下手实行
在学会了SELECT语句的机关和用处以后你就该进修怎样利用它了。在你所把握的数据库工具下,这大概意味着你得按下某个写着“实行”字样的按钮。在ASP网页上,能够当即实行SQL语句也能够看成存储历程挪用。
一旦创立了SQL语句,你还得想法会见其查询了局。明显,这里的关头就是ASPrecordset。为了充实使用你更加熟习的SQL妙技,你必要调剂惯例ASP网页上最常接纳的recordset:
Dimrs
Setrs=Server.CreateObject("ADODB.Recordset")
rs.OpenSQL,Conn,1,2
这里Conn就是数据库毗连声明,而独一的修正就是在rs.Open,以后用包括SQL语句的变量取代了要查询的数据表的称号。
这类办法的长处之一是你能够指定游标范例(如以上1,2所示)。
实行SQL
你还能够用松散的一行代码实行SQL语句来创立recordset。以下是语法:
Dimrs
setrs=Conn.Execute(SQL)
在上例中,你所看到的SQL是你寄存本人SQLSELECT语句的变量。该代码行“运转”SQL语句(大概说对数据库举行查询),拔取数据并把数据寄存在recordset内,在上例中就是变量rs。这类办法的次要弱点是你不克不及选择本人想接纳的游标范例。相反,recordset老是用前向游标翻开。
由于游标的原因,你也许盘算熟习两种创立recordset的办法。间接实行查询节俭了键进字符所损耗的工夫,但那样的话你就得接纳默许的游标了,如许有大概遭受常常不克不及一般运转的偏差。不论你详细接纳哪一种举措,二者之间的最年夜的不同也不过乎代码简练与否。在不思索你获得甚么字段、你的尺度是甚么的条件下,也不论你怎样存储数据,接纳SQL式的recordset在体积上会比ASP上翻开的尺度recordset要小很多,更别提操纵起来的浅易性了。究竟,经由过程过滤数据,你打消了泯灭工夫的if-then测试和大概用到的轮回。
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常数。只必要在页面上包括该文件便可),然后你就能够用adCmdStoredProc这类名字了。如许,未来你再看到的时分更简单了解以上被存储的查询究竟是个甚么意义。
7,ORDERBY
从Access数据库当选取纪录有件最使人沮丧的事变,它们是以如何的按次输出到数据库内就依照如何的按次出来。就算你在Access情况内接纳SortBy来改动纪录视图,数据表内的纪录按次也并没有产生改动。
假如你正在利用ASPrecordset在网页上写出纪录,那末你也许晓得乱纷繁的按次是多使人疾苦的事。可是你大概不能不常常得面临这一成绩,由于其实不存在甚么复杂便利的办理计划。幸亏ORDERBY能够简化这一困难。
为了对你的了局排序,只需在SELECT语句开端加上ORDERBY,然后指定你必要排序的参照列便可。因而,假如你想要依据主顾的姓氏对Customers表排序,那末你能够编写以下的查询语句:
SQL="SELECTc_lastname,c_firstname,c_emailFROMCustomersORDERBYc_lastname"
如许,只需你创建了recordset并且入手下手把了局写到屏幕上,你就会瞥见数据依照字母按次分列起来了。
上面是对表的操纵:
只复制a表的布局到b表(不复制数据)
sql="select*intobfromawhere11"
sql="select*intobfromawhere1=0"
复制a表的布局和数据到b表
sql="select*intobfroma"
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 13:24:02 | 只看该作者
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送工具的,例如Response.Write
乐观 该用户已被删除
板凳
发表于 2015-1-22 05:50:28 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
因胸联盟 该用户已被删除
地板
发表于 2015-1-30 23:21:08 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
5#
发表于 2015-2-6 16:48:59 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
小魔女 该用户已被删除
6#
发表于 2015-2-17 10:01:45 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
深爱那片海 该用户已被删除
7#
发表于 2015-3-5 19:27:09 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-12 12:26:51 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 19:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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