Access SQL 簡介

此頁沒有內(nèi)容條目
內(nèi)容

Access > Access 基礎(chǔ)知識

 

Access SQL 簡介

blueup_CLV全部顯示

bluedrop_CLV全部隱藏

如果要在數(shù)據(jù)庫中檢索數(shù)據(jù),可以使用結(jié)構(gòu)化查詢語言,即 SQL。SQL 是一種近似英語的計算機(jī)語言,但數(shù)據(jù)庫程序可以理解這種語言。您運行的每個查詢都在后臺使用 SQL。

了解 SQL 的工作原理可以幫助您創(chuàng)建更好的查詢,并使您更容易理解如何修復(fù)一個不返回所需結(jié)果的查詢。

 注釋    不可編輯 Web 查詢的 SQL。

本文內(nèi)容


hrefIcon_ZA10069439 什么是 SQL?

hrefIcon_ZA10069439 基本 SQL 子句:SELECT、FROM 和 WHERE

hrefIcon_ZA10069439 對結(jié)果排序:ORDER BY

hrefIcon_ZA10069439 處理匯總數(shù)據(jù):GROUP BY 和 HAVING

hrefIcon_ZA10069439 合并查詢結(jié)果:UNION

hrefIcon_ZA10069439 有關(guān) SELECT 子句的詳細(xì)信息

hrefIcon_ZA10069439 有關(guān) FROM 子句的詳細(xì)信息

hrefIcon_ZA10069439 有關(guān) WHERE 子句的詳細(xì)信息


什么是 SQL?

SQL 是一種用于處理多組事實和事實之間關(guān)系的計算機(jī)語言。Microsoft Office Access 等關(guān)系數(shù)據(jù)庫程序使用 SQL 來處理數(shù)據(jù)。SQL 和許多計算機(jī)語言不同的是,即使對于初學(xué)者也不難閱讀和理解。SQL 和許多計算機(jī)語言相同的是,它作為一種國際標(biāo)準(zhǔn)得到標(biāo)準(zhǔn)化機(jī)構(gòu)(如 ISO(英文)ANSI(英文))的認(rèn)可。

SQL 即使對于初學(xué)者也不難閱讀和理解。

可以使用 SQL 描述有助于您回答問題的多組數(shù)據(jù)。使用 SQL 時,必須使用正確語法。語法是一組規(guī)則,按這組規(guī)則將語言元素正確地組合起來。SQL 語法以英語語法為基礎(chǔ),使用的許多元素與 VISUAL BASIC FOR APPLICATIONS (VBA) (VISUAL BASIC FOR APPLICATIONS (VBA):MICROSOFT VISUAL BASIC 的宏語言版本,用于編寫基于 MICROSOFT WINDOWS 的應(yīng)用程序,內(nèi)置于多個 MICROSOFT 程序中。) 語法相同。

例如,一個簡單的 SQL 語句如下,該語句用于檢索姓氏列表中名字是“Mary”的聯(lián)系人:

SELECT Last_Name

FROM Contacts

WHERE First_Name = 'Mary';

 注釋    SQL 不僅用于操縱數(shù)據(jù),而且用于創(chuàng)建和更改數(shù)據(jù)庫對象(如表)的設(shè)計。用于創(chuàng)建和更改數(shù)據(jù)庫對象的那部分 SQL 叫做數(shù)據(jù)定義語言 (DDL)。本主題不涉及 DDL。有關(guān)詳細(xì)信息,請參閱使用數(shù)據(jù)定義查詢創(chuàng)建或修改表或索引一文。

SELECT 語句

要使用 SQL 描述一組數(shù)據(jù),您可以編寫 SELECT 語句。一個 SELECT 語句包含您要從數(shù)據(jù)庫中獲得的一組數(shù)據(jù)的完整描述, 其中包括:

哪些表包含數(shù)據(jù)。
不同數(shù)據(jù)源中的數(shù)據(jù)怎樣關(guān)聯(lián)。
哪些字段或計算將產(chǎn)生數(shù)據(jù)。
數(shù)據(jù)必須符合哪些條件才能被選中。
是否以及怎樣對結(jié)果進(jìn)行排序。

SQL 子句

SQL 語句和句子一樣有子句。每個子句執(zhí)行一個 SQL 語句的功能。某些子句在 SELECT 語句中是必需的。下表列出了最常見的 SQL 子句。

SQL 子句

執(zhí)行的操作

是否必需

SELECT

列出含有關(guān)注的數(shù)據(jù)的字段。

FROM

列出的表中含有 SELECT 子句中列出的字段。

WHERE

指定要包括在結(jié)果內(nèi)的每條記錄必須符合的字段條件。

ORDER BY

指定怎樣對結(jié)果進(jìn)行排序。

GROUP BY

在包含聚合函數(shù)的 SQL 語句中,列出未在 SELECT 子句中匯總的字段。

僅在存在這類字段時才是必需的

HAVING

在包含聚合函數(shù)的 SQL 語句中,指定應(yīng)用于在 SELECT 語句中匯總的字段的條件。

SQL 詞條

每個 SQL 子句都由相當(dāng)于詞類的詞條組成。下表列出了 SQL 詞條類型。

SQL 詞條

相當(dāng)?shù)脑~類

定義

示例

標(biāo)識符

名詞

用來標(biāo)識數(shù)據(jù)庫對象的名稱,如字段名稱。

客戶.[電話號碼]

運算符

動詞或副詞

表示操作或修改操作的關(guān)鍵字。

AS

常量

名詞

不發(fā)生更改的值,如數(shù)字或 NULL。

42

表達(dá)式

形容詞

標(biāo)識符、運算符、常量和函數(shù)的組合,可計算為單個值。

>= 產(chǎn)品.[單價]

TopPageIcon_CLV 返回頁首

基本 SQL 子句:SELECT、FROM 和 WHERE

SQL 語句采用以下一般形式:

SELECT field_1

FROM table_1

WHERE criterion_1

;

 注釋 

Access 會忽略 SQL 語句中的換行符。不過,對于您自己和其他人,考慮讓每個子句使用一行有助于提高 SQL 語句的可讀性。
每個 SELECT 語句都以分號 (;) 結(jié)束。分號可以出現(xiàn)在最后一個子句的末尾或者單獨出現(xiàn)在 SQL 語句末尾處的一行。

ACCESS 中的示例

下面的內(nèi)容演示了在 Access 中用于簡單選擇查詢的 SQL 語句的外觀:

顯示 SELECT 語句的 SQL 對象選項卡 

標(biāo)注 1 SELECT 子句

標(biāo)注 2 FROM 子句

標(biāo)注 3 WHERE 子句

此示例 SQL 語句可以讀作“選擇存儲在名為‘聯(lián)系人’的表內(nèi)名為‘電子郵件地址’和‘公司’的字段中的數(shù)據(jù),特別是‘城市’字段的值為‘西安’的記錄?!?/span>

我們來看一下該示例,一次看一個子句,以便了解 SQL 語法如何工作。

SELECT 子句

SELECT [電子郵件地址], 公司

這是 SELECT 子句。它由一個運算符 (SELECT) 及后面的兩個標(biāo)識符([電子郵件地址] 和“公司”)組成。

如果標(biāo)識符中包含空格或特殊字符(如“電子郵件地址”),則必須用方括號將它括起來。

SELECT 子句不必指出包含字段的表,并且它無法指定要包括的數(shù)據(jù)必須滿足的任何條件。

在 SELECT 語句中,SELECT 子句始終出現(xiàn)在 FROM 子句的前面。

FROM 子句

FROM 聯(lián)系人

這是 FROM 子句。它由一個運算符 (FROM) 及后面的標(biāo)識符(聯(lián)系人)組成。

FROM 子句不會列出要選擇的字段。

WHERE 子句

WHERE 城市="西安"

這是 WHERE 子句。它由一個運算符 (WHERE) 及后面的表達(dá)式(城市="西安") 組成。

 注釋    與 SELECT 和 FROM 子句不同,WHERE 子句不是 SELECT 語句的必需元素。

通過使用 SELECT、FROM 和 WHERE 子句,您可以完成 SQL 支持的許多操作。有關(guān)如何使用這些子句的詳細(xì)信息將在本文末尾的以下節(jié)中另行提供:

hrefIcon_ZA10069439 有關(guān) SELECT 子句的詳細(xì)信息

hrefIcon_ZA10069439 有關(guān) FROM 子句的詳細(xì)信息

hrefIcon_ZA10069439 有關(guān) WHERE 子句的詳細(xì)信息


TopPageIcon_CLV 返回頁首

對結(jié)果排序:ORDER BY

與 Microsoft Office Excel 一樣,Access 允許您對數(shù)據(jù)表中的查詢結(jié)果排序。還可以使用 ORDER BY 子句在查詢中指定當(dāng)查詢運行時您所希望的結(jié)果排序方式。如果使用 ORDER BY 子句,則該子句是 SQL 語句中的最后一個子句。

ORDER BY 子句包含要用于排序的字段的列表,字段的順序與要應(yīng)用的排序操作中的順序相同。

例如,假定您希望首先按照“公司”字段的值以降序?qū)Y(jié)果排序,并且如果存在值與“公司”的值相同的記錄,再按照“電子郵件地址”字段中的值以升序排序。您的 ORDER BY 子句將類似于以下內(nèi)容:

ORDER BY 公司 DESC, [電子郵件地址]

 注釋    默認(rèn)情況下,Access 會按照升序(A-Z,從最小到最大)對值排序。而使用 DESC 關(guān)鍵字可以按照降序?qū)χ蹬判颉?/span>

有關(guān) ORDER BY 子句的詳細(xì)信息,請參閱 ORDER BY 子句這一主題。

TopPageIcon_CLV 返回頁首

處理匯總數(shù)據(jù):GROUP BY 和 HAVING

有時候您想要處理匯總數(shù)據(jù),例如一個月的總銷售額或者庫存中最昂貴的物品。為此,您向 SELECT 子句中的字段應(yīng)用了聚合函數(shù) (聚合函數(shù):用于計算總計的函數(shù)。例如:SUM、COUNT、AVG 或 VAR。)。例如,如果您希望查詢顯示為每家公司列出的電子郵件地址計數(shù),則 SELECT 子句可能類似于以下內(nèi)容:

SELECT COUNT([電子郵件地址]), 公司

可以使用的聚合函數(shù)取決于要使用的字段或表達(dá)式中的數(shù)據(jù)類型。有關(guān)可用的聚合函數(shù)的詳細(xì)信息,請參閱 SQL 聚合函數(shù)一文。

指定未在聚合函數(shù)中使用的字段:GROUP BY 子句

在使用聚合函數(shù)時,通常還必須創(chuàng)建一個 GROUP BY 子句。GROUP BY 子句列出未應(yīng)用聚合函數(shù)的所有字段。如果您向查詢中的所有字段應(yīng)用了聚合函數(shù),則不必創(chuàng)建 GROUP BY 子句。

GROUP BY 子句緊跟在 WHERE 子句或 FROM 子句(如果沒有 WHERE 子句)后面。GROUP BY 子句會像字段在 SELECT 子句中出現(xiàn)的那樣列出字段。

例如,繼續(xù)使用上一個示例,如果 SELECT 子句向 [電子郵件地址] 而未向“公司”應(yīng)用聚合函數(shù),則 GROUP BY 子句將類似于以下內(nèi)容:

GROUP BY 公司

有關(guān) GROUP BY 子句的詳細(xì)信息,請參閱 GROUP BY 子句這一主題。

使用組條件限制聚合值:HAVING 子句

如果要使用條件來限制結(jié)果,但要應(yīng)用條件的字段用在聚合函數(shù)中,則您無法使用 WHERE 子句??梢允褂?HAVING 子句。HAVING 子句的工作方式類似于 WHERE 子句,但是它用于聚合數(shù)據(jù)。

例如,假定您將 AVG 函數(shù)(計算平均值)用于 SELECT 子句中的第一個字段:

SELECT COUNT([電子郵件地址]), 公司

如果您希望查詢基于 COUNT 函數(shù)的值來限制結(jié)果,則您不能在 WHERE 子句中將條件用于該字段。不過,可以將條件放在 HAVING 子句中。例如,如果您只想讓查詢在有多個電子郵件地址與公司關(guān)聯(lián)時返回行,則 HAVING 子句可能類似于以下內(nèi)容:

HAVING COUNT([電子郵件地址])>1

 注釋    查詢可以有一個 WHERE 子句和一個 HAVING 子句,未在聚合函數(shù)中使用的字段的條件進(jìn)入 WHERE 子句,而用于聚合函數(shù)的字段的條件進(jìn)入 HAVING 子句。

有關(guān) HAVING 子句的詳細(xì)信息,請參閱 HAVING 子句這一主題。

TopPageIcon_CLV 返回頁首

合并查詢結(jié)果:UNION

當(dāng)您希望將幾個相似的選擇查詢返回的所有數(shù)據(jù)一起作為一個合并的集合查看時,便可以使用 UNION 運算符。

UNION 運算符讓您將兩個 SELECT 語句合二為一。合并的 SELECT 語句必須具有相同的輸出字段數(shù)、采用相同的順序并包含相同或兼容的數(shù)據(jù)類型。在運行查詢時,來自每組相應(yīng)字段的數(shù)據(jù)將合并到一個輸出字段中,這樣查詢輸出所包含的字段數(shù)將與每個 Select 語句相同。

 注釋    根據(jù)聯(lián)合查詢的目的,“數(shù)字”和“文本”數(shù)據(jù)類型兼容。

使用 UNION 運算符時,還可以通過使用 ALL 關(guān)鍵字指定查詢結(jié)果是否應(yīng)包含重復(fù)行(如果存在)。

對于合并了兩個 SELECT 語句的聯(lián)合查詢,其基本 SQL 語法如下:

SELECT field_1

FROM table_1

UNION [ALL]

SELECT field_a

FROM table_a

;

例如,假設(shè)您有兩個表,分別名為“產(chǎn)品”和“服務(wù)”。這兩個表都具有包含下列內(nèi)容的字段:產(chǎn)品或服務(wù)的名稱、價格、保修或擔(dān)保條款以及是否以獨占方式提供產(chǎn)品或服務(wù)。雖然“產(chǎn)品”表存儲了保修信息,而“服務(wù)”表存儲了擔(dān)保信息,但基本信息是相同的(即特定的產(chǎn)品或服務(wù)是否包括質(zhì)量承諾)。您可以使用下面這樣的聯(lián)合查詢將這兩個表中的四個字段合并在一起:

SELECT name, price, warranty_available, exclusive_offer

FROM Products

UNION ALL

SELECT name, price, guarantee_available, exclusive_offer

FROM Services

;

有關(guān)如何使用 UNION 運算符合并 SELECT 語句的詳細(xì)信息,請參閱使用聯(lián)合查詢合并多個選擇查詢的結(jié)果一文。

TopPageIcon_CLV 返回頁首

有關(guān) SELECT 子句的詳細(xì)信息

在 SELECT 語句中,SELECT 子句列出了包含要使用的數(shù)據(jù)的字段。

使用方括號將標(biāo)識符括起來

在 SELECT 子句中,可以使用方括號字段名稱括起來。如果名稱中沒有包含任何空格或特殊字符(如標(biāo)點符號),則方括號是可選的。如果名稱中確實包含空格或特殊字符,則必須使用方括號。

提示  包含空格的名稱可讀性更好并且在您設(shè)計窗體和報表時可以節(jié)省時間,但也會讓您在編寫 SQL 語句時的鍵入工作量增大。在數(shù)據(jù)庫中命名對象時您應(yīng)該考慮這個情況。

如果 SQL 語句中有兩個或更多個同名字段,則必須將每個字段的數(shù)據(jù)源名稱添加到 SELECT 子句內(nèi)的字段名稱中。用于數(shù)據(jù)源的名稱與您在 FROM 子句中使用的名稱相同。

選擇所有字段

在您想要包括數(shù)據(jù)源中的所有字段時,可以在 SELECT 子句中逐一列出所有字段,也可以使用星號通配符 (*)。使用星號時,Access 會在查詢運行時確定數(shù)據(jù)源中包含哪些字段,并在查詢中包括所有這些字段。這有助于確保在向數(shù)據(jù)源添加新字段時查詢始終都是最新的。

可以在 SQL 語句中將星號用于一個或多個數(shù)據(jù)源。如果使用星號并且有多個數(shù)據(jù)源,則必須將數(shù)據(jù)源名稱與星號一同包括,以便 Access 可以確定要包括哪個數(shù)據(jù)源中的所有字段。

例如,假定您要在 Orders 表中選擇所有字段但在聯(lián)系人表中僅選擇電子郵件地址, 則 SELECT 子句可能類似于:

SELECT Orders.*, 聯(lián)系人.[電子郵件地址]

 注釋    記錄使用星號的時間。如果新字段是后來添加到數(shù)據(jù)源中的并且您沒有對它們進(jìn)行規(guī)劃,則查詢結(jié)果可能不會如您所愿。

選擇不同的值

如果您知道您的語句將選擇重復(fù)的數(shù)據(jù),而且您只想看到不同的值,則可以在 SELECT 子句中使用 DISTINCT 關(guān)鍵字。例如,假定您的每位客戶都代表著一些不同的利益集團(tuán),其中一些使用相同的電話號碼。如果您想確保每個電話號碼只顯示一次,則 SELECT 子句如下所示:

SELECT DISTINCT [txtCustomerPhone]

使用字段或表達(dá)式的替換名稱:AS 關(guān)鍵字

可以通過在 SELECT 子句中使用 AS 關(guān)鍵字和字段別名來更改為數(shù)據(jù)表視圖中的任何字段顯示的標(biāo)簽。字段別名是您為了使結(jié)果的可讀性更強(qiáng)而分配給查詢中的字段的名稱。例如,如果要從名為 txtCustPhone 的字段中選擇數(shù)據(jù),并且該字段包含客戶電話號碼,則可以通過在 SELECT 語句中使用字段別名來提高結(jié)果的可讀性,如下所示:

SELECT [txtCustPhone] AS [客戶電話號碼]

 注釋    在 SELECT 子句中使用表達(dá)式時必須使用字段別名。

使用表達(dá)式進(jìn)行選擇

有時候您想查看基于您的數(shù)據(jù)的計算結(jié)果,或者僅檢索字段的一部分?jǐn)?shù)據(jù)。例如,假定您要基于數(shù)據(jù)庫中出生日期字段中的數(shù)據(jù)返回客戶的出生年份。您的 SELECT 子句可能類似于以下內(nèi)容:

SELECT DatePart("yyyy",[出生日期]) AS [出生年份]

此表達(dá)式包括 DATEPART 函數(shù)和兩個參數(shù):“yyyy”(一個常量)和 [出生日期](一個標(biāo)識符)。

可以使用任何一個有效表達(dá)式作為字段,條件是在給定單個輸入值時該表達(dá)式輸出單個值。

TopPageIcon_CLV 返回頁首

有關(guān) FROM 子句的詳細(xì)信息

在 SELECT 語句中,F(xiàn)ROM 子句指定包含 SELECT 子句將要使用的數(shù)據(jù)的表或查詢。

假定您想知道某個特定客戶的電話號碼。假設(shè)包含存儲此數(shù)據(jù)的字段的表名為 tblCustomer,F(xiàn)ROM 子句將類似于以下內(nèi)容:

FROM tblCustomer

使用方括號將標(biāo)識符括起來

可以使用方括號將名稱括起來。如果名稱中沒有包含任何空格或特殊字符(如標(biāo)點符號),則方括號是可選的。如果名稱中確實包含空格或特殊字符,則必須使用方括號。

提示  包含空格的名稱可讀性更好并且在您設(shè)計窗體和報表時可以節(jié)省時間,但也會讓您在編寫 SQL 語句時的鍵入工作量增大。在數(shù)據(jù)庫中命名對象時您應(yīng)該考慮這個情況。

使用數(shù)據(jù)源的替換名稱

通過在 FROM 子句中使用表別名,可以在 SELECT 語句中用不同的名稱來引用數(shù)據(jù)源。表別名是一個名稱,當(dāng)您將表達(dá)式作為數(shù)據(jù)源或者要使 SQL 語句更容易鍵入和閱讀時可以在查詢中將該名稱分配給數(shù)據(jù)源。如果數(shù)據(jù)源名稱過長或者難于鍵入,尤其是多個字段在不同的表中具有相同名稱時,表別名特別有用。

例如,如果想從兩個名稱均為 ID 的字段中選擇數(shù)據(jù),并且其中一個字段在表 tblCustomer 中,另一個在表 tblOrder 中,則 SELECT 子句可能類似于以下內(nèi)容:

SELECT [tblCustomer].[ID], [tblOrder].[ID]

通過在 FROM 子句中使用表別名,可以使查詢更容易鍵入。包含表別名的 FROM 子句可能類似于以下內(nèi)容:

FROM [tblCustomer] AS [C], [tblOrder] AS [O]

然后,您可以在 SELECT 子句中使用這些表別名,如下所示:

SELECT [C].[ID], [O].[ID]

 注釋    使用表別名時,可以通過使用數(shù)據(jù)源的別名或者完整名稱在 SQL 語句中引用數(shù)據(jù)源。

聯(lián)接相關(guān)數(shù)據(jù)

如果您需要一種方法將兩個數(shù)據(jù)源中的記錄對合并為查詢結(jié)果中的單個記錄,可以執(zhí)行聯(lián)接。聯(lián)接是一種 SQL 操作,它指定如何將兩個數(shù)據(jù)源關(guān)聯(lián),以及在一個數(shù)據(jù)源中沒有對應(yīng)數(shù)據(jù)時是否應(yīng)包括另一個數(shù)據(jù)源中的數(shù)據(jù)。

要合并兩個數(shù)據(jù)源中的信息,可以對兩個數(shù)據(jù)源中的公共字段執(zhí)行聯(lián)接操作。當(dāng)此字段中存儲的值匹配時,記錄中的數(shù)據(jù)將合并到結(jié)果內(nèi)。

除了合并數(shù)據(jù)外,還可以使用聯(lián)接指定在相關(guān)表中沒有對應(yīng)記錄時是否包括任何一個表中的記錄。

例如,假定您要在查詢中使用以下兩個表中的數(shù)據(jù):tblCustomer 和 tblOrder。這兩個表都有一個用來標(biāo)識客戶的 CustomerID 字段。tblCustomer 表中的每條記錄在 tblOrder 表中可能有一條或更多條對應(yīng)的記錄,并且對應(yīng)值可由 CustomerID 字段中的值決定。

如果想要聯(lián)接表以使查詢合并表中的記錄并在一個表中沒有對應(yīng)記錄時排除任何一個表中的記錄,則 FROM 子句可能類似于以下內(nèi)容(此處增加的換行符是為了提高可讀性):

FROM [tblCustomer] INNER JOIN [tblOrder]

 ON [tblCustomer].[CustomerID]=[tblOrder].[CustomerID]

在 Microsoft Office Access 中,聯(lián)接在 SELECT 語句的 FROM 子句中進(jìn)行。聯(lián)接有兩種類型:內(nèi)部聯(lián)接和外部聯(lián)接。以下部分將介紹這兩種類型的聯(lián)接。

內(nèi)部聯(lián)接

內(nèi)部聯(lián)接是最常見的聯(lián)接類型。在包含內(nèi)部聯(lián)接的查詢運行時,查詢結(jié)果中只包含兩個聯(lián)接表中存在有公共值的記錄。

內(nèi)部聯(lián)接的語法如下(此處增加的換行符是為了提高可讀性):

FROM table1 INNER JOIN table2

 ON table1.field1 compopr table2.field2

下表介紹 INNER JOIN 操作的不同部分。

部分

說明

table1、table2

要合并其中的記錄的表的名稱。

field1,field2

要聯(lián)接的字段的名稱。如果它們不是數(shù)值,則字段必須屬于相同的數(shù)據(jù)類型 (數(shù)據(jù)類型:決定字段可擁有的數(shù)據(jù)類型的字段特征。數(shù)據(jù)類型包括 BOOLEAN、INTEGER、LONG、CURRENCY、SINGLE、DOUBLE、DATE、STRING 和 VARIANT(默認(rèn))。),并且包含相同種類的數(shù)據(jù),但它們不必有相同的名稱。

compopr

任何關(guān)系比較運算符:“=”、“<”、“>”、“<=”、“>=”或“<>”。

外部聯(lián)接

外部聯(lián)接與內(nèi)部聯(lián)接類似,因為它們都指示查詢?nèi)绾稳ズ喜蓚€源中的信息。它們又是不同的,因為它們還指定不存在公共值時是否包括數(shù)據(jù)。外部聯(lián)接具有方向性:可以指定是包括在聯(lián)接中指定的第一個數(shù)據(jù)源中的所有記錄(稱為左聯(lián)接),還是包括聯(lián)接中第二個數(shù)據(jù)源中的所有記錄(稱為右聯(lián)接)。

外部聯(lián)接的語法如下:

FROM table1 [ LEFT | RIGHT ] JOIN table2

ON table1.field1compopr table2.field2

下表介紹 LEFT JOIN 和 RIGHT JOIN 操作的不同部分。

部分

說明

table1、table2

要合并其中的記錄的表的名稱。

field1,field2

要聯(lián)接的字段的名稱。字段必須為相同數(shù)據(jù)類型 (數(shù)據(jù)類型:決定字段可擁有的數(shù)據(jù)類型的字段特征。數(shù)據(jù)類型包括 BOOLEAN、INTEGER、LONG、CURRENCY、SINGLE、DOUBLE、DATE、STRING 和 VARIANT(默認(rèn))。)并且包含相同類型的數(shù)據(jù),但不必具有相同名稱。

compopr

任何關(guān)系比較運算符:“=”、“<”、“>”、“<=”、“>=”或“<>”。

有關(guān)聯(lián)接的詳細(xì)信息,請參閱聯(lián)接表和查詢一文。

TopPageIcon_CLV 返回頁首

有關(guān) WHERE 子句的詳細(xì)信息

當(dāng)您想使用數(shù)據(jù)來限制查詢中返回的記錄數(shù)時,可以使用 SELECT 語句的 WHERE 子句中的查詢條件 (條件:所指定的限制查詢或篩選的結(jié)果集中包含哪些記錄的條件。)。查詢條件類似于公式,它是一個可能由字段引用、運算符 (運算符:一個標(biāo)記或符號,指定表達(dá)式內(nèi)執(zhí)行的計算的類型。有數(shù)學(xué)、比較、邏輯和引用運算符等。)常量 (常量:不進(jìn)行計算的值,因此也不會發(fā)生變化。例如,數(shù)字 210 以及文本“每季度收入”都是常量。表達(dá)式以及表達(dá)式產(chǎn)生的值都不是常量。)組成的字符串。查詢條件屬于表達(dá)式 (表達(dá)式:算術(shù)或邏輯運算符、常數(shù)、函數(shù)和字段名稱、控件和屬性的任意組合,計算結(jié)果為單個值。表達(dá)式可執(zhí)行計算、操作字符或測試數(shù)據(jù)。)類型。

下表顯示了一些示例條件并介紹了它們的工作原理。

條件

說明

>25 and <50

此條件適用于數(shù)字字段,如“Price”或“UnitsInStock”。該條件只包括其字段中的值大于 25 并且小于 50 的那些記錄。

DateDiff ("yyyy", [出生日期], Date()) > 30

此條件適用于日期/時間字段,如“出生日期”。查詢結(jié)果中只包括人員出生日期與當(dāng)前日期之間的年數(shù)大于 30 的記錄。

Is Null

此條件可應(yīng)用于任何類型的字段,以顯示字段值為空的記錄。

如上表所示,條件相互之間看上去可能會存在很大的差異,具體取決于條件要應(yīng)用到的字段的數(shù)據(jù)類型以及您的具體要求。一些條件較為簡單,它們使用基本運算符和常量。其他條件則較為復(fù)雜,它們使用函數(shù)和特殊運算符并且包含字段引用。

要點  如果將字段用于聚合函數(shù),則不能在 WHERE 子句中為該字段指定條件。相反,可以使用 HAVING 子句為聚合字段指定條件。有關(guān)詳細(xì)信息,請參閱處理匯總數(shù)據(jù):GROUP BY 和 HAVING一節(jié)。

WHERE 子句的語法

WHERE 子句的基本語法如下:

WHERE field = criterion

例如,假定您需要某個客戶的電話號碼,但您只記得該客戶的姓氏是黎。您可以使用 WHERE 子句限制結(jié)果并使得查找所需的電話號碼更為容易,而不是查看數(shù)據(jù)庫中的所有電話號碼。假定姓氏存儲在名為 LastName 的字段中,則 WHERE 子句如下所示:

WHERE [LastName]='Bagel'

 注釋    無須將 WHERE 子句中的條件基于值的等值??梢允褂闷渌容^運算符,如大于 (>) 或小于 (<)。例如,WHERE [Price]>100。

使用 WHERE 子句合并數(shù)據(jù)源

有時您可能希望基于具有匹配數(shù)據(jù)但數(shù)據(jù)類型不同的字段來合并數(shù)據(jù)源。例如,一個表中的某個字段的數(shù)據(jù)類型可能是“數(shù)字”,而您希望將該字段與另一個表中數(shù)據(jù)類型是“文本”的字段進(jìn)行比較。

無法在具有不同數(shù)據(jù)類型的字段之間創(chuàng)建聯(lián)接。要基于具有不同數(shù)據(jù)類型的字段中的值合并兩個數(shù)據(jù)源中的數(shù)據(jù),可以通過使用 LIKE 關(guān)鍵字創(chuàng)建將一個字段用作另一個字段的條件的 WHERE 子句。

例如,假定您要使用 table1 和 table2 中的數(shù)據(jù),但是僅當(dāng) field1(table1 中一個文本字段)中的數(shù)據(jù)與 field2(table2 中的一個數(shù)字字段)中的數(shù)據(jù)匹配時您才會這樣做。您的 WHERE 子句會類似于以下內(nèi)容:

WHERE field1 LIKE field2

有關(guān)如何創(chuàng)建要在 WHERE 子句中使用的條件的詳細(xì)信息,請參閱查詢條件示例一文。

TopPageIcon_CLV 返回頁首