經典入門教程:在ASP中使用SQL 語句

iDotNetSpace發表於2008-09-18

五花八門的SQL產品多得要命,或許你早顧不得其它甩開袖子就動手幹了。但你要同時採用ASP和SQL的話就可能會頭暈。MySQL、SQL Server和mSQL都是絕佳的SQL工具,可惜,在ASP的環境下你卻用不著它們來建立實用的SQL語句。不過,你可以利用自己掌握的Access知識以及相應的Access技能,再加上我們的提示和技巧,相信一定能成功地在你的ASP網頁中加入SQL。


1. SELECT 語句

在SQL的世界裡,最最基礎的操作就是SELECT 語句了。在資料庫工具下直接採用SQL的時候很多人都會熟悉下面的操作:
SELECT what
FROM whichTable
WHERE criteria

執行以上語句就會建立一個存放其結果的查詢。

而在ASP頁面檔案上,你也可以採用以上的一般語法,不過情況稍微不同,ASP程式設計的時候,SELECT 語句的內容要作為字串賦給一個變數:
SQL = "SELECT what FROM whichTable WHERE criteria"

好了,明白了ASP下SQL“說話”的方式,接下來如法炮製即可,只要滿足你的需要,傳統的SQL查詢模式和條件查詢都能派用場。

舉例說明,不妨假設你的資料庫內有個資料表,名字是Products ,現在你想取出這個表裡的全部記錄。然後你就編寫了下面的程式碼:
SQL ="SELECT * FROM Products"

以上程式碼——SQL語句的作用就是取出表內的全部資料——執行後將會選出資料表內的全部記錄。不過,要是隻想從表內取出某個特定列,比如p_name。那就不能用 * 萬用字元了,這裡得鍵入具體某列的名字,程式碼如下:
SQL ="SELECT p_name FROM Products"

執行以上查詢之後Products 表內、p_name 列的內容就會全被選取出來。


2. 用WHERE子句設定查詢條件

有的時候取出全部資料庫記錄也許正好滿足你的要求,不過,在大多數情況下我們通常只需得到部分記錄。這樣一來該如何設計查詢呢?當然會更費點腦筋了,何況本文也存心不想讓你去用那個什麼勞什子的recordset。

舉個例子,假如你只打算取出p_name 記錄,而且這些記錄的名字必須以字母w打頭,那麼你就要用到下面的WHERE 子句了:
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"

WHERE 關鍵詞的後面跟著用來過濾資料的條件,有了這些條件的幫助,只有滿足一定標準的資料才會被查詢出來。在以上的例子裡,查詢的結果只會得到名字以w 打頭的p_name 記錄。

以上例子中,百分比符號(%)的含義是指示查詢返回所有w 字母打頭而且後面是任何資料甚至沒有資料的記錄條目。所以,在執行以上查詢的時候, west 和 willow 就會從Products 表內被選取出來並存放在查詢裡。

就像你看到的那樣,只要仔細地設計SELECT 語句,你就可以限制recordset 中返回的資訊量,多琢磨琢磨總能滿足你的要求。

這些啊還不過是掌握SQL用途剛起步。為了幫助你逐步掌握複雜的SELECT 語句用法,下面就讓我們再來看一下關鍵的標準術語:比較運算子,這些玩意都是你在構築自己的SELECT 字串來獲得特定資料時要經常用到的。

WHERE子句基礎
在開始建立WHERE 子句的時候,最簡單的方式是採用標準的比較符號,它們是 < 、 <= 、 > 、 >= 、<> 和 =。顯然,你很快就能明白以下程式碼的含義和具體執行結果:
SELECT * FROM Products WHERE p_price >= 199.95
SELECT * FROM Products WHERE p_price <> 19.95
SELECT * FROM Products WHERE p_version = '4'

注意: 這裡你會注意到,最後一個例句中的數字4周圍加了單引號。原因是這樣的,在這個例子中的 '4' 是文字型別而非數字型別。因為你會把 SELECT 語句放到引號中來把它作為一個值賦給變數,所以你也可以在語句中採用引號。

比較運算子
比較運算子指定從表內取出資料的內容範圍。你可以用它們來建立過濾器以便縮小recordset的範圍,促使其只儲存給定任務下你關心的資訊。

3. LIKE 、 NOT LIKE和 BETWEEN

你已經在上面取出w打頭記錄的例子中看到了LIKE的用法。LIKE判定詞是一個非常有用的符號。不過,在很多情況下用了它可能會帶給你太多的資料,所以在用到它之前最好先開動腦筋多想想自己到底想獲得什麼資料。假設你想取出5位數字的SKU號碼,而且其開頭是1結尾是5,那麼你可以用下劃符(_)代替%符號:
SQL = "SELECT * FROM Products WHERE p_sku LIKE '1___5'"

下劃符表示任意一個字元。所以在輸入“1 _ _ _ 5”的情況下,你的搜尋就會限制在滿足特定模式的5位數範圍內了。

假如你想反其道而行之,要找出所有不匹配“1_ _ _ 5”模式的SKU條目。那麼你只需要在剛才語句例子中的LIKE前面加上NOT就可以了。

BETWEEN
假設你想取出一定範圍內的資料,而且你事先知道範圍的起點和終點,那麼你不妨採用BETWEEN 判斷詞。現在就讓我們假設你想選取給定表內範圍在 1和 10之間的記錄。你可以如下使用BETWEEN:
…WHERE ID BETWEEN 1 AND 10

或者你也可以採用已經熟悉的數學判斷字句:
…WHERE ID >= 1 AND ID >= 10


4. 聯合語句

我們到目前為止所談到的SQL語句相對較為簡單,如果再能通過標準的recordset迴圈查詢,那麼這些語句也能滿足一些更復雜的要求。不過,何必非要拘泥在淺嘗則止的基礎水準之上呢?你完全可以再增加其他一些符號,比如AND、 OR和NOT來完成更強大的功能。

以下面的SQL語句為例:
SQL ="SELECT c_firstname, c_lastname, c_email FROM customers WHERE c_email IS
NOT NULL AND c_purchase = '1' OR c_purchase = '2' AND c_lastname LIKE
'A%'"

就你目前所掌握的SQL知識,以上的例子也不難解釋,不過上面的語句並沒有很明白地讓你看清條件字句是如何膠合在單一SQL語句中的。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-448856/,如需轉載,請註明出處,否則將追究法律責任。

相關文章