簡(jiǎn)單教會(huì)你在ASP中使用SQL語(yǔ)句
本文章給大家分享學(xué)習(xí)的是關(guān)于在ASP中使用SQL語(yǔ)句的教程,初學(xué)ASP的朋友可以好好學(xué)習(xí)一下。
1,SELECT 語(yǔ)句
在SQL的世界里,最最基礎(chǔ)的操作就是SELECT 語(yǔ)句了。在數(shù)據(jù)庫(kù)工具下直接采用SQL的時(shí)候很多人都會(huì)熟悉下面的操作:
SELECT what FROM whichTable WHERE criteria
執(zhí)行以上語(yǔ)句就會(huì)創(chuàng)建一個(gè)存放其結(jié)果的查詢(xún)。
而在ASP頁(yè)面文件上,你也可以采用以上的一般語(yǔ)法,不過(guò)情況稍微不同,ASP編程的時(shí)候,ELECT 語(yǔ)句的內(nèi)容要作為字符串賦給一個(gè)變量:
SQL = "SELECT what FROM whichTable WHERE criteria"
好了,明白了ASP下SQL“說(shuō)話(huà)”的方式,接下來(lái)如法炮制即可,只要滿(mǎn)足你的需要,傳統(tǒng)的SQL查詢(xún)模式和條件查詢(xún)都能派用場(chǎng)。
舉例說(shuō)明,不妨假設(shè)你的數(shù)據(jù)庫(kù)內(nèi)有個(gè)數(shù)據(jù)表,名字是Products ,現(xiàn)在你想取出這個(gè)表里的全部記錄。然后你就編寫(xiě)了下面的代碼:
SQL ="SELECT * FROM Products"
以上代碼——SQL語(yǔ)句的作用就是取出表內(nèi)的全部數(shù)據(jù)——執(zhí)行后將會(huì)選出數(shù)據(jù)表內(nèi)的全部記錄。不過(guò),要是只想從表內(nèi)取出某個(gè)特定列,比如p_name。那就不能用 * 通配符了,這里得鍵入具體某列的名字,代碼如下:
SQL ="SELECT p_name FROM Products"
執(zhí)行以上查詢(xún)之后Products 表內(nèi)、p_name 列的內(nèi)容就會(huì)全被選取出來(lái)。
2,WHERE子句設(shè)置查詢(xún)條件
舉個(gè)例子,假如你只打算取出p_name 記錄,而且這些記錄的名字必須以字母w打頭,那么你就要用到下面的WHERE 子句了:
SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"
WHERE 關(guān)鍵詞的后面跟著用來(lái)過(guò)濾數(shù)據(jù)的條件,有了這些條件的幫助,只有滿(mǎn)足一定標(biāo)準(zhǔn)的數(shù)據(jù)才會(huì)被查詢(xún)出來(lái)。在以上的例子里,查詢(xún)的結(jié)果只會(huì)得到名字以w 打頭的p_name 記錄。
以上例子中,百分比符號(hào)(%)的含義是指示查詢(xún)返回所有w 字母打頭而且后面是任何數(shù)據(jù)甚至沒(méi)有數(shù)據(jù)的記錄條目。所以,在執(zhí)行以上查詢(xún)的時(shí)候, west 和 willow 就會(huì)從Products 表內(nèi)被選取出來(lái)并存放在查詢(xún)里。
就像你看到的那樣,只要仔細(xì)地設(shè)計(jì)SELECT 語(yǔ)句,你就可以限制recordset 中返回的信息量,多琢磨琢磨總能滿(mǎn)足你的要求。
這些啊還不過(guò)是掌握SQL用途剛起步。為了幫助你逐步掌握復(fù)雜的SELECT 語(yǔ)句用法,下面就讓我們?cè)賮?lái)看一下關(guān)鍵的標(biāo)準(zhǔn)術(shù)語(yǔ):比較運(yùn)算符,這些玩意都是你在構(gòu)筑自己的SELECT 字符串來(lái)獲得特定數(shù)據(jù)時(shí)要經(jīng)常用到的。
WHERE子句基礎(chǔ)
在開(kāi)始創(chuàng)建WHERE 子句的時(shí)候,最簡(jiǎn)單的方式是采用標(biāo)準(zhǔn)的比較符號(hào),它們是 < 、 <= 、 > 、 >= 、<> 和 =。顯然,你很快就能明白以下代碼的含義和具體運(yùn)行結(jié)果:
SELECT * FROM Products WHERE p_price >= 199.95
SELECT * FROM Products WHERE p_price <> 19.95
SELECT * FROM Products WHERE p_version = '4'
注意: 這里你會(huì)注意到,最后一個(gè)例句中的數(shù)字4周?chē)恿藛我?hào)。原因是這樣的,在這個(gè)例子中的 "4" 是文本類(lèi)型而非數(shù)字類(lèi)型。
3,比較運(yùn)算符:LIKE、NOT LIKE和 BETWEEN
比較運(yùn)算符指定從表內(nèi)取出數(shù)據(jù)的內(nèi)容范圍。你可以用它們來(lái)創(chuàng)建過(guò)濾器以便縮小recordset的范圍,促使其只保存給定任務(wù)下你關(guān)心的信息。
你已經(jīng)在上面取出w打頭記錄的例子中看到了LIKE的用法。LIKE判定詞是一個(gè)非常有用的符號(hào)。不過(guò),在很多情況下用了它可能會(huì)帶給你太多的數(shù)據(jù),所以在用到它之前最好先開(kāi)動(dòng)腦筋多想想自己到底想獲得什么數(shù)據(jù)。假設(shè)你想取出5位數(shù)字的SKU號(hào)碼,而且其開(kāi)頭是1結(jié)尾是5,那么你可以用下劃符(_)代替%符號(hào):
SQL ="SELECT * FROM Products WHERE p_sku LIKE '1___5'"
下劃符表示任意一個(gè)字符。所以在輸入“1___5”的情況下,你的搜索就會(huì)限制在滿(mǎn)足特定模式的5位數(shù)范圍內(nèi)了。
假如你想反其道而行之,要找出所有不匹配“1___5”模式的SKU條目。那么你只需要在剛才語(yǔ)句例子中的LIKE前面加上NOT就可以了。
BETWEEN
假設(shè)你想取出一定范圍內(nèi)的數(shù)據(jù),而且你事先知道范圍的起點(diǎn)和終點(diǎn),那么你不妨采用BETWEEN 判斷詞,F(xiàn)在就讓我們假設(shè)你想選取給定表內(nèi)范圍在 1和 10之間的記錄。你可以如下使用BETWEEN:
…WHERE ID BETWEEN 1 AND 10
或者你也可以采用已經(jīng)熟悉的數(shù)學(xué)判斷字句:
…WHERE ID >= 1 AND ID >= 10
4,聯(lián)合語(yǔ)句
我們到目前為止所談到的SQL語(yǔ)句相對(duì)較為簡(jiǎn)單,如果再能通過(guò)標(biāo)準(zhǔn)的recordset循環(huán)查詢(xún),那么這些語(yǔ)句也能滿(mǎn)足一些更復(fù)雜的要求。不過(guò),何必非要拘泥在淺嘗則止的基礎(chǔ)水準(zhǔn)之上呢?你完全可以再增加其他一些符號(hào),比如AND、OR和NOT來(lái)完成更強(qiáng)大的功能。
以下面的SQL語(yǔ)句為例:
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知識(shí),以上的例子也不難解釋?zhuān)贿^(guò)上面的語(yǔ)句并沒(méi)有很明白地讓你看清條件字句是如何膠合在單一個(gè)SQL語(yǔ)句中的。
多行語(yǔ)句
在SQL語(yǔ)句不好懂的情況下,你不妨把整個(gè)語(yǔ)句分解為多行代碼,然后在現(xiàn)有變量基礎(chǔ)上逐步增加查詢(xún)語(yǔ)句的各個(gè)組成部分并把它存在同一變量?jī)?nèi):
SQL = "SELECT c_firstname,c_lastname,c_emailaddress,c_phone"
SQL = SQL & " FROM customers"
SQL = SQL & " WHERE c_firstname LIKE 'A%' and c_emailaddress NOT NULL"
SQL = SQL & " ORDER BY c_lastname, c_firstname"
到了最后一句,SQL變量就包含了以下的完整SELECT 語(yǔ)句:
"SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM customers
WHERE c_firstname LIKE ‘A%’ and c_emailaddress NO NULL ORDER BY
c_lastname,c_firstname"