标题:asp+SQL(不要跟贴)
只看楼主
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
5.  算术运算符
在列出现的位置上,我们可以使用算术运算符操纵列,对查询的结果进行计算。这些算术运算符包括:+(加)、-(减)、*(乘)、/(除)和%(取模)。
格式:
{CONSTANT | COLUMN_NAME | FUNCTION |(SUBQUERY)}
[{ARITHMETIC_OPERAOR | BITWISE_OPERATOR | STRING_OPERATOR} ……]
例如查询所有书在价格提高10%后的价格和书名信息。
SELECT (PRICE*1.1), TITLE FROM TITLES
6.  基于比较的选择行
格式:
SELECT SELECT_LIST
FROM TALBE_LIST
WHERE EXPRESSION COMPARISION_OPERATOR EXPRESSION
例如查询在加州的作者姓名和城市
SELECT AU_LNAME, CITY
FROM AUTHORS
WHERE STATE='CA'
7.  基于范围的选择行
格式:
SELECT SELECT_LIST
FROM TABLE_LIST
WHERE EXPRESSION [NOT] BETWEEN EXPRESSION AND EXPRESSION
例如查询出版日期在9/30/2002到10/3/2002之间的书名(限制为38字符)和出版日
SELECT convert (char (38), TITLE), PUBDATE
FROM TITLES
WHERE PUBDATE BETWEEN 'T' AND '10/3/2002'
8.  基于列表的选择行
格式:
SELECT SELECT_LIST
FROM TABLE_LIST
WHERE [NOT] EXPRESSION [NOT] IN( VALUE_LIST)
例查询书的类型是MOD_COOK或TRAD_COOK的书名和它的类型
SELECT TITLE, TYPE
FROM TITLES
WHERE TYPE IN ('MOD_COOK', 'TRAD_COOK')
9.  基于字符选择行
查找中,有时需要对字符串进行比较。使用LIKE运算符可以完成对字符串的模糊匹配。
格式:
SELECT SELECT_LIST
FROM TABLE_LIST
WHERE EXPRESSION [NOT] LIKE 'STRING'
例如查询店名中包含BOOK的店铺信息
SELECT STOR_NAME
FROM STORES
WHERE STOR_NAME LIKE '%BOOK%'
10.  基于多个搜索条件选择行
在WHERE子句中,也可以使用“逻辑运算符”连接多个条件,构成一个更复杂的条件进行查询。可以使用以下3种逻辑运算符:AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)。
具体格式如下:
SELECT SELECT_LIST
FROM TABLE_LIST
WHERE [NOT] EXPRESSION {AND/OR} [NOT] EXPRESSION
例如查询书名以T开头或者出版号为0877,而且价格大于16美元的书信息
SELECT convert (char (20), TITLE), PUB_ID, PRICE, PUBDATE
FROM TITLES
WHERE (TITLE LIKE 'T%' OR PUB_ID='0877') AND (PRICE >$16.00)
11.  消除重复行
可以用DISTINCT消除重复行。格式为:
SELECT [ALL | DISTINCT] SELECT_LIST
FROM TABLE_NAME
WHERE SEARCH_CONDITIONS
例如查询所有作者的所在城市和州名,要求没有重复信息
SELECT DISTINCT CITY, STATE
FROM AUTHORS
12.  结果排序
通常对查询出来的数据,希望按照某种顺序显示,以便查找。通过ORDER BY子句,我们可以改变查询结果的显示顺序。ORDER BY子句的格式是:
SELECT COLUMN_NAME
FROM TABLE_NAME
[ORDER BY COLUMN_NAME | SELECT_LIST_NUMBER | EXPRESSION [ASC | DESC]
例如按照类型的升序和价格的降序来显示书的信息
SELECT PUB_ID, TYPE, PRICE, convert (char (30), TITLE)
FROM TITLES
ORDER BY TYPE, PRICE DESC
13.  分组查询
分组查询,就是将表中数据按照一定条件分类组合,再根据需要得到统计信息
格式:
SELECT COLUMN_NAME
FROM TABLE_NAME
WHERE SEARCH_CONDITION
[GROUP BY [ALL] AGGREGAT E_FREE_EXPRESSION]
例如计算每本书的书名及它的售书总量,并按照TITLE_ID分组
SELECT TITLE_ID, COPIES_SOLD=SUM (QTY)
FROM SALES
GROUP BY TITLE_ID
14.  COMPUTE和COMPUTE BY
我们可以通过COMPUTE和COMPUTE BY计算出汇总数据。
语法:
COMPUTE ROW_AGGREGATE (COLUMN_NAME)
例如查询书类型是以COOK结尾的书的价格和总价
SELECT TYPE, PRICE

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:50
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 

FROM TITLES WHERE TYPE LIKE '%COOK' ORDER BY TYPE, PRICE COMPUTE SUM (PRICE) 15. 连接查询 在数据库应用中,经常要涉及从两个或更多的表中查询数据,这就需要使用连接查询。 其格式如下: SELECT COLUMN_NAME FROM TABLE_NAME WHERE TABLE_NAME.COLUMN JOIN_OPERATOR TABLE_NAME.COLUMN 上述的连接操作符(JOIN_OPERATOR)可以是:=、>、<、> =、< =、! =、< >、! >、! <、= *、* =。在ANSI中,“=”连接应该写成Inner Join;“* =”连接应该写成LEFT OUT JOIN;“= *”连接应该写成“RIGHT OUT JOIN”。在SQL SERVER中,这些写法都可以用。但是,ANSI规定的写法是INNER JOIN等标志。一般而言,在任何连接中,都使用“主键=外键”的连接查询条件。 例如求某店销售某书的数量 SELECT STOR_NAME, QTY, title=convert (char (20), TITLE) FROM TITLES, STORES, SALES WHERE TITLES.TITLE_ID =SALES.TITLE_ID AND STORES.STOR_ID =SALES.STOR_ID 或写为: SELECT STOR_NAME, QTY, title=convert (char (20), TITLE) FROM TITLES JOIN SALES ON TITLES.TITLE_ID =SALES.TITLE_ID JOIN STORES ON STORES.STOR_ID =SALES.STOR_ID 16. 执行子查询 子查询是指一条SELECT语句作为另一条SELECT语句的一部分。外层的SELECT语句叫外部查询,内层的SELECT语句叫作内部查询(或子查询)。子查询分成两种:嵌套查询和相关子查询。子查询能够将比较复杂的查询分解为几个简单的查询。虽然,使用子查询能产生在表之间使用连接操作符相同的结果。但是,连接操作要比子查询快。 嵌套查询的流程是,首先执行内部查询,它查询出来的数据并不显示出来,而是传递给外层语句,作为该语句的查询条件来使用。子查询可以多层次嵌套。 例如查询每个书名ID号及拥有该书的最高百分比版权的作者ID。 SELECT TITLE_ID, AU_ID, ROYALTYPER FROM TITLEAUTHORTA WHERE ROYALTYPER = (SELECT MAX (ROYALTYPER) FROM TITLEAUTHOR WHERE TITLE_ID =TA.TITLE_ID) 17. 查询的基础上创建新表 SELECT INTO的作用是,在查询的基础上创建新表。若建永久表,必须设置“SELECT INTO / BULKCOPY”。若建临时表,必须在表前设置#(局部临时表)或##(全局临时表)。新表的行和列是来自查询结果。 例如创建#PHONYTABLE临时表,该表的数据由每个书名的前40个字符及月平均销售量组成。 SELECT TITLE = SUBSTRING (TITLE, 1, 40), MONTHLY = YTD_SALES/12 INTO #PHONYTABLE FROM TITLES 18. 合并数据集 合并数据集(UNION)的作用是,把结果组合成一个结果集来操作两个或更多的查询结构。例如: SELECT 'ANSI', CONVERT (varchar (30), GETDATE (), 102) AS style UNION SELECT 'Japanese', CONVERT (varchar (30), GETDATE (), 111) UNION SELECT 'Europen', CONVERT (varchar (30), GETDATE (), 113) 19. 插入数据 它的一般语法是: INSERT [INTO] {TABLE_NAME | VIEW_NAME} [(COLUMN_LIST)] {VALUES | VALUES_LIST | SELECT_STATEMENT} 例如向authors表插入一行作者信息 INSERT AUTHORS VALUES ('123-45-6789', 'YANG', 'ZH', '900555_1212', 'huilongguan', 'changping') 20. 修改数据 在SQL Server中,对数据的修改是通过UPDATE语句实现的。它的一般语法是: UPDATE {TABLE_NAME | VIEW_NAME} SET [{TABLE_NAME | VIEW_NAME}] {COLUMN_LIST | VARIABLE_LIST} = expression [WHERE CLAUSE] 例如数量超过100的商品增加10%折扣 UPDATE DISCOUNTS SET DISCOUNT = DISCOUNT + 0.10 WHERE LOWQTY >= 100 21. 删除数据 对表中数据的删除是用DELETE语句实现的。它的语法是: DELETE [FROM] TABLE_NAME WHERE SEARCH_CONDITIONS 例如删除在2002年10月4日下订单的订单明细信息 USE northwind DELETE FROM [order details] FROM orders o INNER JOIN [order details] od ON o.orderid = od.orderid WHERE orderdate = '10/4/2002'


小猪蹄蹄和大家一起学习ASP
2004-06-08 14:51
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 

ASP数据库开发的常用子程序 1. 数据库连接查询 通常使用的数据库连接查询模块如下所示: <%@ LANGUAGE = "VBScript" %> <!--#include file="ADOVBS.INC"--> <% Set objConnection = Server.CreateObject ("ADODB.Connection") objConnection.Open "driver={SQL Server};server=Shaoly;uid=sa;database=pub;" SQLQuery = "SELECT * FROM Author Set rsRecordset = Server.CreateObject ("ADODB.Recordset") rsRecordset.Open SQLQuery,objConnection, adOpenKeyset, adLockReadOnly %> 2. 分页显示 在数据量比较庞大时,为了提高页面的读取速度,一般不会将所有的帖子全部在一页中罗列出来,而是将其分成多页显示,每页显示一定数目的帖子数。 我们可以为PageSize属性设置一个值,从而指定从记录组中取出的构成一个页的行数;然后通过RecordCount属性来确定记录的总数;再用记录总数除以PageSize就可得到所显示的页面总数;最后通过AbsolutePage属性就能完成对指定页的访问。 例如建立这样一个简单的BBS应用程序,它的数据库中分别有以下五个字段:“ID”,每个帖子的自动编号;“subject”,每个帖子的主题;“name”,加帖用户的姓名;“email”,用户的电子邮件地址;“postdate”,加帖的时间。数据库的DSN为“bbs”。我们将显示帖子分页的所有步骤放在一个名为“ShowList()”的过程中,方便调用。程序如下: <% Sub ShowList () %> <% PgSz=20 '设定开关,指定每一页所显示的帖子数目,默认为20帖一页 Set Conn = Server.CreateObject ("ADODB.Connection") Set RS = Server.CreateObject ("ADODB.RecordSet") sql = "SELECT * FROM message order by ID DESC" '查询所有帖子,并按帖子的ID倒序排列 Conn.Open "bbs" RS.open sql, Conn, 1, 1 If RS.RecordCount=0 then response.write "< P>< center>对不起,数据库中没有相关信息!< /center>< /P>" else RS.PageSize = Cint (PgSz) '设定PageSize属性的值 Total=INT (RS.recordcount / PgSz * -1)*-1 '计算可显示页面的总数 PageNo=Request ("pageno") if PageNo="" Then PageNo = 1 else PageNo=PageNo+1 PageNo=PageNo-1 end if ScrollAction = Request ("ScrollAction") if ScrollAction = " 上一页 " Then PageNo=PageNo-1 end if if ScrollAction = " 下一页 " Then PageNo=PageNo+1 end if if PageNo < 1 Then PageNo = 1 end if n=1 RS.AbsolutePage = PageNo Response.Write "< CENTER>" position= RS.PageSize*PageNo pagebegin=position-RS.PageSize+1 if position < RS.RecordCount then pagend=position else pagend= RS.RecordCount end if Response.Write "<P>< font color='Navy'>< B>数据库查询结果:</B>" Response.Write "(共有"&RS.RecordCount &"条符合条件的信息,显示"&pagebegin&"-"&pagend&")< /font>< /p>" Response.Write "<TABLE WIDTH=600 BORDER=1 CELLPADDING=4 CELLSPACING=0 BGCOLOR=#FFFFFF>" Response.Write "<TR BGCOLOR=#5FB5E2><FONT SIZE=2><TD><B>主题</B></TD><TD><B>用户</B></TD><TD><B>Email</B></TD><TD><B>发布日期</B></TD></FONT><TR BGCOLOR=#FFFFFF>" Do while not (RS is nothing) RowCount = RS.PageSize Do While Not RS.EOF and rowcount > 0 If n=1 then Response.Write "< TR BGCOLOR=#FFFFFF>" ELSE Response.Write "< TR BGCOLOR=#EEEEEE>" End If n=1-n %> <TD><span style="font-size:9pt"><A href='view.asp?key=< % =RS("ID")%>'>< % =RS("subject")%></A>< /span></td> <TD>< span style="font-size:9pt">< % =RS("name")%>< /A>< /span>< /td> <TD>< span style="font-size:9pt">< a href="mailt< % =RS("email")%>">< % =RS("email")%>< /a>< /span> </TD> <TD>< span style="font-size:9pt">< % =RS("postdate")%>< /span> < /td> </TR> <% RowCount = RowCount - 1 RS.MoveNext Loop set RS = RS.NextRecordSet Loop Conn.Close set rs = nothing set Conn = nothing %> </TABLE> <FORM METHOD=GET ACTION="list.asp"> <INPUT TYPE="HIDDEN" NAME="pageno" VALUE="< % =PageNo %>"> <% if PageNo > 1 Then response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 上一页 '>" end if if RowCount = 0 and PageNo < >Total then response.write "< INPUT TYPE=SUBMIT NAME='ScrollAction' VALUE=' 下一页 '>" end if response.write "< /FORM>" End if %> <% End Sub %>


小猪蹄蹄和大家一起学习ASP
2004-06-08 14:51
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
ASP访问Access数据库
ASP与ACCESS数据库进行连接,代码如下:
&lt;%@ LANGUAGE = "VBScript" %&gt;
&lt;!--#include file="ADOVBS.INC"--&gt;
&lt;%
Set objConnection = Server.CreateObject ("ADODB.Connection")
DBPath = Server.MapPath ("db1.mdb")
objConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &amp; DBPath
SQLQuery = "SELECT * FROM Author”
Set rsRecordset = Server.CreateObject ("ADODB.Recordset")
rsRecordset.Open SQLQuery,objConnection, adOpenKeyset, adLockReadOnly
%&gt;
&lt;%Do Until rsRecordset.EOF %&gt;
&lt;tr&gt;
&lt;td bgcolor="f7efde" align=center&gt;
&lt;%= rsRecordset ("Name") %&gt;
&lt;br&gt;
&lt;%= rsRecordset ("Age") %&gt;
&lt;br&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;%
rsRecordset.MoveNext
Loop
%&gt;
&lt;% objConnection.close %&gt;

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:52
lwadj
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2004-6-4
得分:0 
ASP访问SQL Server数据库
ASP与SQL Server数据库进行连接,代码如下:
&lt;%@ LANGUAGE = "VBScript" %&gt;
&lt;!--#include file="ADOVBS.INC"--&gt;
&lt;%
Set objConnection = Server.CreateObject ("ADODB.Connection")
objConnection.Open "driver={SQL Server};server=Shaoly;uid=sa;database=pub;"
SQLQuery = "SELECT * FROM Author"
Set rsRecordset = Server.CreateObject ("ADODB.Recordset")
rsRecordset.Open SQLQuery,objConnection, adOpenKeyset, adLockReadOnly
%&gt;
&lt;%Do Until rsRecordset.EOF %&gt;
&lt;tr&gt;
&lt;td bgcolor="f7efde" align=center&gt;
&lt;%= rsRecordset ("Author_FirstName") %&gt;
&lt;br&gt;
&lt;%= rsRecordset ("Author_LastName") %&gt;
&lt;br&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;%
rsRecordset.MoveNext
Loop
%&gt;
&lt;% objConnection.close% &gt;

小猪蹄蹄和大家一起学习ASP
2004-06-08 14:53
寒星
Rank: 1
等 级:新手上路
帖 子:455
专家分:0
注 册:2004-6-7
得分:0 
在下佩服佩服

http://www. 版主位置空缺
2004-06-08 15:02
teleskopos
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2004-7-4
得分:0 
回复:(lwadj)asp+SQL(不要跟贴)

太棒了!谢谢!!

2004-07-22 11:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-2165-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.125591 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved