ASP中 SQL語句 使用方法
更新時(shí)間:2007年11月22日 22:55:00 作者:
顯然ORDER BY 起了應(yīng)有的作用。在實(shí)際的表結(jié)構(gòu)下,Absurdly Assured 是最后的條目,但它排在檢索結(jié)果的最頂端。Hands On記錄排最后因?yàn)?nbsp;O 在以上列表中排在字母表最后。顯然,Absolutely按照字母表最好排在Absurdly之前。為此,你需要采取第2級(jí)ORDER BY 排序標(biāo)準(zhǔn),參照第2列進(jìn)行排序:
SQL = "SELECT c_lastname, c_firstname, c_email FROM Customers ORDER BY
c_lastname, c_firstname"
其結(jié)果將首先按照c_lastname 列排序然后按照c_firstname 列排序。假如你的數(shù)據(jù)表包含的記錄比較多,仔細(xì)設(shè)計(jì)排序會(huì)令輸出結(jié)果編排更為合理。
投入使用
如果你同大多數(shù)程序員一樣喜歡自己動(dòng)手編代碼,沉湎于掌握新技術(shù)的狂熱之中。何不從ASP的冗長(zhǎng)編碼中轉(zhuǎn)過頭來嘗試一下SQL編碼呢?下面我們將就ASP編程時(shí)常見的問題以及如何在ASP中高效地利用SQL語句做一番探討。
8. 記錄統(tǒng)計(jì)
確定數(shù)據(jù)庫內(nèi)有多少記錄,或者確定有多少記錄達(dá)到了某些標(biāo)準(zhǔn),這些用ASP完成并非難事。如果你采用了正確的游標(biāo)類型,你可以用RecordCount 屬性獲得記錄數(shù)當(dāng)然也可以用recordset。但是,有個(gè)更簡(jiǎn)單的辦法,這就是在自己的SELECT語句中采用count(*) ,代碼如下所示:
SQL = "SELECT count(*) FROM Customers"
或者
SQL = "SELECT count(*) FROM Customers WHERE c_lastname LIKE 'A%'"
舉例說明,以下代碼將選出一些記錄以及這些記錄的總數(shù):
SQL = "SELECT c_firstname, c_lastname, count(*) FROM Customers WHERE c_lastname LIKE 'A%'"
但是你不能實(shí)現(xiàn)自己的目的。這里采用的“count”函數(shù)其實(shí)是一種集合函數(shù),意思是只返回單行信息:回答你提出的問題。對(duì)第1個(gè)SELECT 語句來說,問題是“在客戶表內(nèi)有多少條記錄?”查詢返回單一的值作為響應(yīng),因此它不能同你常規(guī)的查詢相組合。假如你希望得到其他數(shù)據(jù),你需要采用RecordCount。
集合函數(shù)除了“count”之外還包括AVG、MIN、MAX和SUM等。
9. 連接
任何熟悉SQL和關(guān)系數(shù)據(jù)庫的人都遇見過大量的連接類型。最簡(jiǎn)單的說,連接(join)會(huì)把兩個(gè)表的內(nèi)容組合到一個(gè)虛擬表或者recordset內(nèi)。假如數(shù)據(jù)表有效地規(guī)一化,或許你會(huì)經(jīng)常從某一個(gè)表中選出特定的信息再從另一個(gè)表中選出關(guān)聯(lián)信息。這樣做就需要簡(jiǎn)單的“同等連接(equijoin)”。
為了了解實(shí)際的連接操作,現(xiàn)在讓我們假設(shè)在一個(gè)數(shù)據(jù)庫內(nèi)存放了某類軟件的相關(guān)記錄。某個(gè)表(Software)包含了軟件產(chǎn)品的名稱、軟件的版本以及其他有關(guān)細(xì)節(jié):
另一個(gè)表(Releases)則存儲(chǔ)了軟件發(fā)布?xì)v史的信息,其中包括發(fā)布日期和發(fā)布狀態(tài)等(比如測(cè)試版、當(dāng)前版、過時(shí)等):
上表中還包含了一個(gè)列,內(nèi)容指向軟件表中采用的ID號(hào)。所以,通過這種索引軟件表的方式,你就知道發(fā)布表中software_ID 等于 2的軟件是Rome。
你采用連接組合信息,這樣就不需要在兩個(gè)表之間來回折騰了。不過,除了組合信息之外還可以通過連接把有關(guān)信息合并。這樣,只要發(fā)布表內(nèi)的software_ID 匹配軟件表內(nèi)的ID,你就把匹配信息一起放到一個(gè)記錄內(nèi)。
代碼如下:
SQL = "SELECT * FROM Software, Releases WHERE software.ID = releases.softwareID"
仔細(xì)分析以上的語句,首先注意到兩個(gè)表名列在了FROM的后面。再根據(jù)所采用的連接,今后你可能還會(huì)發(fā)現(xiàn)語法會(huì)有所變化(或者連接類型有變),但是以上的語法是最基本的,顯示了數(shù)據(jù)的聯(lián)合選擇方式。這里的WHERE 子句用來比較特定的ID值。在Software 表內(nèi),存在ID 列。同樣的,Releases 表內(nèi)則有個(gè)software_ID 列。為了明確你在WHERE 子句里要比較的值,你用表名作為前綴,后面還加上了一個(gè)點(diǎn)號(hào)(.)。
以下是連接選取數(shù)據(jù)之后的結(jié)果:
注意:在創(chuàng)建連接的時(shí)候要仔細(xì)考慮選出數(shù)據(jù)的列。以上代碼采用 * 通配符是為了讓讀者關(guān)注于SELECT 代碼行的其他部分。但是,正如你從上圖看到的那樣,你無法選出softwareID 列,因?yàn)檫@一列沒有作為recordset部分的增加值。它的作用就是為WHERE 子句所用。
相關(guān)文章
ASP編程入門進(jìn)階(十八):FSO組件之文件操作(上)
ASP編程入門進(jìn)階(十八):FSO組件之文件操作(上)...2007-01-01ASP中常用的22個(gè)FSO文件操作函數(shù)整理
ASP中FSO組件的功能很強(qiáng)大,如果沒有FSO很難想象ASP會(huì)變成什么樣。對(duì)于學(xué)習(xí)asp編程的朋友一定會(huì)接觸到FSO相關(guān)的操作,如備份數(shù)據(jù)庫,讀取文件,生成靜態(tài)頁面等等。本文就列舉了ASP中常用的22個(gè)FSO文件操作函數(shù),相信能為您帶來方便2020-02-02給萬博系統(tǒng)的新聞系統(tǒng)增加分頁功能[配有詳細(xì)說明]
給萬博系統(tǒng)的新聞系統(tǒng)增加分頁功能[配有詳細(xì)說明]...2007-03-03