在ADO使用SELECT語(yǔ)法一
發(fā)表時(shí)間:2024-06-15 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]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)算子。