大家可以看到,對于簡單查詢,SQL Select 語句和英文語法很相象,我們來分析一下 SELECT 語句的完整格式,它包括六個子句,其中 SELECT 和 FROM 子句是必須的,其它子句可以任選,每個子句的功能如下 :
1、Select 子句列出所有要求 SELECT 語句檢索的數(shù)據(jù)項。它放在 SELECT 語句開始處,指定此查詢要檢索的數(shù)據(jù)項。這些數(shù)據(jù)項通常用選擇表表示,即一組用“,”隔開的選擇項。按照從左到右的順序,每個選擇項產(chǎn)生的一個列的查詢結(jié)果,一個選擇項可能是以下項目:
(1)、列名:標識 FROM 子句指定表中的列。如果列名作為選擇項,則 SQL 直接從數(shù)據(jù)庫表中每行取出該列的值,再將其放在查詢結(jié)果的相應(yīng)行中。
(2)、常數(shù):指定在查詢結(jié)果的每行中都放上該值。
(3)、SQL 表達式:說明必須將要放入查詢結(jié)果中的值按表達式的規(guī)定進行計算。
2、From 子句列出包含所要查詢數(shù)據(jù)的表,它由關(guān)鍵字 FROM 后跟一組用逗號分開的表名組成。每個表明都代表一個包括該查詢要檢索數(shù)據(jù)的表。這些表稱為此 SQL 語句的表源,因為查詢結(jié)果都源于它們。
3、Where 子句告訴 SQL 只查詢某些行中的數(shù)據(jù),這些行用搜索條件描述。
4、Group By 子句指定匯總查詢,即不是對每行產(chǎn)生一個查詢結(jié)果,而是將相似的行進行分組,再對每組產(chǎn)生一個匯總結(jié)果。
5、Having 子句告訴 SQL 只產(chǎn)生有 Group By 得到的某些組的結(jié)果,和 Where 子句一樣,所需要的組也用一個搜索條件指定。
6、Order By 子句將查詢結(jié)果按一列或多列中的數(shù)據(jù)排序。如果省略此子句,則查詢結(jié)果將是無序的。
下面作者將提供一個簡單但實用的運用 SQL 語句查詢的 ASP 程序供大家參考。
為了使大家更清楚更直接地了解 SQL 語法在 ASP 中的應(yīng)用,我們先將查詢的所有核心過程寫成一個名為 query2table 的 SUB,然后利用 ASP 的服務(wù)器端包容功能調(diào)用該 SUB。請將以下語句剪貼到記事簿,保存為 subdbtable.inc 文件,并置于虛擬目錄 asptest 下 :
< %
sub query2table(inputquery)
set conntemp=server.createobject("adodb.connection")
conntemp.open "DSN=Student;uid=student;pwd=aspmagic"
set rstemp=conntemp.execute(inputquery)
howmanyfields=rstemp.fields.count -1
' 統(tǒng)計數(shù)據(jù)庫中的列數(shù)
%>
< table border=1>< tr>
< %
for i=0 to howmanyfields
%>
< td>< b>< %=rstemp(i).name%>< /B>< /TD>
< % next %>
< /tr>
< %
do while not rstemp.eof
%>
< tr>
< % for i = 0 to howmanyfields
thisvalue=rstemp(i)
If isnull(thisvalue) then
thisvalue="?
' 如果字段為空,則將變量 thisvalue 的值定義為一個空格
end if%>
< td valign=top>< %=thisvalue%>< /td>
< % next %>
< /tr>
< %rstemp.movenext
loop%>
< /table>
< %
rstemp.close
set rstemp=nothing
conntemp.close
set c
onntemp=nothingend sub%>
完成了 SUB 的定義過程,在下面幾個 ASP 程序中我們只要加入想要使用的 SQL 查詢語句,并調(diào)用該過程就可以非常方便的得到查詢結(jié)果。將以下四段代碼分別保存為 asp11a.asp、asp11b.asp、asp11c.asp、asp11d.asp 四個 .asp 文件。
< HEAD>< TITLE>asp11a.asp< /TITLE>< /HEAD>
< HTML>< body bgcolor="#FFFFFF">
< %
call query2table("select * from publishers where name like 'A%%'")
' 將表 publishers 中所有姓名中有字母 A 的記錄查詢出來
%>
< !--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>
< HEAD>< TITLE>asp11b.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
< %
call query2table("select * from titles where Year_Published > = 1998")
' 將表 titles 中所有發(fā)表年份大于或等于 1998 年的記錄查詢出來
%>
< !--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>
< HEAD>< TITLE>asp11c.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
< %
call query2table("select * from publishers where amount>10000 and sex='male'")
' 將表 publishers 中所有數(shù)量大于 10000 且性別為男的記錄查詢出來
%>
< !--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>
< HEAD>< TITLE>asp11d.asp< /TITLE>< /HEAD>< HTML>< body bgcolor="#FFFFFF">
< %
call query2table("select * from publishers where state< > 'NY'")
'將表 publishers 中所有所在城市不為紐約的記錄查詢出來。
%>
< !--#include virtual="/asptest/subdbtable.inc"-->< /BODY>< /HTML>
利用 subdbtable.inc 文件中的所定義的過程 query2table,你就可以非常迅速地對數(shù)據(jù)庫進行查詢,你所要做的只是將“conntemp.open "DSN=Student;uid=student;pwd=aspmagic"”中的數(shù)據(jù)庫名稱、用戶身份和密碼稍加改動,并在調(diào)用 query2table 時輸入想要使用的 SQL 查詢語句即可。是不是很簡單 ? 這就是 ASP 和 SQL 的魅力所在 !!!
今天,我們雖然用了一整篇的篇幅只學習了一個 SQL 指令,但請你相信你所獲得遠不同于一個 DOS 指令,SELECT 指令使得你可以非常容易地對數(shù)據(jù)庫進行查詢,或許在這之前你對數(shù)據(jù)庫查詢還一無所知,但是通過本篇的學習,你其實已經(jīng)會使用 ASP 進行常用的數(shù)據(jù)庫查詢了,是不是很激動 ? 在下一篇中,作者將繼續(xù)給大家介紹
SQL 的其它幾個基本指令。在結(jié)束本文之前,作者在這里要向很多來信的朋友致歉,由于最近作者工作繁忙,實在無暇一一回答各位的問題,請見諒,我會盡量將一些常見的、發(fā)生頻率較高的問題在文章中寫出來,至于一些不常見的問題,我建議大家到下面這個站點提問,你將會得到及時的答復。www.onlinechina.net/friend/flybird/bbs/wwwboard.asp?id=1, 這是作者至今為止所見的最棒的中文 ASP 學習站點,由上海的飛鳥主持,大家務(wù)必去看看。
新聞熱點
疑難解答