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