明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在ADO使用SELECT語(yǔ)法一

[摘要]SELECT表達(dá)式接著,讓我們看看SELECT表達(dá)式,SELECT用來(lái)在表中尋找符合特定條件的記錄,語(yǔ)法如下:SELECT [關(guān)鍵字] * 表名稱.* [表名稱.]字段名稱1 [AS 別名1] [, [表名稱.] 字段名稱2 [AS 別名2] [, ...]]FROM 表運(yùn)算式 [, ....
SELECT表達(dá)式

接著,讓我們看看SELECT表達(dá)式,SELECT用來(lái)在表中尋找符合特定條件的記錄,語(yǔ)法如下:

SELECT [關(guān)鍵字] { * 表名稱.* [表名稱.]字段名稱1 [AS 別名1] [, [表名稱.] 字段名稱2 [AS 別名2] [, ...]]}
FROM 表運(yùn)算式 [, ...] [IN 外部表]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

關(guān)鍵字:可以用來(lái)限制返回之記錄的數(shù)量,可以設(shè)定為ALL、DISTINCT、DISTINCTROW 、或TOP。如果沒(méi)有指定述語(yǔ),缺省值為 ALL。

*:選取全部的字段。

別名:代替在表中原有的字段名稱。

表運(yùn)算式:一個(gè)或多個(gè)以逗號(hào)分隔的表名稱。

外部表:如果表不存在目前的表當(dāng)中,須設(shè)定包含表運(yùn)算式中表的表名稱。

執(zhí)行SELECT 表達(dá)式,并不會(huì)改變表之中現(xiàn)有的資料。

一個(gè) SELECT 表達(dá)式的最基本語(yǔ)法是:

SELECT * FROM 表運(yùn)算式

您可以使用星號(hào)(*)來(lái)選取表的全部字段。譬如下例選取 [產(chǎn)品] 表中的全部字段:

SELECT * FROM 產(chǎn)品

字段名稱包含空格或標(biāo)點(diǎn)符號(hào)時(shí),須使用括號(hào)[ ]將它括在其中。例如:

SELECT [電腦 的產(chǎn)品]

如果在FROM子句中的字段名稱中,包含多個(gè)的表中時(shí),需在字段名稱前加上表名稱和點(diǎn)(.)運(yùn)算子,即 表名稱.字段名稱。譬如下例選取 [產(chǎn)品] 表的 [價(jià)格] 字段和 [訂單] 表的 [數(shù)量] 字段:

SELECT 產(chǎn)品.價(jià)格, 訂單.數(shù)量

FROM 產(chǎn)品, 訂單

WHERE 產(chǎn)品.代號(hào) = 訂單.代號(hào)

當(dāng)您使用Recordset 對(duì)象時(shí),Recordset并不認(rèn)得rs(表名稱.字段名稱) 格式,即rs(“產(chǎn)品.價(jià)格”)會(huì)發(fā)生錯(cuò)誤,您必須使用AS來(lái)設(shè)定字段名稱的別名。譬如:

SELECT 產(chǎn)品.價(jià)格 AS 價(jià)格, 訂單.數(shù)量AS 數(shù)量

FROM 產(chǎn)品, 訂單

WHERE 產(chǎn)品.代號(hào) = 訂單.代號(hào)

如此就可以使用rs(“價(jià)格”) 和rs(“數(shù)量”),來(lái)讀取其字段的資料。

與SELECT表達(dá)式相關(guān)的語(yǔ)法:


關(guān)鍵字:ALL/ DISTINCT/ DISTINCTROW/ TOP。

WHERE:尋找FROM中的表符合特定條件的資料記錄。WHERE 可以使用下面的BETWEEN、LIKE、IN運(yùn)算子:

Between...And:判斷表達(dá)式的值是否落在指定的范圍之中。

Like:尋找相符合的關(guān)鍵字。

IN運(yùn)算式:限定范圍。

NOT IN運(yùn)算式:表示不屬于所指定的范圍。

ORDER BY子句:可以設(shè)定排序的字段。

GROUP BY子句:將查詢的結(jié)果做統(tǒng)計(jì)。

HAVING子句:使用在SELECT 表達(dá)式中,篩選已經(jīng)GROUP BY統(tǒng)計(jì)的記錄。

Union:可以合并多組查詢的結(jié)果。

JOIN:連接組合兩個(gè)表中的字段記錄。

子查詢(sub query):表達(dá)式中,可以包括SELECT表達(dá)式。

Select...Into:將查詢的結(jié)果,建立一個(gè)產(chǎn)生的表。


詳細(xì)介紹如下:

ALL/DISTINCT/DISTINCTROW/TOP關(guān)鍵字

使用SELECT查詢時(shí),可以加上關(guān)鍵字,以選取所查詢的記錄。如下:


ALL:返回所有的記錄。

DISTINCT:指定字段中的記錄有重復(fù)時(shí)只返回一條記錄,記錄不重復(fù)。

DISTINCTROW:指定字段中的記錄有重復(fù)時(shí)都不返回。

TOP:返回前面幾個(gè)記錄或幾個(gè)百分比的記錄。


語(yǔ)法如下:

SELECT [ALL DISTINCT DISTINCTROW [TOP n [PERCENT]]]
FROM 表

ALL返回所有的記錄。不加關(guān)鍵字時(shí),與加ALL的意義相同,將返回所有的記錄。譬如下列兩個(gè)例子的執(zhí)行結(jié)果相同,都從產(chǎn)品表中返回所有的記錄:

SELECT ALL * FROM 產(chǎn)品

與以下的執(zhí)行結(jié)果相同:

SELECT * FROM 產(chǎn)品

DISTINCT不選取指定字段之中的重復(fù)資料。使用DISTINCT后,查詢的結(jié)果,列在SELECT DISTINCT后的每個(gè)字段的資料值,若相同則只取一條記錄,換句話說(shuō),指定字段的資料不會(huì)有重復(fù)的現(xiàn)象。例如,在產(chǎn)品表之中有一些產(chǎn)品名稱相同的產(chǎn)品,加上DISTINCT的SQL表達(dá)式只會(huì)返回一條記錄字段為產(chǎn)品名稱資料相同的記錄:

SELECT DISTINCT 產(chǎn)品名稱 FROM 產(chǎn)品

如果您不加上DISTINCT,上例查詢將返回?cái)?shù)個(gè)包含相同產(chǎn)品名稱的記錄。

如果SELECT DISTINCT子句后指定數(shù)個(gè)字段,查詢的結(jié)果,所有字段的組合值不會(huì)有重復(fù)的現(xiàn)象。

DISTINCTROW則不返回指定字段所有重復(fù)的記錄。

TOP n [PERCENT] ,返回前面幾條記錄或幾個(gè)百分比的記錄。排列的順序可以使用ORDER BY子句來(lái)指定。譬如找到成績(jī)前10名的學(xué)生姓名:

SELECT TOP 10 姓名
FROM 學(xué)生
ORDER BY 成績(jī)

如果您沒(méi)有包含ORDER BY子句,查詢將由學(xué)生表返回任意的10個(gè)記錄。

TOP不在相同值間作選擇,如果第10及第11的成績(jī)是相同的,查詢將返回11個(gè)記錄。

您可使用PERCENT來(lái)設(shè)定前面幾個(gè)百分比的記錄,譬如譬如找到成績(jī)前10%的學(xué)生姓名:

SELECT TOP 10 PERCENT 姓名
FROM 學(xué)生
ORDER BY 成績(jī)

讓我們看一個(gè)在ASP程式中使用這個(gè)SQL指令的例子。

可以利用Distinct找出不重復(fù)的記錄,譬如ASP程式rs7.asp如下,[Insert Into 產(chǎn)品(代號(hào),名稱) Select Distinct 代號(hào),名稱 From 產(chǎn)品 where 代號(hào) ='C2000'] 使用Distinct與Insert Into新增代號(hào)為C2000的記錄:

<%

'Distinct 代號(hào),名稱只判斷代號(hào),名稱是否相同, 相同者只加一條記錄

sql = "Insert Into 產(chǎn)品(代號(hào),名稱) Select Distinct 代號(hào),名稱 From 產(chǎn)品 where 代號(hào) ='C2000'"

Set a = conn1.Execute(sql)

Set rs3 = Server.CreateObject("ADODB.Recordset")

sql = "Select * from 產(chǎn)品 where 代號(hào) ='C2000'"

rs3.Open sql,conn1,1,1,1

%>

<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>

<TR>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代號(hào)</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名稱</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">價(jià)格</FONT></TD>

<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">數(shù)量</FONT></TD>

</TR>

<% Do while not rs3.EOF %>

<TR>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代號(hào)")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名稱")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("價(jià)格")%></TD>

<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("數(shù)量")%></TD>

</TR>

<%

rs3.MoveNext

Loop

rs3.Close

%>

</TABLE>

WHERE

WHERE尋找FROM中的表符合特定條件的資料記錄,WHERE 使用在SELECT、UPDATE、或DELETE表達(dá)式。

如果SELECT查詢中沒(méi)有指定WHERE子句,將返回表中所有的資料。如果在SELECT查詢多個(gè)表,且沒(méi)有使用WHERE子句、或JOIN 子句的話,查詢結(jié)果為多個(gè)表資料的乘積。

WHERE設(shè)定特定的條件,譬如:


FROM 產(chǎn)品 WHERE 分類 = '電腦':表示選擇 [分類] 為 [電腦] 的 [產(chǎn)品]

WHERE 價(jià)格 Between 1000 And 5000:表示價(jià)格介于1000至5000之間 。

一個(gè)WHERE子句,最多可包含40個(gè)運(yùn)算式,運(yùn)算式之間由AND或OR等邏輯運(yùn)算子相連結(jié)。

設(shè)定特定的條件時(shí),依照字段類型,前后加不同的符號(hào),譬如:


文字:前后加單引號(hào),譬如WHERE 分類 = '電腦'。

數(shù)字:前后不加符號(hào),譬如WHERE 數(shù)量 > 100。

日期:前后加#號(hào),譬如WHERE 日期 = #5/15/99#。

WHERE可以使用下面的BETWEEN、LIKE、IN運(yùn)算子。