欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP中 SQL語(yǔ)句 使用方法第3/3頁(yè)

 更新時(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語(yǔ)句做一番探討。

8. 記錄統(tǒng)計(jì)


確定數(shù)據(jù)庫(kù)內(nèi)有多少記錄,或者確定有多少記錄達(dá)到了某些標(biāo)準(zhǔn),這些用ASP完成并非難事。如果你采用了正確的游標(biāo)類型,你可以用RecordCount 屬性獲得記錄數(shù)當(dāng)然也可以用recordset。但是,有個(gè)更簡(jiǎn)單的辦法,這就是在自己的SELECT語(yǔ)句中采用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 語(yǔ)句來說,問題是“在客戶表內(nèi)有多少條記錄?”查詢返回單一的值作為響應(yīng),因此它不能同你常規(guī)的查詢相組合。假如你希望得到其他數(shù)據(jù),你需要采用RecordCount。

集合函數(shù)除了“count”之外還包括AVG、MIN、MAX和SUM等。


9. 連接

任何熟悉SQL和關(guān)系數(shù)據(jù)庫(kù)的人都遇見過大量的連接類型。最簡(jiǎn)單的說,連接(join)會(huì)把兩個(gè)表的內(nèi)容組合到一個(gè)虛擬表或者recordset內(nèi)。假如數(shù)據(jù)表有效地規(guī)一化,或許你會(huì)經(jīng)常從某一個(gè)表中選出特定的信息再?gòu)牧硪粋€(gè)表中選出關(guān)聯(lián)信息。這樣做就需要簡(jiǎn)單的“同等連接(equijoin)”。

為了了解實(shí)際的連接操作,現(xiàn)在讓我們假設(shè)在一個(gè)數(shù)據(jù)庫(kù)內(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ì)分析以上的語(yǔ)句,首先注意到兩個(gè)表名列在了FROM的后面。再根據(jù)所采用的連接,今后你可能還會(huì)發(fā)現(xiàn)語(yǔ)法會(huì)有所變化(或者連接類型有變),但是以上的語(yǔ)法是最基本的,顯示了數(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)文章

最新評(píng)論