日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

GBase 8s SQL 指南:教程———3编写SELECT语句

發布時間:2024/3/12 数据库 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GBase 8s SQL 指南:教程———3编写SELECT语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3編寫SELECT語句

SELECT語句是最重要且最復雜的SQL語句。可使用它和SQL語句INSERT、 UPDATE和DELETE操縱數據。可以使用SELECT語句從數據庫檢索數據。將它用作 INSERT語句的一部分來生成新行或將它作為UPDATE語句的一部分來更新信息。

SELECT語句是查詢數據庫中信息的主要方法。它是檢索程序、報告、表單或電子表格中 的數據的關鍵。可以將SELECT語句與查詢工具DB-Access配合使用或在應用程序中嵌入 SELECT 語句。

本章介紹了使用SELECT語句查詢和檢索關系數據庫數據的基本方法。本章討論如何調整 語句以從一個或多個表中選擇信息行和列,如何在SELECT語句中包含表達式和函數以 及如何創建數據庫表之間的各種連接條件。SELECT語句的語法和使用方法在GBase 8s SQL指南:語法中有詳細描述。

本出版物中的大部分示例來自stores_demo數據庫中的各表,該數據庫隨GBase 8s SQL API 或數據庫實用程序的軟件提供。為了簡便起見,示例只顯示了每個SELECT語句檢索的數 據的一部分。有關演示數據庫的結構和內容的信息,請參閱《GBase 8s SQL參考指南》。 為了著重強調,雖然SQL不區分大小寫,但是在示例中用大寫字母顯示關鍵字。

3.1介紹SELECT語句

SELECT語句允許您查看關系數據庫中的數據的子句構成。這些子句允許您從一個或多個 表或視圖中選擇列和行、指定一個或多個條件、對數據進行排序和總結以及將選擇的數據 放置在臨時表中。

本章介紹了如何使用五個SELECT語句子句。如果包含全部五個子句,那么它們必須按照 下列順序岀現在SELECT語句中:

Projection 子句
FROM子句
WHERE 子句
ORDER BY 子句
INTO TEMP 子句
只有Projection子句和FROM子句是必需的。這兩個子句構成每個數據庫查詢的基礎, 原因是它們指定要檢索的列值,以及包含這些列的表。使用以下列表中的一個或多個其它 子句:

?添加WHERE子句以選擇特定行或創建連接條件。

添加ORDER BY主鍵以更改生成數據的順序。
添加INTO TEMP子句以將結果保存為表以供進一步查詢。
還有兩個SELECT語句子句GROUP BY和HAVING,使您可以執行更復雜的數據檢索。 編寫高級SELECT語句中對它們進行了描述。另一個子句INTO指定要從應用程序中的 SELECT語句中接收數據的程序或主變量。關于使用SELECT語句的完整語法和規則在 GBase 8s SQL指南:語法中有所描述。

SELECT語句的輸出
雖然在所有GBase 8s產品中語法相同,但是結果輸出的格式和顯示取決于應用程序。本章 和編寫高級SELECT語句中的示例如同您在DB-Access中使用“交互式查詢語言”選項 時那樣顯示SELECT語句及輸出。

大對象數據類型的輸出

當發出包含大對象的SELECT語句時,DB-Access按如下所示顯示結果:

對于TEXT列或CLOB列,顯示列的內容。
對于BYTE列,顯示詞<BYTE value〉而不是實際值。
對于BLOB列,顯示詞<SBlob data>而不是實際值。
用戶定義的數據類型的輸出

DB-Access使用特殊約定來顯示包含復雜或不透明數據類型的列的輸出。

非缺省代碼集的輸出

可以發出查詢NCHAR列而不是CHAR列,或者NVARCHAR列而不是VARCHAR列 的SELECT語句。

一些基本概念
SELECT語句不同于INSERT、UPDATE和DELETE語句,它不修改數據庫中的數據。 一次只能有一個用戶修改數據,而多個用戶可同時查詢或選擇數據。有關修改數據的語句 的更多信息,請參閱修改數據。INSERT、UPDATE和DELETE語句的語法描述位于

《GBase 8s SQL指南:語法》中。

在關系數據庫中,列是包含岀現在表中的每一行中的特定信息類型的數據元素。行是在數 據庫表中的所有列上有關單個實體的信息的一組相關項。

可以從數據庫表、系統目錄表(包含有關數據庫的信息的特殊表)、或視圖(創建來包含 一組定制數據的虛擬表)中選擇列和行。有關系統目錄表的信息在GBase 8s SQL參考指 南中有所描述。

特權

在查詢數據之前,確保您對數據庫具有Connect特權和表的Select特權。通常這些特權授 予所有用戶。在GBase 8s SQL指南:語法的GRANT和REVOKE語句中描述了數據庫 訪問權。

關系操作

關系操作涉及處理一個或多個表或者關系以產生另一個表,三種關系操作為選擇、投影和 連接。本章包括選擇、投影和連接操作的一些示例。

選擇和投影

在關系術語中,選擇被定義為取得滿足特定條件的單個表的行的水平子集。此類SELECT 語句返回表中的某些行和所有列。選擇是通過SELECT語句的WHERE子句實現的,如 下圖所示:

圖:查詢

SELECT * FROM customer WHERE state = ‘NJ’;

該結果包含的列數與customer表相同,但只是后者的行的子集。在此示例中,DB-Access顯 示單獨行上來自每列的數據。

圖:查詢結果

customejnum 119

fname

Bob

lname

Shorter

company

The Triathletes Club

address1

2405 Kings Highway

address2

city

Cherry Hill

state

NJ

zipcode

08002

phone

609-663-6079

customejnum 122

fname

Cathy

lname

O’Brian

company

The Sporting Life

address1

543d Nassau

address2

city

Princeton

state

NJ

zipcode

08540

phone

609-342-0054

在關系術語中,投影被定義為從保留唯一行的單個表的列中獲取垂直子集。此類S ELECT語 句返回表中的某些行和某些列。

投影是通過SELECT語句的Projection子句中的投影列表實現的。如下圖所示。

圖:查詢

SELECT city, state, zipcode FROM customer;

此結果包含的列數與customer表相同,但只是投影表中列的子集。因為只從每行中選擇一 小部分的數據,所以DB-Access能夠在一行上顯示行的所有數據。

圖:查詢結果

city state zipcode

Sunnyvale

CA

94086

San Francisco

CA

94117

Palo Alto

CA

94303

Redwood City

CA

94026

Los Altos

CA

94022

Mountain View

CA

94063

Palo Alto

CA

94304

Redwood City

CA

94063

Sunnyvale

CA

94086

Redwood City

CA

94062

Sunnyvale

CA

94085

Oakland

CA

94609

Cherry Hill

NJ

08002

Phoenix

AZ

85016

Wilmington

DE

19898

Princeton

NJ

08540

Jacksonville

FL

32256

Bartlesville

OK

74006

最常見的SELECT語句都同時使用選擇和投影。此類查詢返回表的某些行和某些列。如下 圖所示。

圖查詢

SELECT UNIQUE city, state, zipcode

FROM customer

WHERE state = ‘NJ’;

圖6包含customer表的列的子集和行的子集。

圖:查詢結果

city state zipcode

Cherry Hill NJ 08002

Princeton NJ 08540

連接

當兩個或多個表被同一列或多個列連接時發生連接,它創建新的結果表。下圖顯示了一個 查詢,該查詢使用items和stock表的子集來說明連接的概念。

圖:兩個表之間的連接

SELECT UNOJE ltem_num. orO9r_num.
stock.stock_nMTi. desciip^iion

FROM items, slock

WHERE fiems.stock num = skx^k.stoclc num

正在上傳…重新上傳取消

正在上傳…重新上傳取消
下列查詢將customer和state表連接起來。

圖:查詢

SELECT UNIQUE city, state, zipcode, sname

FROM customer, state

WHERE customer.state = state.code; 該結果包含customer和state表的指定行和列。

圖:查詢結果

city state zipcode sname

Bartlesville

OK

74006

Oklahoma

Blue Island

NY

60406

New York

Brighton

MA

02135

Massachusetts

Cherry Hill

NJ

08002

New Jersey

Denver

CO

80219

Colorado

Jacksonville

FL

32256

Florida

Los Altos

CA

94022

California

Menlo Park

CA

94025

California

Mountain View

CA

94040

California

Mountain View

CA

94063

California

Oakland

CA

94609

California

Palo Alto

CA

94303

California

Palo Alto

CA

94304

California

Phoenix

AZ

85008

Arizona

Phoenix

AZ

85016

Arizona

Princeton

NJ

08540

New Jersey

Redwood City

CA

94026

California

Redwood City

CA

94062

California

Redwood City

CA

94063

California

San Francisco

CA

94117

California

Sunnyvale

CA

94085

California

Sunnyvale

CA

94086

California

Wilmington

DE

19898

Delaware

3.2單個表的SELECT語句

可用多種方法查詢數據庫中的單個表。可用調整SELECT語句以執行以下操作:

,檢索所有或指定的列

?檢索所有或指定的行

,對檢索到的數據執行計算或其它功能

,用各種方法對數據進行排序

最基本的SELECT語句只包含兩個必需的子句,即Projection子句和FROM。

3.2.1使用星號(*)

下列查詢在投影列表中指定manufact表中所有的列。顯式投影列表是想要從表投影的列名 或表達式的列表。

圖:查詢

SELECT manu_code, manu_name, lead_time FROM manufact;

以下查詢使用通配符星號()作為選擇列表中的簡寫來表示表中所有名稱相同的列。當想 要所有列按其定義的順序排列時,可使用星號(),隱式選擇列表使用星號。

圖:查詢

SELECT * FROM manufact;

因為manufact表只含有三列,圖1和圖2是等價的,并且顯示相同的結果。即,manufact表 中每個列和行的列表。下圖顯示了結果。

圖:查詢結果

manu_code manu_name lead_time

SMT

Smith

3

ANZ

Anza

5

NRG

Norge

7

HSK

Husky

5

HRO

Hero

4

SHM

Shimara

30

KAR

Karsten

21

NKL

Nikolus

8

PRC

ProCycle

9

隊列進行重新排序

下列查詢顯示了如何通過更改列在投影列表中的順序。

圖:查詢

SELECT manu_name, manu_code, lead_time FROM manufact; 該查詢結果包含與前一查詢結果相同的列,但因為用不同的順序指定了列,所以顯示也不 同。

圖:查詢結果

manu_name manu_code lead_time

Smith

SMT

3

Anza

ANZ

5

Norge

NRG

7

Husky

HSK

5

Hero

HRO

4

Shimara

SHM

30

Karsten

KAR

21

Nikolus

NKL

8

ProCycle

PRC

9

3.2.2使用ORDER BY子句存儲行

不以任何特定順序排列查詢的結果。例如:圖4和圖2以隨機順序顯示。

可以將ORDER BY子句添加到您的SELECT語句里指導系統以特定順序對數據進行排 序。ORDER BY子句是任何遠程或本地表或視圖中的列名的列表。投影列表中允許的所有 表達式在ORDER BY列表中也允許。如果在ORDER BY列表中使用的列具有選擇觸發 器,那么將不會激活該觸發器。

以下查詢返回manufact表中manu_code、manu_name和lead_time列的每一行。并根 據lead_time進行排序。

圖:查詢

SELECT manu_code, manu_name, lead_time

FROM manufact

ORDER BY lead_time;

對于GBase 8s,不需要在投影列表中包括您想要在ORDER BY子句中使用的列。即,可 以根據不在投影列表中檢索的列對數據進行排序。以下查詢返回manufact表

中 manu_code、manu_name列的每一行,并根據lead_time進行排序。lead_time列位于 ORDER BY子句中(盡管未包含在投影列表中)。

圖:查詢

SELECT manu_code, manu_name

FROM manufact

ORDER BY lead_time;

升序

缺省情況下,檢索到的數據按升序順序排序。在ASCII字符集中,升序是從大寫字母A到 小寫字母z,對于字符數據類型,那么是從最小值到最大值。DATE和DATETIME數據 按照從最早到最新排序,INTERVAL數據按從時間范圍最短到最長排序。

降序

降序與升序相反,對于字符類型為從小寫z到大寫A,對于數字類型為從最大值到最小值。 DATE和DATETIME數據按照從最新到最早排序,INTERVAL數據按從時間范圍最長到 最短排序。以下查詢顯示了降序的示例。

圖:查詢

SELECT * FROM manufact ORDER BY lead_time DESC;

列名后跟關鍵字DESC導致以降序對檢索數據進行排序,如下圖所示:

圖:查詢結果

manu_code manu_name lead_time

SHM

Shimara

30

KAR

Karsten

21

PRC

ProCycle

9

NKL

Nikolus

8

NRG

Norge

7

HSK

Husky

5

ANZ

Anza

5

HRO

Hero

4

SMT

Smith

3

您可以在ORDER BY子句中指定任何內置數據類型的列(TEXT、BYTE、BLOB或 CLOB除外),數據庫服務器根據該列中的值對數據進行排序。

對多個列進行排序

還可以使用ORDER BY排序兩個或多個列,這會創建嵌套排序。缺省值仍然是升序。在 ORDER BY子句中最先列出的列優先。

下列查詢和圖2及相應的查詢結果顯示了嵌套排序。要修改顯示所選數據的順序。更改在 ORDER BY子句中命名的兩個列的順序。

SELECT stock_num, manu_code, description, unit_price

FROM stock

ORDER BY manu_code, unit_price;

查詢結果中,manu_code列數據按字母順序顯示,并且在同一 manu_code (例如:ANZ、 HRO)中,unit_price以升序列出。

圖:查詢結果

stock_num manu_code description unit_price

5 ANZ

tennis racquet

$19.80

9 ANZ

volleyball net

$20.00

6 ANZ

tennis ball

$48.00

313 ANZ

swim cap

$60.00

201 ANZ

golf shoes

$75.00

310 ANZ

kick board

$84.00

111 SHM

10-spd, assmbld

$499.99

112 SHM

12-spd, assmbld

$549.00

113 SHM

18-spd, assmbld

$685.90

5 SMT

tennis racquet

$25.00

6 SMT

tennis ball

$36.00

1 SMT

baseball gloves

$450.00

下列查詢顯示了 ORDER BY子句中列的相反順序。

圖查詢

SELECT stock_num, manu_code, description, unit_price

FROM stock

ORDER BY unit_price, manu_code;

在此查詢結果中,數據按unit_price的升序顯示,其中兩個或多個行具有相同的unit_price (例如:$20.00、$48.00、$312.00), manu_code 以字母順序顯示。

圖: 查詢結果

stock_num manu_code description unit_price

302 HRO

ice pack

$4.50

302 KAR

ice pack

$5.00

5 ANZ

tennis racquet

$19.80

9 ANZ

volleyball net

$20.00

103 PRC

frnt derailleur

$20.00

108 SHM

crankset

$45.00

6 ANZ

tennis ball

$48.00

305 HRO

first-aid kit

$48.00

303 PRC

socks

$48.00

311 SHM

water gloves

$48.00

113 SHM

18-spd, assmblc

1 $685.90

1 HSK

baseball gloves

$800.00

8 ANZ

volleyball

$840.00

4 HSK

football

$960.00

ORDER BY子句中的列的順序十分重要,DESC關鍵字的位置也很重要。盡管下列查詢中 的各語句在ORDER BY子句中包含相同的語句,但是每個語句產生的結果并不相同(沒 有顯示)。

圖查詢

SELECT * FROM stock ORDER BY manu_code, unit_price DESC;

SELECT * FROM stock ORDER BY unit_price, manu_code DESC;

SELECT * FROM stock ORDER BY manu_code DESC, unit_price;

SELECT * FROM stock ORDER BY unit_price DESC, manu_code;

3.2.3選擇特定列

之前的章節顯示了如何選擇和排序表中所有的數據。然而,您經常希望看到的是一個或多 個特定列的數據。并且,公式是使用Projection和FROM子句指定列和表,并可以使用 ORDER BY子句按照升序或降序對數據進行排序。

如果想要操作orders表中的所有客戶號,那么使用以下查詢中的語句。

圖:查詢

SELECT customer_num FROM orders;

該結果顯示了語句如何只選擇orders表中customer_num列中的所有數據,并列出所有訂單 上的客戶號,包括重復的客戶號。

圖:查詢結果

customer_num

104

101

104

122

123

124

126

127

輸岀包括若干重復,原因是某些客戶下了多個訂單。有時您想要在投影中看到重復的行。 而有時您卻只想看到特異值,而不是每個值都出的頻率。

要抑制重復行,可在選擇列表的開頭包括關鍵字DISTINCT或其同義詞UNIQUE,每個 查詢級別一次,如以下查詢所示。

圖:查詢

SELECT DISTINCT customer_num FROM orders;

SELECT UNIQUE customer_num FROM orders;

要生成更可讀的表,圖3將顯示限制為僅顯示一次orders表中的每個客戶號。如下所示。

圖:查詢結果

customer_num

101

104

106

110

111

112

115

116

117

119

120

121

122

123

124

126

127

假設您正在處理客戶電話,并且想要找到購買訂單號DM354331。要列出orders表中的所 有購買訂單號,使用諸如以下查詢所示的語句。

圖查詢

SELECT po_num FROM orders;

該結果顯示了如何檢索到orders表中po_num列的數據。 圖:查詢結果

po_num

B77836

9270

B77890

8006

2865

Q13557

278693

然而,該列表順序無用。可以添加ORDER BY子句來以升序對列數據進行排序,使得查 找特定po_num更容易,如下所示。

圖查詢

SELECT po_num FROM orders ORDER BY po_num;

圖: 查詢結果

po_num

278693

278701

2865

429Q

4745

8006

8052

9270

B77836

B77890

要從表中選擇多個列,請在Projection子句的投影列表中列出它們。以下查詢顯示了選擇 列的順序就是檢索列的順序,從左到右。

圖查詢

SELECT ship_date, order_date, customer_num,

order_num, po_num

FROM orders

ORDER BY order_date, ship_date;

如對多個列進行排序所示,可以使用ORDER BY子句來以升序或降序對數據進行排序和 執行嵌套排序。此結果顯示了升序。

圖:查詢結果

ship_date ordejdate customejnum

order_num po_num

06/01/1998 05/20/1998

104

1001 B77836

05/26/1998 05/21/1998

101

1002 9270

05/23/1998 05/22/1998

104

1003 B77890

05/30/1998 05/22/1998

106

1004 8006

06/09/1998 05/24/1998

116

1005 2865

05/30/1998 112

1006 Q13557

06/05/1998 05/31/1998

117

1007 278693

07/06/1998 06/07/1998

110

1008 LZ230

06/21/1998 06/14/1998

111

1009 4745

06/29/1998 06/17/1998

115

1010 429Q

06/29/1998 06/18/1998

117

1012 278701

07/03/1998 06/18/1998

104

1011 B77897

07/10/1998 06/22/1998

104

1013 B77930

07/03/1998 06/25/1998

106

1014 8052

07/16/1998 06/27/1998

110

1015 MA003

07/12/1998 06/29/1998

119

1016 PC6782

07/13/1998 07/09/1998

120

1017 DM354331

07/13/1998 07/10/1998

121

1018 S22942

07/16/1998 07/11/1998

122

1019 Z55709

07/16/1998 07/11/1998

123

1020 W2286

07/25/1998 07/23/1998

124

1021 C3288

07/30/1998 07/24/1998

126

1022 W9925

07/30/1998 07/24/1998

127

1023 KF2961

當對表中的若干列使用SELECT和ORDER BY時,您會發現使用整數來在ORDER BY 子句中表示列的位置非常有用。當整數是ORDER BY列表中的元素時。數據庫服務器將 它看作是投影列表中的位置。例如,在ORDER BY列表中使用3 (ORDER BY 3)表示 投影列表中的第三項。以下查詢中的語句檢索和顯示相同數據,如下圖12所示。

圖:查詢

SELECT customer_num, order_num, po_num, order_date

FROM orders

ORDER BY 4, 1;

SELECT customer_num, order_num, po_num, order_date

FROM orders

ORDER BY order_date, customer_num;

圖:查詢結果

customer_num

order_num po_num

order_date

104

1001 B77836

05/20/1998

101

1002 9270

05/21/1998

104

1003 B77890

05/22/1998

106

1004 8006

05/22/1998

116

1005 2865

05/24/1998

112

1006 Q13557

05/30/1998

117

1007 278693

05/31/1998

110

1008 LZ230

06/07/1998

111

1009 4745

06/14/1998

115

1010 429Q

06/17/1998

104

1011 B77897

06/18/1998

117

1012 278701

06/18/1998

104

1013 B77930

06/22/1998

106

1014 8052

06/25/1998

110

1015 MA003

06/27/1998

119

1016 PC6782

06/29/1998

120

1017 DM354331

07/09/1998

121

1018 S22942

07/10/1998

122

1019 Z55709

07/11/1998

123

1020 W2286

07/11/1998

124

1021 C3288

07/23/1998

126

1022 W9925

07/24/1998

127

1023 KF2961

07/24/1998

當將整數指定給列名時,可以在ORDER BY子句中包括DESC關鍵字。如下所示。

圖查詢

SELECT customer_num, order_num, po_num, order_date

FROM orders

ORDER BY 4 DESC, 1;

在此示例中,數據先按order_date以降序排序再按customer_num以升序排序。

選擇子串

要選擇字符列的部分值,請在投影列表中包含一個子串。假設市場營銷部門計劃向客戶寄 郵件并想要客戶的基于郵政編碼的地理分布。可編寫與以下圖中顯示的查詢相似的查詢。

圖查詢

SELECT zipcode[1,3], customer_num

FROM customer

ORDER BY zipcode;

該查詢使用子串來選擇zipcode列的前三個字符(它們標識州)和全部customer_num,并 按郵政編碼以升序列出它們,如以下結果所示。

圖:查詢結果

zipcode customer_num

021

125

080

119

085

122

198

121

322

123

943

103

943

107

946

118

ORDER BY和非英文數據

缺省情況下,對于數據庫數據,GBase 8s數據庫服務器使用美國英語語言環境,稱為語言 環境。美國英語語言環境指定數據以代碼集順序存儲。此缺省語言環境使用ISO 8859-1代 碼集。

如果您的數據庫包含非英語數據,那么應在NCHAR (或NVARCHAR)列中存儲非英語 數據,以獲取按語言排序的結果。ORDER BY子句應以適合于語言的順序返回數據。

3.2.4使用 WHERE子句

SELECT語句返回的行集是其活動集。單個SELECT語句返回單個行。如果只想看見特 定行,可將WHERE子句添加至SELECT語句。例如:使用WHERE子句來將數據庫服 務器返回的行限制為特定客戶所下的訂單或特定客戶服務代表輸入的電話。

可以使用WHERE子句來設置比較條件或連接條件。本節只演示第一種用法。連接條件在 后面的節和下一章中描述。

3.2.5創建比較條件

SELECT語句的WHERE子句指定了您想要看到的行。比較條件使用特定關鍵字和運算符 來定義搜索條件。

例如,可使用BETWEEN、IN、LIKE或 MATCHES中的一個來測試相等性。或者使 用關鍵字IS NULL來測試空值。可將關鍵字NOT與這些關鍵字中的任何一個組合來指 定相反條件。

下表列出可在WHERE子句中用來代替關鍵字測試相等性的關系運算符。

運算符

操作

等于

!=或 <>

不等于

大于

=

大于并或等于

<

小于

<=

小于或等于

對于CHAR表達式,大于在ASCII整理順序中意味著之后,其中小寫字母在大寫字母之 后,而大寫字母和小寫字母都在數字之后。請參閱《GBase 8s SQL指南:語法》中的ASCII 字符集圖表。對于DATE和DATETIME表達式,大于意味著時間上更遲,對于 INTERVAL表達式,它意味著更長的持續時間。

不能使用TEXT或BYTE列創建比較條件(使用IS NULL或IS NOT NULL關鍵字來 測試NULL值時除外)。

不能指定BLOB或CLOB列從而在GBase 8s上創建比較條件(用IS NULL或IS NOT NULL關鍵字來測試NULL值時除外)。

可以在WHERE子句中使用上述關鍵字或運算符來創建執行下列操作的比較條件查詢:

包括值
?排除值

查找值范圍
?查找值的子集

標識NULL值
要使用以下條件執行變量文本搜索,在WHERE子句中使用上述關鍵字或運算符來創建比 較條件查詢:

?精確文本比較

?單字符通配符

?受限單字符通配符

可變長通配符
下標
下一節包含說明這些查詢類型的示例。

包括行

在WHERE子句中使用等號(=)關系運算符包括行,如以下查詢所示。

圖:查詢

SELECT customer_num, call_code, call_dtime, res_dtime

FROM cust_calls

WHERE user_id = ‘maryj’;

該查詢返回以下行集。

圖:查詢結果

customer_num call_code call_dtime res_dtime

106 D 1998-06-12 08:20 1998-06-12 08:25

121 O 1998-07-10 14:05 1998-07-10 14:06

127 I 1998-07-31 14:30

排除行

在WHERE子句中使用關系運算符!=或 <> 排除行。

以下查詢假設您從符合ANSI的數據庫中選擇;該語句指定所有者或customer表的創建者 的登錄名。當表的創建者就是當前用戶時,或者當數據庫不符合ANSI時,不需要此限定 符。然而,在任一情況下都可以包括該限定符。有關所有者命名的詳細討論,請參閱《GBase 8s SQL指南:語法》。

圖:查詢

SELECT customer_num, company, city, state

FROM odin.customer

WHERE state != ‘CA’;

SELECT customer_num, company, city, state

FROM odin.customer

WHERE state <> ‘CA’;

此查詢中的兩個語句都通過指定在用戶odin擁有的customer表中state列中的值不應等 于CA來排除值,如下所示。

圖:查詢結果

customer_num

company

city

state

119

The Triathletes Club Cherry Hill

NJ

120

Century Pro Shop

Phoenix

AZ

121

City Sports

Wilmington

DE

122

The Sporting Life

Princeton

NJ

123

Bay Sports

Jacksonville

FL

124

Putnum’s Putters

Bartlesville

OK

125

Total Fitness Sports Brighton

MA

Neelie’s Discount Sp Denver CO
Big Blue Bike Shop Blue Island NY
Phoenix College Phoenix AZ
指定一定范圍的行

下列查詢顯示在WHERE子句中指定一定范圍內行的兩種方法。

圖查詢

SELECT catalog_num, stock_num, manu_code, cat_advert

FROM catalog

WHERE catalog_num BETWEEN 10005 AND 10008;

SELECT catalog_num, stock_num, manu_code, cat_advert

FROM catalog

WHERE catalog_num >= 10005 AND catalog_num <= 10008;

查詢中的每個子句都指定catalog_num的范圍,從10005至10008 (包括10005和 10008),第一個語句使用關鍵字,第二個語句使用關系運算符檢索行。如下所示。

圖:查詢結果

catalog_num 10005

stock_num

3

manu_code

HSK

cat_advert

High-Technology Design Expands the Sweet Spot

catalog_num

10006

stock_num

3

manu_code

SHM

cat_advert

Durable Aluminum for High School and Collegiate Athletes

catalog_num

10007

stock_num

4

manu_code

HSK

cat_advert

Quality Pigskin with Joe Namath Signature

catalog_num

10008

stock_num

4

manu_code

HRO

cat_advert Highest Quality Football for High School and Collegiate Competitions

盡管catalog表標記具有BYTE數據類型的列,但該列不包括在此SELECT語句中,原因 是輸出將按列名只顯示詞<BYTE value>。可以編寫SQL API應用程序來顯示TEXT和 BYTE 值。

排除一定范圍的行

以下查詢使用關鍵字NOT BETWEEN排除zipcode列中字符范圍在94000到94999的 行,如下所示。

圖:查詢

SELECT fname, lname, city, state

FROM customer

WHERE zipcode NOT BETWEEN ‘94000’ AND ‘94999’

ORDER BY state;

圖:查詢結果

fname

lname

city

state

Frank

Lessor

Phoenix

AZ

Fred

Jewell

Phoenix

AZ

Eileen

Neelie

Denver

CO

Jason

Wallack

Wilmington

DE

Marvin

Hanlon

Jacksonville

FL

James

Henry

Brighton

MA

Bob

Shorter

Cherry Hill

NJ

Cathy

O’Brian

Princeton

NJ

Kim

Satifer

Blue Island

NY

Chris

Putnum

Bartlesville

OK

使用WHERE子句査找值的子集

就像排除行,以下查詢假定使用符合ANSI的數據庫。所有者限定符在引號中,以保護文 字字符串的區分大小寫。

圖:查詢

SELECT lname, city, state, phone

FROM ‘Aleta’.customer

WHERE state = ‘AZ’ OR state = ‘NJ’

ORDER BY Iname;

SELECT lname, city, state, phone

FROM ‘Aleta’.customer

WHERE state IN (‘AZ’, ‘NJ’) ORDER BY lname;

查詢中的每個語句在Aleta. customer表的state列中檢索包括AZ或NJ子集的行。

圖:查詢結果

lname

city

state phone

Jewell

Phoenix

AZ

602-265-8754

Lessor

Phoenix

AZ

602-533-1817

O’Brian

Princeton

NJ

609-342-0054

Shorter

Cherry Hill

NJ

609-663-6079

不能使用IN關鍵字來測試TEXT或BYTE列。

另外,當使用GBase 8s時,不能使用IN關鍵字來測試BLOB或CLOB列。

在查詢(對符合ANSI的數據庫進行查詢的示例)中,表所有者名稱兩邊沒有引號。鑒于 圖1中兩個語句搜索Aleta.customer表,以下查詢搜索表ALETA.customer,這是一個不同 的表,原因在于符合ANSI的數據庫查看所有者名稱的方式。

圖查詢

SELECT lname, city, state, phone

FROM Aleta.customer

WHERE state NOT IN (‘AZ’, ‘NJ’)

ORDER BY state;

上一個查詢添加了關鍵字NOT IN,以便子集更改為排除state列中的子集AZ和NJ,下圖 以state列的順序顯示結果。

圖: 查詢結果

lname

city

state phone

Pauli

Sunnyvale

CA

408-789-8075

Sadler

San Francisco

CA

415-822-1289

Currie

Palo Alto

CA

415-328-4543

Higgins

Redwood City

CA

415-368-1100

Vector

Los Altos

CA

415-776-3249

Watson

Mountain View

CA

415-389-8789

Ream

Palo Alto

CA

415-356-9876

Quinn

Redwood City

CA

415-544-8729

Miller

Sunnyvale

CA

408-723-8789

Jaeger

Redwood City

CA

415-743-3611

Keyes

Sunnyvale

CA

408-277-7245

Lawson

Los Altos

CA

415-887-7235

Beatty

Menlo Park

CA

415-356-9982

Albertson

Redwood City

CA

415-886-6677

Grant

Menlo Park

CA

415-356-1123

Parmelee

Mountain View

CA

415-534-8822

Sipes

Redwood City

CA

415-245-4578

Baxter

Oakland

CA

415-655-0011

Neelie

Denver

CO

303-936-7731

Wallack

Wilmington

DE

302-366-7511

Hanlon

Jacksonville

FL

904-823-4239

Henry

Brighton

MA

617-232-4159

Satifer

Blue Island NY

312-944-5691

Putnum

Bartlesville

OK

918-355-2074

標識NULL值

使用IS NULL或IS NOT NULL選項檢查NULL值。NULL值表示沒有數據或未知值。

NULL值不等同于零或空白。

以下查詢返回具有空paid_date的所有行,如下所示。

圖:查詢

SELECT order_num, customer_num, po_num, ship_date

FROM orders

WHERE paid_date IS NULL

ORDER BY customer_num;

圖:查詢結果

ordejnum customejnum po_num ship_date

1004

106

8006

05/30/1998

1006

112

Q13557

1007

117

278693

06/05/1998

1012

117

278701 06/29/1998

1016

119

PC6782 07/12/1998

1017

120

DM354331 07/13/1998

構成復合條件

要連接兩個或多個比較條件或Boolean表達式,使用邏輯運算符AND、OR和NOT。

Boolean表達式的值求出為true或false,如果涉及到NULL值,那么為unknown。

在以下查詢中,運算符AND組合WHERE子句中的兩個比較表達式。

圖:查詢

SELECT order_num, customer_num, po_num, ship_date

FROM orders

WHERE paid_date IS NULL

AND ship_date IS NOT NULL

ORDER BY customer_num;

該查詢返回具有NULL paid_date或NOT NULL ship_date的所有值。

圖:查詢結果

order_num customer_num po_num ship_date

1004

106 8006

05/30/1998

1007

117 278693

06/05/1998

1012

117 278701

06/29/1998

1017

120 DM354331

07/13/1998

使用精確文本比較

以下示例包含一個WHERE子句,它通過使用關鍵字LIKE或MATCHES或者等號(=) 關系運算符來搜索精確文本比較。與較早的示例不同,這些示例說明如何查詢不在當前數 據庫中的表。僅當包含該表的數據庫與當前數據庫的ANSI兼容狀態相同時,才能訪問不 在當前數據庫中的表。如果當前數據庫是符合ANSI的數據庫,那么要訪問的表必須也駐 留在符合ANSI的數據庫中。如果當前數據庫不是符合ANSI的數據庫,那么要訪問的 表必須也駐留在不符合ANSI的數據庫中。

雖然本章前面使用的數據庫是演示數據庫,但是下列示例中的FROM子句指定了由所有 者bubba創建的manatee表,該表駐留在名為syzygy的符合ANSI的數據庫中。有關如何 訪問不在不在當前數據庫中的表的更多信息,請參閱《GBase 8s SQL指南:語法》。

下列查詢中的每個語句檢索description列中具有單詞helmet的所有行,如下所示。

圖查詢

SELECT stock_no, mfg_code, description, unit_price

FROM syzygy:bubba.manatee

WHERE description = ‘helmet’

ORDER BY mfg_code;

SELECT stock_no, mfg_code, description, unit_price

FROM syzygy:bubba.manatee

WHERE description LIKE ‘helmet’

ORDER BY mfg_code;

SELECT stock_no, mfg_code, description, unit_price

FROM syzygy:bubba.manatee

WHERE description MATCHES ‘helmet’ ORDER BY mfg_code;

該結果可能如下圖所示。

圖:查詢結果

stock_no mfg_code description unit_price

991 ABC helmet

991 BKE helmet

991 HSK helmet

991 PRC helmet

991 SPR helmet

$222.00

$269.00

$311.00

$234.00

$245.00

使用變量文本搜索

可對基于字段的子串搜索的變量文本查詢使用關鍵字LIKE和MATCHESo包含關鍵字 NOT以指示相反的條件。

關鍵字LIKE是SQL的ISO/ANSI標準,而 MATCHES是GBase 8s擴展。

變量文本搜索字符串可將列出的通配符與下表中的LIKE或MATCHES包括在一起。 下表顯示了您可以與關鍵字LIKE和MATCHES 一起使用的通配符。說明了這些符號及 其含義。

關鍵字符號 含義

關鍵字

符號

含義

LIKE

%

求值為零或多個字符

LIKE

求值為單個字符

LIKE

\

對下一字符的特殊有效位數進行轉義

MATCHES

求值為零個或多個字符

MATCHES

?

求值為單個字符(空值除外)

MATCHES

::

求值為單個字符或一定范圍內的值

MATCHES

\

對下一字符的特殊有效位數進行轉義

不能使用LIKE或 MATCHES運算符測試BLOB、CLOB、TEXT或BYTE列。

使用單字符通配符

下列查詢中的語句說明如何在WHERE子句中使用單字符通配符。而且,它們還演示了如 何查詢非當前數據庫中的表。stock表位于數據庫sloth中。除了在當前演示數據庫外部之外, sloth還在稱為meerkat的獨立數據庫服務器上。

有關更多信息,請參閱在外部數據庫中訪問和修改數據和《GBase 8s SQL指南:語法》。

圖查詢

SELECT stock_num, manu_code, description, unit_price

FROM sloth@meerkat:stock

WHERE manu_code LIKE ‘R’

AND unit_price >= 100

ORDER BY description, unit_price;

SELECT stock_num, manu_code, description, unit_price

FROM sloth@meerkat:stock

WHERE manu_code MATCHES ‘?R?’

AND unit_price >= 100 ORDER BY description, unit_price;

查詢中的每個語句只檢索manu_code的中間字母是R的那些行。如下所示。比較’R’(對 于LIKE)或’?R?’(對于MATCHES)從左到右指定下列項:

?任何單個字符

? 字母R

?任何單個字符

圖:查詢結果

stock_num manu_code description unit_price

205 HRO

3 golf balls

$312.00

2 HRO

baseball

$126.00

1 HRO

baseball gloves

$250.00

7 HRO

basketball

$600.00

102 PRC

bicycle brakes

$480.00

114 PRC

bicycle gloves

$120.00

4 HRO

football

$480.00

110 PRC

helmet

$236.00

110 HRO

helmet

$260.00

307 PRC

infant jogger

$250.00

306 PRC

tandem adapter

$160.00

308 PRC

twin jogger

$280.00

304 HRO

watch

$280.00

指定一定范圍內的詞首字符的WHERE子句

下列查詢只選擇manu_code以A到H開頭的那些列,并返回結果顯示的行。測試’[A-H]’ 指定從A到H之間(包括A和H)的任何一個字母。對于LIKE關鍵字,不存在等價的 通配符。

圖:查詢

SELECT stock_num, manu_code, description, unit_price

FROM stock

WHERE manu_code MATCHES ‘[A-H]*’

ORDER BY description, manu_code;

圖:查詢結果

stock_num manu_code description unit_price

205 ANZ

3 golf balls

$312.00

205 HRO

3 golf balls

$312.00

2 HRO

baseball

$126.00

3 HSK

baseball bat

$240.00

1 HRO

baseball gloves

$250.00

1 HSK

baseball gloves

$800.00

7 HRO

basketball

$600.00

313 ANZ

swim cap

$60.00

6 ANZ

tennis ball

$48.00

5 ANZ

tennis racquet

$19.80

8 ANZ

volleyball

$840.00

9 ANZ

volleyball net

$20.00

304 ANZ

watch

$170.00

具有可變長通配符的WHERE子句

下列查詢中的語句在字符串的末尾使用通配符來檢索description以字符bicycle開頭的所 有行。

圖查詢

SELECT stock_num, manu_code, description, unit_price

FROM stock

WHERE description LIKE ‘bicycle%’

ORDER BY description, manu_code;

SELECT stock_num, manu_code, description, unit_price

FROM stock

WHERE description MATCHES ‘bicycle*’

ORDER BY description, manu_code;

任一語句都返回以下行。

圖:查詢結果

stock_num manu_code description unit_price

102 PRC

bicycle brakes

$480.00

102 SHM

bicycle brakes

$220.00

114 PRC

bicycle gloves

$120.00

107 PRC

bicycle saddle

$70.00

106 PRC

bicycle stem

$23.00

101 PRC

bicycle tires

$88.00

101 SHM

bicycle tires

$68.00

105 PRC

bicycle wheels

$53.00

105 SHM

bicycle wheels

$80.00

SBASe*

比較’bicycle%'或’bicycle*'指定字符bicycle后跟零個字符或任何字符序列。它與bicycle stem匹配,而stem與通配符匹配。如果具有該描述的行存在,那么它只與字符bicycle匹 配。

以下查詢通過添加排除PRC的manu_code的另一個比較條件來縮小搜索范圍。

圖:查詢

SELECT stock_num, manu_code, description, unit_price

FROM stock

WHERE description LIKE ‘bicycle%’

AND manu_code NOT LIKE ‘PRC’

ORDER BY description, manu_code;

該語句只檢索到下列行。

圖:查詢結果

stock_num manu_code description unit_price

102 SHM bicycle brakes $220.00

101 SHM bicycle tires $68.00

105 SHM bicycle wheels $80.00

當從大型表中進行選擇并在比較字符串中使用詞首通配符時(如’%cycle’),查詢通常需 要較長時間來執行。由于不能使用索引,所以搜索每一行。

MATCHES子句和非缺省語言環境

缺省情況下,對數據庫數據,GBase 8s數據庫服務器使用美國英語語言環境,稱為語言環 境。缺省的語言環境使用ISO 8859-1代碼集。該美國英語語言環境指定MATCHES將使 用代碼集順序。

如果數據庫使用非缺省語言環境,那么指定范圍的MATCHES子句將該語言環境的整理順 序用于字符數據類型(包括CHAR、NCHAR、VARCHAR、NVARCHAR和 LVARCHAR)。MATCHES范圍的此功能是一般規則(只有NCHAR和NVARCHAR列 可使用特定于語言環境的整理)的例外情況。然而,如果語言環境不能指定任何特殊整理 順序,那么MATCHES使用代碼集順序。

在GBase 8s中,可以使用SET COLLATION語句為會話指定不同于DB_LOCALE設置的 數據庫語言環境。有關SET COLLATION的描述,請參閱《GBase 8s SQL指南:語法》。 保護特殊字符

下列查詢使用ESCAPE與LIKE或MATCHES配合使用,以便您可以保護特殊字符,使 它們不會被誤認為是通配符。

圖查詢

SELECT * FROM cust_calls

WHERE res_descr LIKE ‘%!%%’ ESCAPE

ESCAPE關鍵字指定包含下一個字符的轉義字符(在本示例中為!)以便將它解釋為數據 而不是通配符。在該示例中,轉義字符導致將中間的百分號(%)當作數據。通過使用 ESCAPE關鍵字,您可以使用LIKE通配符百分號(%)在res_descr列中搜索百分號(%) 的岀現次數。查詢檢索下列顯示的行。

圖:查詢結果

customejnum 116

call_dtime 1997-12-21 11:24

user_id mannyn

call_code I

call_descr Second complaint from this customer!

Received two cases righthanded outfielder

glove (1 HRO) instead of one case lefties.

res_dtime 1997-12-27 08:19

res_descr Memo to shipping (Ava Brown) to send case

of lefthanded gloves, pick up wrong case;

memo to billing requesting 5% discount to placate customer due to second offense and lateness of resolution because of holiday.

在WHERE子句中使用下標

您可以在SELECT語句的WHERE子句中使用下標,以指定選擇某列中一定范圍內額字 符或數字,如下所示。

SELECT catalog_num, stock_num, manu_code, cat_advert,

cat_descr

FROM catalog

WHERE cat_advert[1,4] = ‘High’;

下標[1,4]導致該查詢檢索cat_advert列的前四個字母為High的所有行。如下所示。

圖: 查詢結果

catalog_num 10004

stock_num 2

manu_code HRO

SBASe*

cat_advert Highest Quality Ball Available, from Hand-Sti tching to the Robinson Signature

cat_descr

Jackie Robinson signature ball. Highest professional quality, used by National League.

catalog_num 10005

stock_num 3

manu_code HSK

cat_advert High-Technology Design Expands the Sweet Spot cat_descr

Pro-style wood. Available in sizes: 31,32, 33, 34, 35.

catalog_num 10045

stock_num 204

manu_code KAR

cat_advert High-Quality Beginning Set of Irons. Appropriate for High School Competitions

cat_descr

Ideally balanced for optimum control. Nylon covered shaft.

catalog_num 10068

stock_num 310

manu_code ANZ

cat_advert High-Quality Kickboard

cat_descr

White. Standard size.

3.2.6使用FIRST子句選擇特定行

可以在SELECT語句的Projection子句中包含FIRST max規范(其中max具有整數值) 來構建查詢,使其僅返回匹配SELECT語句條件的最初max行。在(且僅在)此上下文中, 也可以使用關鍵字LIMIT作為FIRST的同義詞。執行具有FIRST子句的SELECT語句 時返回的行可能會不同,這取決于該語句是否還包含ORDER BY子句。

在Projection子句中,后面跟無符號整數的關鍵字SKIP可用在FIRST或LIMIT關鍵字 前面。SKIP offset子句指示數據庫服務器在返回FIRST子句指定的行數之前,從查詢結果 集中排除最初offset行滿足條件的行。在SPL例程中,SKIP、FIRST或LIMIT的參數

可以是字面值整數或局部SPL變量。如果Projection子句包含SKIP offset但不包含

FIRST或LIMIT規范,那么查詢返回除最初offset行以外所有滿足條件的行。

Projection子句在下列上下文中不能包含SKIP、FIRST或LIMIT關鍵字:

?當SELECT語句是視圖定義的一部分

? 在子查詢中,除了外部查詢的FROM子句

?在跨服務器分發的查詢中,其中參與的數據庫服務器不支持SKIP、FIRST或

LIMIT關鍵字。

有關使用FIRST子句的限制的信息,請參閱《GBase 8s SQL指南:語法》中SELECT語 句的Projection子句的描述。

不具有ORDER BY子句的FIRST子句

如果具有FIRST子句的SELECT語句中沒有ORDER BY子句,那么可能返回符合

SELECT語句條件的任何行。換言之,數據庫服務器確定返回哪些限定行,并且查詢結果 可能會不同,這取決于優化器選擇的查詢計劃。

以下查詢使用FIRST子句來返回state表中的前五行。

圖:查詢

SELECT FIRST 5 * FROM state;

圖:查詢結果

code sname

AK Alaska

HI Hawaii

CA California

OR Oregon

WA Washington

當只想知道表包含的所有列的名稱和數據的類型,或者測試可能會返回許多行的查詢時, 可以使用FIRST子句。以下查詢顯示了如何使用FIRST子句來返回表的第一行的列值。

圖:查詢

SELECT FIRST 1 * FROM orders;

圖:查詢結果

order_num 1001

order_date 05/20/1998

customer_num 104

ship_instruct express

backlog

n

po_num

B77836

ship_date

06/01/1998

ship_weight

20.40

ship_charge

$10.00

paid_date

07/22/1998

具有ORDER BY子句的FIRST子句

可以在具有FIRST子句的SELECT語句中包括ORDER BY子句,以返回包含指定列的 最高值或最低值的行。以下查詢顯示了包含ORDER BY子句以(按字母順序)返回包含 在state表中的前五個州的查詢。該查詢,(除ORDER BY子句以外,它與圖1相同)返 回不同于圖1的一組行。

圖:查詢

SELECT FIRST 5 * FROM state ORDER BY sname;

圖:查詢結果

code sname

AL Alabama

AK Alaska

AZ Arizona

AR Arkansas

CA California

以下查詢顯示如何在具有ORDER BY子句的查詢中使用FIRST子句來查找stock表中 列出的10中最貴的商品。

圖:查詢

SELECT FIRST 10 description, unit_price

FROM stock ORDER BY unit_price DESC;

圖:查詢結果

description unit_price

football

$960.00

volleyball

$840.00

baseball gloves

$800.00

18-spd, assmbld

$685.90

irons/wedge

$670.00

basketball $600.00

12-spd, assmbld $549.00

10-spd, assmbld $499.99

football $480.00

bicycle brakes $480.00

應用程序可以將Projection子句的SKIP和FIRST關鍵字與ORDER BY子句相結合使 用,以執行連續查詢,對某些固定大小(例如,最大行數可在一屏顯示,無需滾動)的子 集中所有滿足條件的行進行增量檢索。通過在每次查詢后使用FIRST子句的max參數增 大SKIP子句的offset參數值可實現上述操作。通過對滿足條件的行施加唯一的命令, ORDER BY子句確保每次查詢返回滿足條件行的不同子集。

以下查詢顯示了包含SKIP、FIRST和ORDER BY規范以(按字母順序)返回state表的 10個州中的第六個州,而不是前五個州的查詢。該查詢類似于圖1,但SKIP 5規范指示 數據庫服務器返回不同于圖1的行集。

圖:查詢

SELECT SKIP 5 FIRST 5 * FROM state ORDER BY sname;

圖:查詢結果

code sname

CO Colorado

CT Connecticut

DE Delaware

FL Florida

GA Georgia

如果使用SKIP、FIRST和ORDER BY關鍵字,必須指定對應于應用程序設計目標的參 數,如果SKIP的offset參數大于滿足條件的行數,那么任何FIRST或LIMIT規范都無 效,并且查詢不會返回任何結果。

3.2.7表達式和派生的值

不限制您按名稱選擇列。可以在SELECT語句的Projection子句中列出表達式來執行對列 數據的計算,并顯示派生自一列或多列的內容的信息。

表達式由列名、常量、帶引號字符串、關鍵字或用運算符連接的這些項的任何組合組成。 當在程序中嵌入SELECT語句時,它還可以包括主變量(程序數據)。

算術表達式

算術運算符至少包含下表中列出的算術運算符之一并產生一個數字

運算符

操作

/

不能在算術表達式中使用TEXT或BYTE列。

在GBase 8s,不能在算術表達式中指定BLOB或CLOB。

算術表達式使您能夠查看建議的計算的結果而不必實際改變數據庫中的數據。可以添加 INTO TEMP子句來將已改變的數據保存在臨時表中以供將來參考、計算或即時報告。

當unit_price為$400或更多時,以下查詢對unit_price列計算7%的銷售稅(但不在數據 庫中更新它)。

圖:查詢

SELECT stock_num, description, unit_price, unit_price * 1.07

FROM stock

WHERE unit_price >= 400;

此結果在expression列中顯示。

圖:查詢結果

stock_num description unit_price (expression)

1 baseball gloves

$800.00

$856.00

1 baseball gloves

$450.00

$481.50

4 football

$960.00

$1027.20

4 football

$480.00

$513.60

7 basketball

$600.00

$642.00

8 volleyball

$840.00

$898.80

102 bicycle brakes

$480.00

$513.60

111 10-spd, assmbld

$499.99

$534.99

112 12-spd, assmbld

$549.00

$587.43

113 18-spd, assmbld

$685.90

$733.91

203 irons/wedge $670.00 $716.90

當訂貨數量小于5時,下列查詢對訂單計算$6.50的附加費用。

圖查詢

SELECT item_num, ordejnum, quantity,

total_price, total_price + 6.50

FROM items

WHERE quantity < 5;

結果顯示在expression列中。

圖:查詢結果

item_num order_num quantity total_price (expression)

1

1001

1

$250.00

$256.50

1

1002

1

$960.00

$966.50

2

1002

1

$240.00

$246.50

1

1003

1

$20.00

$26.50

2

1003

1

$840.00

$846.50

1

1004

1

$250.00

$256.50

2

1004

1

$126.00

$132.50

3

1004

1

$240.00

$246.50

4

1004

1

$800.00

$806.50

1

1023

2

$40.00

$46.50

2

1023

2

$116.00

$122.50

3

1023

1

$80.00

$86.50

4

1023

1

$228.00

$234.50

5

1023

1

$170.00

$176.50

6

1023

1

$190.00

$196.50

下列查詢計算并在expression列中顯示按接收到客戶電話(call_dtime)與處理電話 (res_dtime)之間的時間間隔(以天、小時和分鐘計)。

圖查詢

SELECT customejnum, call_code, call_dtime,

res_dtime - call_dtime

FROM cust_calls

ORDER BY customer_num;

圖: 查詢結果

customer_num call_code call_dtime (expression)

106 D

1998-06-12 08:20

0 00:05

110 L

1998-07-07 10:24

0 00:06

116 I

1997-11-28 13:34

0 03:13

116 I

1997-12-21 11:24

5 20:55

119 B

1998-07-01 15:00

0 17:21

121 O

1998-07-10 14:05

0 00:01

127 1

1998-07-31 14:30

使用顯示標簽

可以將顯示標簽指定給計算或派生的數據列,以替換缺省列頭expression。在圖1、圖?3和圖1中,派生數據顯示在expression列中。下列查詢還顯示派生值,但顯示派生值的列 具有描述性頭taxed。

圖查詢

SELECT stock_num, description, unit_price,

unit_price * 1.07 taxed

FROM stock

WHERE unit_price >= 400;

結果顯示將標記taxed指定給用于顯示操作unit_price * 1.07的結果的投影列表中的表達 式。

圖:查詢結果

stock_num description unit_price taxed

1 baseball gloves

$800.00

$856.00

1 baseball gloves

$450.00

$481.50

4 football

$960.00

$1027.20

4 football

$480.00

$513.60

7 basketball

$600.00

$642.00

8 volleyball

$840.00

$898.80

102 bicycle brakes

$480.00

$513.60

111 10-spd, assmbld

$499.99

$534.99

112 12-spd, assmbld

$549.00

$587.43

113 18-spd, assmbld

$685.90

$733.91

203 irons/wedge

$670.00

$716.90

在下列查詢中,為顯示操作total_price + 6.50的結果的列定義標簽surchargeo

圖查詢

SELECT item_num, order_num, quantity,

total_price, total_price + 6.50 surcharge

FROM items

WHERE quantity < 5;

在輸出中對surcharge列添加標簽。

圖:查詢結果

item_num order_num quantity total_price surcharge

1

1001

1

$250.00

$256.50

1

1002

1

$960.00

$966.50

2

1002

1

$240.00

$246.50

1

1003

1

$20.00

$26.50

2

1003

1

$840.00

$846.50

1

1023

2

$40.00

$46.50

2

1023

2

$116.00

$122.50

3

1023

1

$80.00

$86.50

4

1023

1

$228.00

$234.50

5

1023

1

$170.00

$176.50

6

1023

1

$190.00

$196.50

下列查詢將標簽span指定給顯示從DATETIME列res_dtime減去DATETIME 列call_dtime的結果的列。

圖查詢

SELECT customejnum, call_code, call_dtime,

res_dtime - call_dtime span

FROM cust_calls ORDER BY customer_num;

在輸出中標記了 span列。

圖: 查詢結果

customejnum call_code call_dtime

span

106 D

1998-06-12 08:20

0 00:05

110 L

1998-07-07 10:24

0 00:06

116 I

1997-11-28 13:34

0 03:13

116 I

1997-12-21 11:24

5 20:55

119 B

1998-07-01 15:00

0 17:21

121 O

1998-07-10 14:05

0 00:01

127 I

1998-07-31 14:30

CASE表達式

CASE表達式條件表達式,類似于編程語言中的CASE語句。當要更改表示數據的方式時, 可以使用CASE表達式。CASE表達式允許語句返回若干可能結果之一,這取決于若干條 件測試中哪一個求值為TRUE。

在CASE表達式中不允許TEXT或BYTE值。

考慮用數字表示婚姻狀態的列,1、2、3和4是相應表示單身、已婚、離異和喪偶的值。 在某些情況下,考慮到數據庫的效率,您可能更想存儲短的值(1 ,2,3和4),但人

力資源部的職員可能更具有描述性的值(單身、已婚、離異和喪偶)。CASE表達式簡化 了這種不同值集之間的轉換。

下列示例顯示具有多個 WHEN子句的CASE表達式,它返回stock表的manu_code列更 具有描述性的值。如果沒有任何WHEN條件為true,那么NULL是缺省的結果。(可以 省略ELSE NULL子句。)

SELECT

CASE

WHEN manu_code = “HRO” THEN “Hero”

WHEN manu_code = “SHM” THEN “Shimara”

WHEN manu_code = “PRC” THEN “ProCycle”

WHEN manu_code = “ANZ” THEN “Anza”

ELSE NULL

END

FROM stock;

在CASE表達式中必須至少包含一個 WHEN子句;后續的WHEN子句和ELSE子句 是可選的。如果沒有WHEN條件求值為true,那么結果值為NULL。可以使用IS NULL 表達式來處理為NULL值的結果。有關處理值(NULL)的信息,請參閱《GBase 8s SQL指 南:語法》。

下列查詢顯示了簡單的CASE表達式,它返回一個字符串值來標記0rders表中尚未交付給 客戶的任何訂單。

圖:查詢

SELECT order_num, order_date,

CASE

WHEN ship_date IS NULL

THEN “order not shipped”

END

FROM orders;

圖:查詢結果

ordejnum ordejdate (expression)

05/20/1998
05/21/1998
05/22/1998
05/22/1998
05/24/1998
05/30/1998 order not shipped
05/31/1998
07/11/1998
07/11/1998
07/23/1998
07/24/1998
07/24/1998
有關如何使用CASE表達式來更新列的信息,請參閱更新列的CASE表達式。

對派生列進行排序

當想要在表達式中使用ORDER BY時,可以使用指定給表達式的顯示標注或整數。如圖1?和圖3所示。

圖查詢

SELECT customejnum, call_code, call_dtime,

res_dtime - call_dtime span

FROM cust_calls ORDER BY span;

下列查詢從cust_calls表中檢索圖5所檢索的相同數據。在此查詢中,ORDER BY子句導 致以span列中派生值的升序顯示數據,如下所示。

圖: 查詢結果

customejnum call_code call_dtime span

127 I

1998-07-31 14:30

121 O

1998-07-10 14:05

0 00:01

106 D

1998-06-12 08:20

0 00:05

110 L

1998-07-07 10:24

0 00:06

116 I

1997-11-28 13:34

0 03:13

119 B

1998-07-01 15:00

0 17:21

116 I

1997-12-21 11:24

5 20:55

下列查詢使用整數表示運算res_dtime - call_dtime的結果,并檢索出現在上一結果中的相同 行。

圖查詢

SELECT customer_num, call_code, call_dtime,

res_dtime - call_dtime span

FROM cust_calls ORDER BY 4;

3.2.8在SELECT語句中使用Rowid值

數據庫服務器將唯一的rowid指定給未分片的表中的行。實際上,rowid是每個表中的隱藏 列。rowid的順序值沒有任何特殊意義,可能根據chunk中的物理數據的位置的不同而變 化。可以使用rowid來找到與表中的某行相關聯的內部記錄號。分片表中的行不自動包含 rowid 列。

建議您在應用程序中使用主鍵而不是rowid作為訪問的方法。因為主鍵是用SQL的 ANSI規范定義的,所以使用它們來訪問數據提高了應用程序的可移植性。另外,當數據 庫服務器使用主鍵時,它訪問分片表中的數據所需的時間比使用rowid時訪問相同數據所 需的時間要要少。

有關rowid的更多信息,請參閱《GBase 8s管理員指南》。

下列查詢在Projection子句中使用rowid和星號(*)來檢索manufact表中的每一行及其 相應的rowid o

圖查詢

SELECT rowid, * FROM manufact;

圖:查詢結果

rowid manu_code manu_name

lead_time

257 SMT

Smith

3

258 ANZ

Anza

5

259 NRG

Norge

7

260 HSK

Husky

5

261 HRO

Hero

4

262 SHM

Shimara

30

263 KAR

Karsten

21

264 NKL

Nikolus

8

265 PRC

ProCycle

9

不要在permanent表中存儲rowid或嘗試將它用作外鍵。如果刪除了一個表然后從外部數 據重新裝入它,那么所有rowid都將不同。

3.3多表SELECT語句

要從兩個或多個表中選擇數據,在FROM子句中指定表名。添加WHERE子句一章每個 表中的至少一個相關列間創建連接條件。WHERE子句創建臨時組合表。在其中,滿足連 接添加的每一對行都被鏈接以組成單個行。

簡單連接根據每個表中某列的關系組合來自兩個或多個表的信息。組合連接根據每個表中 兩個或多個列之間的關系連接兩個或多個表。

要創建連接,必須在每個表中至少一列之間指定稱為連接條件的關系。因為要對列進行比 較,所以它們必須具有兼容的數據類型。當連接大型表時,對連接條件中的列進行索引會 提高性能。

數據類型在GBase 8s SQL參考指南中描述。索引在GBase 8s管理員指南中詳細所討論。

3.3.1創建笛卡爾積

當執行未顯式聲明表之間的連接條件的多表查詢時,就創建了笛卡爾積。笛卡爾積由表的 行的每種可能的組合構成。此結果通常很大且不實用。

以下查詢從兩個表中進行選擇并生成笛卡爾積。

圖:查詢

SELECT * FROM customer, state;

state表只有52行,customer表只有28行,然而查詢的影響是將一個表的行數乘以另一 個表的行數并檢索不實用的1,456行,如下所示。

圖:查詢結果

customejnum 101

fname

Ludwig

lname

Pauli

company

All Sports Supplies

address1

213 Erstwild Court

address2

city

Sunnyvale

state

CA

zipcode

94086

phone

408-789-8075

code

AK

sname

Alaska

customer_num 101 fname Ludwig

Iname Pauli

company All Sports Supplies

address1 213 Erstwild Court

address2

city Sunnyvale

state CA

zipcode 94086

phone 408-789-8075

code HI

sname Hawaii

customer_num 101

fname

Ludwig

lname

Pauli

company

All Sports Supplies

address1

213 Erstwild Court

address2

city

Sunnyvale

state

CA

zipcode

94086

phone

408-789-8075

code

CA

sname

California

另外,顯示在連續行中的某些數據是矛盾的。例如:雖然customer表中的city和state指示 在California的地址,但是state表的code和sname可能是另一個州的。

3.3.2創建連接

在概念上,任何連接的第一階段是創建笛卡爾積,要改進或限制此笛卡爾積并除去數據行 的無意義組合,在SELECT語句的WHERE子句中包括有效的連接條件。

本節說明了跨連接、等值連接、自然連接和多表連接。其他復雜構成(如自連接和外鏈接) 在編寫高級SELECT語句中討論。

跨連接

跨連接組合所有選擇的表中的所有行并創建笛卡爾積。跨連接的結果可能會非常大并且難 于管理。

下列查詢使用ANSI連接語法創建跨連接。

圖:查詢

SELECT * FROM customer CROSS JOIN state;

該查詢的結果與圖1的結果完全相同。另外,可能通過指定WHERE子句來過濾跨連接。

有關笛卡爾積的更多信息,請參閱創建笛卡爾積。有關ANSI語法的更多信息,請參閱ANSI 連接語法。

等值連接

等值連接是基于相等或匹配列值的連接。在WHERE子句中,使用作為比較運算符的等號 (=)來表示這一相等關系。如下所示。

圖:查詢

SELECT * FROM manufact, stock

WHERE manufact.manu_code = stock.manu_code;

該查詢在manu_code列上連接manufact和stock表。它只檢索兩個列的值相等的那些行。 以下結果顯示了一些這樣的行。

圖:查詢結果

manu_code SMT

manu_name Smith

lead_time 3

stock_num 1

manu_code SMT

description baseball gloves

unit_price $450.00

unit

case

unit_descr

10 gloves/case

manu_code

SMT

manu_name

Smith

lead_time

3

stock_num

5

manu_code

SMT

description

tennis racquet

unit_price

$25.00

unit

each

unit descr

each

manu_code

SMT

manu_name

Smith

lead_time

3

stock_num

6

manu_code

SMT

description

tennis ball

unit_price

$36.00

unit

case

unit_descr

24 cans/case

manu_code

ANZ

manu_name

Anza

lead_time

5

stock_num

5

manu_code

ANZ

description

tennis racquet

unit_price

$19.80

unit

each

unit_descr

each

在等值連接中,該結果同時包括manufact和stock表中的manu_code列,原因是選擇列表 請求每個列。

還可以使用附加約束創建等值連接,此時比較條件基于連接列中值的不相等性。這些連接 在WHERE子句中指定的比較條件中除等號(=)之外還使用其他關系運算符。

要連接包含相同名稱的列的表,用列的表名和句點(.)限定每個列名,如下列查詢所示。

圖查詢

SELECT order_num, orde^date, ship_date, cust_calls.*

FROM orders, cust_calls

WHERE call_dtime >= ship_date

AND cust_calls.customer_num = orders.customer_num

ORDER BY orders.customejnum;

該查詢連接customer_num列,然后只選擇cust_calls表中call_dtime大于或等于orders表中 的ship_date那些行。該結果顯示它返回的組合行。

圖:查詢結果

order_num 1004

order_date 05/22/1998

ship_date 05/30/1998

customer_num 106

call_dtime 1998-06-12 08:20

user_id maryj

call_code D

call_descr Order received okay, but two of the cans of

ANZ tennis balls within the case were empty

res_dtime 1998-06-12 08:25

res_descr Authorized credit for two cans to customer,

issued apology. Called ANZ buyer to report

the qa problem.

order_num

1008

order_date

06/07/1998

ship_date

07/06/1998

customer_num

110

call_dtime

1998-07-07 10:24

user_id

richc

call_code

L

call_descr

Order placed one month ago (6/7) not received.

res_dtime

1998-07-07 10:30

res_descr

Checked with shipping (Ed Smith). Order out

yesterday-was waiting for goods from ANZ. Next time will call with delay if necessary.

order_num order_date ship_date

1023

07/24/1998

07/30/1998

customer_num 127

call_dtime user_id

1998-07-31 14:30

maryj

call_code call_descr

I

Received Hero watches (item # 304) instead

of ANZ watches

res_dtime res_descr

Sent memo to shipping to send ANZ item 304

to customer and pickup HRO watches. Should be done tomorrow, 8/1

自然連接

自然連接是等值連接的一種,構建它來使連接列不會多余地顯示數據,如以下查詢所示。

圖查詢

SELECT manu_name, lead_time, stock.*

FROM manufact, stock

WHERE manufact.manu_code = stock.manu_code;

類似等值連接的示例,該查詢在manu_code列上連接manufact和stock表。因為更接近地 定義了投影列表,所以只對檢索到的每一行列出一次manu_code,如下所示。

圖:查詢結果

manu_name Smith

lead_time

3

stock_num

1

manu_code

SMT

description

baseball gloves

unit_price

$450.00

unit

case

unit_descr

10 gloves/case

manu_name

Smith

lead_time

3

stock_num

5

manu_code

SMT

description

tennis racquet

unit_price

$25.00

unit

each

unit_descr

each

manu_name

Smith

lead_time

3

stock_num

6

manu_code

SMT

description

tennis ball

unit_price

$36.00

unit

case

unit_descr

24 cans/case

manu_name Anza

lead_time 5

stock_num 5 manu_code ANZ

description tennis racquet

unit_price $19.80 unit each

unit_descr each

所有的連接都是相關聯的。即,WHERE子句中的連接術語不影響連接的意義。

下列查詢中的兩個語句都創建相同的自然連接。

圖查詢

SELECT catalog.*, description, unit_price, unit, unit_descr

FROM catalog, stock

WHERE catalog.stock_num = stock.stock_num

AND catalog.manu_code = stock.manu_code

AND catalog_num = 10017;

SELECT catalog.*, description, unit_price, unit, unit_descr

FROM catalog, stock

WHERE catalog_num = 10017

AND catalog.manu_code = stock.manu_code

AND catalog.stock_num = stock.stock_num;

每個語句檢索到下列行。

圖:查詢結果

catalog_num 10017

stock_num 101

manu_code PRC

cat_descr

Reinforced, hand-finished tubular. Polyurethane belted.

Effective against punctures. Mixed tread for super wear and road grip.

cat_picture

cat_advert Ultimate in Puncture Protection, Tires

Designed for In-City Riding description bicycle tires unit_price $88.00 unit box

unit_descr 4/box

圖 3 包括 TEXT 列 cat_descr、BYTE 列 cat_picture 和 VARCHAR 列 cat_advert。

多表連接

多表連接在一個或多個相關聯列上連接兩個以上的表。它可以是等值連接或自然連接。

下列查詢在catalog、stock和manufact表上創建等值連接。

圖查詢

SELECT * FROM catalog, stock, manufact

WHERE catalog.stock_num = stock.stock_num

AND stock.manu_code = manufact.manu_code

AND catalog_num = 10025;

該查詢檢索到下列行。

圖: 查詢結果

catalog_num 10025

stock_num 106

manu_code PRC

cat_descr

Hard anodized alloy with pearl finish; 6mm hex bolt hard ware.

Available in lengths of 90-140mm in 10mm increments.

cat_picture

cat_advert

ProCycle Stem with Pearl Finish

stock_num

106

manu_code

PRC

description

bicycle stem

unit_price

$23.00

unit

each

unit_descr

each

manu_code

PRC

manu_name

ProCycle

lead_time

9

manu_code重復三次,每個表一次,stock_num重復兩次。

為避免多表查詢的大量重復(如圖1),在投影列表中包括特定的列以更確切地定義 SELECT語句,如下所示。

圖查詢

SELECT catalog.*, description, unit_price, unit,

unit_descr, manu_name, lead_time

FROM catalog, stock, manufact

WHERE catalog.stock_num = stock.stock_num

AND stock.manu_code = manufact.manu_code

AND catalog_num = 10025;

該查詢使用通配符來從具有大多數列的表中選擇所有列,然后從其他兩個表中指定列。下 表顯示了此查詢生成的自然連接。它與前一示例顯示相同的信息,但不重復。

圖:查詢結果

catalog_num 10025

stock_num 106

manu_code PRC

cat_descr

Hard anodized alloy with pearl finish. 6mm hex bolt

hardware. Available in lengths of 90-140mm in 10mm increments.

cat_picture

cat_advert

ProCycle Stem with Pearl Finish

description

bicycle stem

unit_price

$23.00

unit

each

unit_descr

each

manu_name

ProCycle

lead_time

9

3.3.3某些查詢快捷方式

可以使用別名,INTO TEMP子句和顯示標注來加快連接和多表查詢,并生成輸出以用于 其它用途。

別名

可以在SELECT語句的FROM子句中將別名指定給表,以使多表查詢更節省時間,可讀 性更高。每當要使用表名時,就可以使用別名,例如:在其他子句中作為列名的前綴。

圖查詢

SELECT s.stock_num, s.manu_code, s.description,

s.unit_price, c.catalog_num,

c.cat_advert, m.lead_time

FROM stock s, catalog c, manufact m

WHERE s.stock_num = c.stock_num

AND s.manu_code = c.manu_code

AND s.manu_code = m.manu_code

AND s.manu_code IN (‘HRO’, ‘HSK’)

AND s.stock_num BETWEEN 100 AND 301

ORDER BY catalog_num;

SELECT語句的相關特性允許您在定義別名之前使用別名。在此查詢中,stock表的別名 是s, catalog表的別名是c, manufact表的別名是m,它們分別在FROM子句中指定。并 在整個SELECT和 WHERE子句中用作列前綴。

將圖1的長度與下列查詢比較,后者不使用別名。

圖查詢

SELECT stock.stock_num, stock.manu_code, stock.description, stock.unit_price, catalog.catalog_num,

catalog.cat_advert, manufact.lead_time FROM stock, catalog, manufact

WHERE stock.stock_num = catalog.stock_num

AND stock.manu_code = catalog.manu_code

AND stock.manu_code = manufact.manu_code

AND stock.manu_code IN (‘HRO’, ‘HSK’)

AND stock.stock_num BETWEEN 100 AND 301

ORDER BY catalog_num;

圖1和圖2是等價的且都檢索到以下查詢顯示的數據。

圖:查詢結果

stock_num 110

manu_code HRO

description helmet unit_price $260.00 catalog_num 10033

cat_advert Lightweight Plastic with Vents Assures Cool

Comfort Without Sacrificing Protection

lead_time 4

stock_num 110

manu_code HSK

description helmet unit_price $308.00 catalog_num 10034

cat_advert Teardrop Design Used by Yellow Jerseys; You

Can Time the Difference

lead_time 5

不能將 ORDER BY 子句用于 TEXT 列 cat_descr 或 BYTE 列 cat_picture。

可以使用別名來縮短對不在當前數據庫中的表的查詢時間。

下列查詢連接駐留在不同數據庫和系統(均不是當前數據庫或系統)中的2個表中的列。

圖查詢

SELECT order_num, Iname, fname, phone

FROM masterdb@central:customer c, sales@western:orders o

WHERE c.customer_num = o.customer_num

AND order_num <= 1010;

通過分別將c和o指定給長database@system:table名

稱 masterdb@central:customer 和 sales@western:orders,您可以使用別名來縮短 WHERE 子 句中的表達式并檢索數據,如下所示。

圖:查詢結果

ordejnum lname

fname

phone

1001 Higgins

Anthony

415-368-1100

1002 Pauli

Ludwig

408-789-8075

1003 Higgins

Anthony

415-368-1100

1004 Watson

George

415-389-8789

1005 Parmelee

Jean

415-534-8822

1006 Lawson

Margaret

415-887-7235

1007 Sipes

Arnold

415-245-4578

1008 Jaeger

Roy

415-743-3611

1009 Keyes

Frances

408-277-7245

1010 Grant

Alfred

415-356-1123

有關如何訪問不在當前數據庫中的表的更多信息,請參閱訪問其他數據庫服務器和《GBase 8s SQL指南:語法》。

還可以使用同義詞作為不在當前數據庫中的表以及當前表和視圖的長名稱的簡寫引用。

INTO TEMP 子句

通過將INTO TEMP子句添加到您的SELECT語句,可以在獨立的表中臨時保存多表查 詢的結果,您可以查詢或處理該表,而無需修改數據庫。當結束SQL會話或者程序或報 告終止時,就會刪除臨時表。

下列查詢創建名為stockman的臨時表,并將在其中保存查詢的結果。由于臨時表中的所有 列都必須具有名稱,所以別名adj_price是必需的。

圖:查詢

SELECT DISTINCT stock_num, manu_name, description,

unit_price, unit_price * 1.05 adj_price

FROM stock, manufact

WHERE manufact.manu_code = stock.manu_code

INTO TEMP stockman;

SELECT * from stockman;

圖:查詢結果

stock_num manu_name description unit_price adj_price

1 Hero

baseball gloves

$250.00

$262.5000

1 Husky

baseball gloves

$800.00

$840.0000

1 Smith

baseball gloves

$450.00

$472.5000

2 Hero

baseball

$126.00

$132.3000

3 Husky

baseball bat

$240.00

$252.0000

4 Hero

football

$480.00

$504.0000

4 Husky

football

$960.00 $1008.0000

306 Shimara

tandem adapter

$190.00

$199.5000

307 ProCycle

infant jogger

$250.00

$262.5000

308 ProCycle

twin jogger

$280.00

$294.0000

309 Hero

ear drops

$40.00

$42.0000

309 Shimara

ear drops

$40.00

$42.0000

310 Anza

kick board

$84.00

$88.2000

310 Shimara

kick board

$80.00

$84.0000

311 Shimara

water gloves

$48.00

$50.4000

312 Hero

racer goggles

$72.00

$75.6000

312 Shimara

racer goggles

$96.00

$100.8000

313 Anza

swim cap

$60.00

$63.0000

313 Shimara

swim cap

$72.00

$75.6000

可以查詢此表并將該表與其它表連接,這可以避免多次排序,并使您能夠更快地在數據庫 中移動。有關臨時表的更多信息,請參閱《GBase 8s SQL指南:語法》和《GBase 8s管理 員指南》。

3.4總結

本章介紹了用于查詢關系數據庫的基本SELECT語句類型的語法示例和結果。單個表的SELECT語句一節顯示了如何執行以下操作:

使用Projection和FROM子句從表中選擇列和行
使用Projection、FROM和 WHERE子句從表中選擇行
在Projection子句中使用DISTINCT或UNIQUE關鍵字來消除查詢結果中重復的行
使用ORDER BY子句和DESC關鍵字來排序檢索的數據
? ????選擇包含非英語字符的數據值并對其排序

在 WHERE子句中使用BETWEEN、IN、MATCHES和LIKE關鍵字以及各
種關系運算符來創建比較條件

???????創建包括值、排除值、查找一定范圍內的值(使用關鍵字、關系運算符和下標)查找值的子集的比較條件

???????使用精確文本比較、變長通配符和受限及非受限通配符來執行變量文本搜索

使用邏輯運算符AND、OR和NOT來在WHERE子句中連接搜索條件或Boolean表達式
???????使用ESCAPE關鍵字來保護查詢中的特殊字符

在 WHERE子句中使用IS NULL和IS NOT NULL關鍵字來搜素NULL值
使用FIRST子句指定查詢只返回符合SELECT語句的條件的指定書目的行
???????在Projection子句中使用算術運算符對數字字段執行計算并顯示派生數據

???????將顯示標簽指定個計算列作為用于報告的格式化工具

本章還介紹了簡單連接條件,使您能夠從兩個或多個表中選擇和顯示數據。多表SELECT語句一節描述了如何執行下列操作:

?創建笛卡爾積

創建CROSS JOIN,它創建笛卡爾積
?在查詢中將WHERE子句與有效連接條件包括在一起以抑制笛卡爾積

?定義和創建自然連接和等值連接

?在一列或多列上連接兩個或多個表

?在多表查詢中使用別名作為快捷方式

?使用INTO TEMP子句將選擇的數據檢索到獨立的臨時表中,以便在數據庫外部執行計算

總結

以上是生活随笔為你收集整理的GBase 8s SQL 指南:教程———3编写SELECT语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人久久国产 | 日韩成人在线免费观看 | 999久久国产 | 在线观看激情av | 日日日天天天 | 国产精品美女在线 | av在线播放免费 | www.狠狠操 | 成年人在线免费视频观看 | 色婷五月天 | 国产精品视频永久免费播放 | 日韩免费在线观看视频 | 精品国产一区二区三区在线观看 | 四虎5151久久欧美毛片 | 成人免费在线播放 | 黄色一二级片 | 91一区二区三区久久久久国产乱 | 九九视频一区 | 国产成人av网站 | 久久免费资源 | 中文字幕在线看 | 国产自偷自拍 | 三级黄色片在线观看 | 国产日韩视频在线 | 免费观看性生活大片 | 国产不卡精品视频 | 香蕉视频4aa | 国产精品久久久久久久电影 | 久久精品影片 | 免费 在线 中文 日本 | 日韩一区二区三区在线观看 | 国产色秀视频 | 亚洲一二区视频 | 九九精品视频在线观看 | av在线网站大全 | 亚洲黄色免费在线看 | www.亚洲精品 | 超碰人人在 | 久草电影免费在线观看 | www.av免费观看 | 狠狠色丁香婷婷综合久小说久 | 中文字幕最新精品 | 在线亚州| 日韩在线三区 | 欧美一区二区在线刺激视频 | a在线视频v视频 | 亚洲三级影院 | 日本成人黄色片 | 午夜视频在线观看一区二区 | 成人h视频在线播放 | 91人人澡 | 欧美一区二区三区在线播放 | 亚洲最新精品 | 99草在线视频 | 国产九九精品 | 91黄色在线观看 | 国产成人精品一区二区三区网站观看 | 国产啊v在线观看 | 欧美精品一二三 | 三级毛片视频 | 四虎影视成人永久免费观看视频 | 99久久精品国产一区二区三区 | 日韩在线视频播放 | 99亚洲视频 | 中文字幕高清在线播放 | 国产亚洲精品福利 | 免费日韩三级 | 99热这里只有精品国产首页 | 精品一区二区在线免费观看 | 日韩专区一区二区 | 欧美a在线看 | 菠萝菠萝在线精品视频 | av线上免费观看 | 在线v片| 中文字幕专区高清在线观看 | 国产成人精品av在线 | 亚洲视频在线免费看 | 在线视频在线观看 | 国产中文字幕网 | www.久久久.cum | 最新99热 | av大全在线看 | 五月婷婷中文网 | 伊人色综合久久天天 | 成人xxxx| 樱空桃av| 天天玩天天干天天操 | 日本久久免费电影 | 最近中文字幕视频网 | 97精品国自产拍在线观看 | 香蕉影院在线 | 精品亚洲欧美一区 | 三级视频国产 | 日韩高清在线观看 | 成人超碰97 | 黄色成人免费电影 | 久产久精国产品 | 日韩视频欧美视频 | 在线播放精品一区二区三区 | 久久久久一区 | 人人爽网站| 五月婷久 | 免费看在线看www777 | 精品久久免费看 | 成人av电影免费观看 | 亚洲综合色视频在线观看 | 免费日韩 精品中文字幕视频在线 | 黄色国产在线观看 | 综合色站导航 | 午夜国产福利在线观看 | 日韩免费一二三区 | 国产精品一区二区免费看 | 奇米网444| 探花视频在线观看免费 | 日韩高清不卡在线 | a级片在线播放 | 深爱开心激情 | 日韩精品第一区 | 亚洲综合最新在线 | 精品久久久免费视频 | 国产一级片播放 | 久久99精品国产麻豆婷婷 | 日韩久久久久久久久久 | 免费日韩一区二区三区 | 天堂av在线免费 | 天天爱综合 | 456成人精品影院 | 97香蕉超级碰碰久久免费软件 | 成人av免费在线观看 | 国产九九九视频 | 97视频资源 | 精品在线观看免费 | 91精品啪在线观看国产线免费 | 最近日本韩国中文字幕 | 99精品久久久 | 69久久久久久久 | 美女网站视频免费都是黄 | 成人黄色av网站 | 久久久久国产精品午夜一区 | 婷婷六月激情 | 黄色在线看网站 | 久章操| av一级片在线观看 | 奇米网444| 国内视频一区二区 | 欧美日韩p片 | 91成人精品国产刺激国语对白 | 日本久久中文字幕 | 99视频在线免费 | 青草视频免费观看 | 国产午夜视频在线观看 | 黄色免费视频在线观看 | 亚洲视频 中文字幕 | 久久久久综合 | 在线国产黄色 | 国产黄视频在线观看 | 青青草视频精品 | 一二三区在线 | 涩涩网站在线看 | 久久久久亚洲最大xxxx | 五月天婷亚洲天综合网鲁鲁鲁 | 免费在线观看黄色网 | 久久99精品国产一区二区三区 | av在线免费在线观看 | 亚洲第一伊人 | 日日操日日干 | 欧美 日韩 国产 中文字幕 | 一级特黄av | 成人蜜桃视频 | 精品在线视频一区 | 国产成人久久精品77777综合 | 九色在线视频 | 亚洲日本一区二区在线 | 天堂v中文| 天天操天天操天天操天天操天天操天天操 | 亚洲欧美激情插 | 国精产品999国精产 久久久久 | 久久99久久99精品中文字幕 | 成人av高清在线观看 | 91视频在线观看大全 | 看黄色91| 日韩美在线 | 特黄色大片| 免费在线| 亚洲精品mv在线观看 | 伊人久久av| 亚洲精品国产免费 | 免费观看成年人视频 | 国产精品黑丝在线观看 | 国产免费亚洲高清 | 色婷婷五 | 亚洲午夜精品久久久久久久久久久久 | 狠狠躁夜夜躁人人爽超碰91 | 国产护士在线 | 国产乱码精品一区二区三区介绍 | 天天舔天天搞 | 亚洲欧美在线视频免费 | 日本精品视频在线观看 | 国产一级一片免费播放放 | 激情欧美日韩一区二区 | 国产免费一区二区三区最新 | 福利区在线观看 | 国产一区二区三区免费观看视频 | 婷婷五综合| 国产福利久久 | 久色网| 午夜精品福利影院 | 亚洲欧洲日韩 | 高清av免费一区中文字幕 | 涩涩网站在线观看 | 久久久久久久久久久久国产精品 | www夜夜操| 天天操人人要 | 99这里只有精品99 | 久久91久久久久麻豆精品 | 欧美福利视频一区 | 国产一区二区电影在线观看 | 欧美日韩18 | 丁香在线视频 | 天天干天天操天天 | 欧美日韩一区二区免费在线观看 | 免费观看完整版无人区 | 91精品少妇偷拍99 | 九九九视频精品 | 干天天 | 亚洲成人av电影在线 | 久久久久国产精品免费网站 | 激情视频久久 | 日韩激情一二三区 | 亚洲激情视频在线 | 日韩二级毛片 | 黄色小网站在线观看 | 81精品国产乱码久久久久久 | 色网av| 亚洲综合小说 | 91 在线视频播放 | 四虎在线观看精品视频 | 日韩中文字幕视频在线 | 国产精品自产拍在线观看桃花 | 黄色一区三区 | 99精品视频免费看 | 国产色啪| 69视频在线 | 久久免费视频网 | 精品女同一区二区三区在线观看 | 国产精品123 | 99精品国产福利在线观看免费 | 在线免费观看黄色av | 在线精品视频免费播放 | 天天干天天操av | 日韩精品免费一线在线观看 | 黄色小网站免费看 | 六月色播| 天天射天 | 在线 国产 亚洲 欧美 | 国产精品1区| 91黄色影视| 国产区在线视频 | 国产又粗又猛又爽又黄的视频先 | 黄污视频大全 | 久久视频这里只有精品 | 国产亚洲综合在线 | 国产日韩欧美在线一区 | 亚洲一区二区三区精品在线观看 | 特级a毛片 | 欧美性性网| 日韩精品视频免费专区在线播放 | 91精品国产综合久久福利 | 久久精品亚洲精品国产欧美 | 亚洲一区二区三区四区在线视频 | 久草视频精品 | 欧美性色综合网站 | 手机看国产毛片 | 亚在线播放中文视频 | 久久免费电影网 | 日本高清免费中文字幕 | www视频在线免费观看 | 亚洲精品伦理在线 | 天天操天天射天天爱 | 免费中午字幕无吗 | 国产成人高清av | 国产a网站 | 少妇性bbb搡bbb爽爽爽欧美 | 午夜精品电影 | 国产精品一区二区中文字幕 | 国产精品视频最多的网站 | 中文永久免费观看 | 国产aa免费视频 | 娇妻呻吟一区二区三区 | 欧美色一色 | 国产精品欧美精品 | 国产不卡在线视频 | 91av小视频| 国产香蕉视频在线播放 | 在线播放亚洲 | 国产精品久久久久永久免费观看 | 婷婷综合亚洲 | 久久成人麻豆午夜电影 | 国产精品一区二区三区在线 | 一二区电影 | a在线视频v视频 | 欧美性脚交 | 成人a毛片 | 97国产人人 | 日韩欧美aaa| 精品视频一区在线观看 | 成年人免费av | 天天射网站 | 久久久久久久久电影 | 91精品国产乱码在线观看 | 日本爱爱片 | 久在线| 精品一区二区电影 | 亚洲理论片在线观看 | 国产精品a成v人在线播放 | 男女啪啪网站 | 91久久国产精品 | 黄色三级网站 | 亚洲激精日韩激精欧美精品 | 欧美肥妇free| 色偷偷男人的天堂av | 99亚洲国产精品 | 国产视频一区精品 | 在线精品亚洲 | 国产探花在线看 | 成年人app网址 | 日韩理论电影在线 | 久久黄色小说视频 | 日韩欧美一区二区在线播放 | 国产精品久久久久久高潮 | 97小视频| 国产精品免费观看国产网曝瓜 | 在线看一区二区 | 免费在线国产精品 | 亚洲精品h | 国产网站在线免费观看 | 久草爱视频 | 亚洲狠狠丁香婷婷综合久久久 | 精品亚洲欧美一区 | 91少妇精拍在线播放 | 伊人亚洲精品 | 国产精品白浆视频 | 99久久精品久久久久久动态片 | 在线观看久久久久久 | 婷婷丁香激情综合 | 五月婷婷狠狠 | 亚洲精品一区二区三区高潮 | 亚洲码国产日韩欧美高潮在线播放 | 91麻豆精品91久久久久同性 | 色婷婷福利 | 成年人在线观看免费视频 | 久久综合九色综合97_ 久久久 | 亚洲精品一区二区精华 | 91污在线| 欧美成人黄色 | 久久精品视频网站 | 超碰国产在线 | 国产999精品久久久 免费a网站 | 尤物九九久久国产精品的分类 | 色婷婷狠狠18 | 97天堂| 久久天| 狠狠色丁香久久婷婷综合丁香 | 国内精品视频一区二区三区八戒 | 久久精品激情 | 一区二区理论片 | 中文视频一区二区 | 色福利网| 亚洲丝袜一区 | 日韩精品中文字幕一区二区 | 久久久久亚洲天堂 | 热九九精品 | 久久久2o19精品 | 国产视频在线观看一区 | 97精品国产91久久久久久 | 国内精品久久久久久 | 97视频在线看 | 久久九九久久精品 | 成人教育av| 久久精品视频免费 | 成人小电影在线看 | 韩国av一区二区三区在线观看 | 人人插人人澡 | av成人资源 | 欧美天天干 | 国产精品黑丝在线观看 | 4438全国亚洲精品在线观看视频 | 亚洲精品国精品久久99热一 | 久久 一区 | 91精品久久久久久综合乱菊 | 黄色大片国产 | 成人久久18免费网站图片 | 成人久久18免费 | av免费片| 西西444www大胆高清视频 | 丁香六月色 | 夜夜摸夜夜爽 | 久久久久久久久久久精 | 欧美日韩视频一区二区 | 97超碰人人在线 | 日韩免费在线一区 | 日本激情视频中文字幕 | 国产精品2区 | 婷婷在线色 | 国产中年夫妇高潮精品视频 | 久久字幕精品一区 | 中文字幕日韩免费视频 | 久草在线高清 | 亚洲 欧美 另类人妖 | 国产九九九视频 | 久久免费在线 | 国产第一页在线播放 | 91网站观看 | 日日日天天天 | 黄色三级免费看 | 91看片网址 | 久久综合综合久久综合 | 91在线欧美 | 午夜色站 | 免费看污的网站 | 一区二区电影在线观看 | 日韩伦理一区二区三区av在线 | 天天爱天天| www.色五月 | 婷婷丁香激情网 | 丝袜av网站 | 毛片一二区 | 国产123区在线观看 国产精品麻豆91 | 国产剧情一区 | 99热这里只有精品久久 | 日韩在线观看av | 国产中文字幕网 | 在线看小早川怜子av | 亚洲人在线视频 | 91麻豆精品国产自产在线 | 久久资源在线 | 亚洲区另类春色综合小说 | 日韩欧美高清在线观看 | 日韩综合精品 | 黄色大全视频 | 日日夜夜天天人人 | 亚洲欧美综合精品久久成人 | 国产精品18久久久久白浆 | 人人超碰免费 | 中文字幕一区二区三区在线播放 | 国产精品二区在线观看 | 欧美一级视频在线观看 | 九九热免费视频在线观看 | 久久伦理| 亚洲视频 一区 | 狠狠狠狠狠狠 | 最近中文字幕大全中文字幕免费 | 天天天干天天射天天天操 | 人人看97 | 亚洲视频电影在线 | 亚洲va韩国va欧美va精四季 | www.天天综合 | 久久视频国产精品免费视频在线 | 亚洲v欧美v国产v在线观看 | 在线观看涩涩 | 亚洲国产高清视频 | 日韩高清激情 | 爱情影院aqdy鲁丝片二区 | 伊人久久在线观看 | 免费视频一级片 | 美女在线免费观看视频 | 久草在线资源观看 | 麻豆久久一区 | 天天干天天拍天天操 | 日本黄色a级大片 | 中文字幕免费播放 | 99综合电影在线视频 | 亚洲成av人片在线观看www | 亚洲国产99 | 国产精品密入口果冻 | 毛片美女网站 | 国产精品国产三级国产 | 亚洲精品午夜久久久久久久 | 亚洲在线黄色 | 亚洲高清av | www亚洲国产 | 91av福利视频| av成人黄色 | 久久狠狠一本精品综合网 | 精品国产一区二区三区日日嗨 | 国产不卡一二三区 | 黄污在线看 | 五月婷婷在线视频观看 | 久久在现 | 深夜国产福利 | 久久综合九色综合欧美狠狠 | 五月婷婷天堂 | 久久99精品久久久久蜜臀 | 国产一级黄色电影 | 国产理论一区二区三区 | 免费观看mv大片高清 | 亚洲一级二级三级 | 欧美日产在线观看 | 久久不见久久见免费影院 | 97视频亚洲 | 中文字幕在线观看三区 | 亚洲亚洲精品在线观看 | 午夜久久久精品 | 麻豆高清免费国产一区 | 国产aaa毛片| 日韩av影片在线观看 | 精品福利视频在线 | 日韩欧美精选 | bbbbb女女女女女bbbbb国产 | 深爱五月激情五月 | 国产精品网红直播 | 一级欧美一级日韩 | 在线视频观看成人 | 日韩欧在线 | 免费观看一级特黄欧美大片 | 久久tv| 欧美日本高清视频 | 黄色资源在线观看 | 精品国产99国产精品 | 国产精品美女久久久久aⅴ 干干夜夜 | 婷婷丁香视频 | 精品国产精品国产偷麻豆 | 狠狠干网址 | 国产视频2| 中文字幕在线不卡国产视频 | 久久九九影视网 | 久久任你操| 五月天堂网 | 亚洲黄色在线免费观看 | 波多野结衣在线播放视频 | 亚洲精品91天天久久人人 | 久久久免费毛片 | 在线观看av片 | 成人影音av | 久久久久麻豆v国产 | 97精品国产一二三产区 | 超碰在线人人 | 韩国视频一区二区三区 | 亚洲精品综合在线 | 午夜在线资源 | 一区二区中文字幕在线观看 | 91精品夜夜 | 久久国产麻豆 | 黄色毛片视频免费观看中文 | 欧美激情精品久久久久久 | 西西444www大胆无视频 | 久久久久女人精品毛片九一 | 亚洲午夜电影网 | 夜夜操网站| 在线观看精品一区 | 国产做aⅴ在线视频播放 | 久久视频免费看 | 国产午夜在线观看 | 丁香视频全集免费观看 | 精品视频在线免费 | 日韩精品视频在线观看网址 | 超薄丝袜一二三区 | 色网站视频 | 一区二区三区在线观看免费 | 精品一区二区在线免费观看 | 99久久婷婷国产一区二区三区 | 久久精品久久综合 | 久久视精品 | 国产精品成人自拍 | 中文字幕在线观看亚洲 | 操久 | 高清精品视频 | 911国产在线观看 | 欧美做受高潮1 | 黄色av电影免费观看 | 天天操狠狠操夜夜操 | 91av影视| a级国产乱理论片在线观看 伊人宗合网 | 久久在线影院 | 久久久久久久久久网站 | 亚洲精品午夜视频 | 亚洲h在线播放在线观看h | 激情久久久久 | 日日夜夜天天久久 | 免费看黄在线看 | 欧美成人区 | 国产精品字幕 | 一区二区三区在线免费观看视频 | 日韩中文字幕免费在线播放 | 天天久久综合 | 久久精品男人的天堂 | 亚洲va欧美| 在线观看国产高清视频 | 亚洲精品视频播放 | 91在线看免费 | 中文字幕国产在线 | 国产手机在线精品 | 亚洲精品88欧美一区二区 | 亚洲精品视频在线观看网站 | 日韩在线国产精品 | 一级大片在线观看 | 久久精品第一页 | 成人蜜桃网 | 成人av影视观看 | 三级黄色网址 | 国产精品永久免费在线 | 视频成人永久免费视频 | 久久人91精品久久久久久不卡 | 高清视频一区 | 97超碰成人 | 丁香婷婷网 | 91激情在线视频 | 久久国产精品免费视频 | 激情五月五月婷婷 | 国产精品99久久久精品 | 狠狠色丁香久久婷婷综合_中 | 亚洲国产av精品毛片鲁大师 | 国产精品亚洲视频 | 国产999精品久久久久久 | 久久av中文字幕片 | 色婷婷激情四射 | 国产97在线看 | 欧美国产日韩一区二区三区 | 国产精品久久久av | 天天插狠狠插 | 色婷婷国产精品 | 亚洲欧美成人在线 | 少妇bbbb搡bbbb搡bbbb | www.亚洲精品在线 | 亚洲日本欧美在线 | 久草视频看看 | 碰碰影院 | 99国产在线视频 | 亚洲专区免费观看 | 精品国产中文字幕 | 久久精品人 | 国产天天爽 | 精品视频免费看 | 九七视频在线观看 | 婷婷综合影院 | 久久免费视频这里只有精品 | 丰满少妇对白在线偷拍 | 久久96国产精品久久99漫画 | 奇米影视8888 | 日韩av在线资源 | 久久精品国产99国产 | 91亚洲精品久久久 | 综合网五月天 | 国产一级a毛片视频爆浆 | 日韩激情网 | 久久婷婷一区 | 91av久久| 天天玩天天干 | 精品久久久久久久久久 | 亚洲 中文字幕av | 偷拍精品一区二区三区 | 国产精品你懂的在线观看 | 久久精品香蕉视频 | 亚洲一区二区天堂 | 97免费| 欧美人zozo | 日日操夜 | 日日干天天插 | 久久久精品视频成人 | 精品国产伦一区二区三区免费 | 9在线观看免费高清完整 | 久久不射电影院 | av在线超碰 | 韩国一区二区在线观看 | 四川妇女搡bbbb搡bbbb搡 | 在线观看免费色 | 国产午夜精品免费一区二区三区视频 | 日韩免费一区 | 在线看小早川怜子av | 一区二区三区电影 | 永久免费观看视频 | 久久中文欧美 | 久久国产精品偷 | 九月婷婷色 | 欧美九九视频 | 五月综合婷 | 日韩免费网址 | 国产女v资源在线观看 | 99色亚洲 | 九九在线播放 | 99re国产视频 | 免费色网| 国产精品免费久久久 | 99久久国产免费,99久久国产免费大片 | 精品久久久久久亚洲综合网站 | 久久久久久久影院 | 狠狠的日日 | 亚洲精品久久久蜜臀下载官网 | 中文字幕永久在线 | 在线免费观看成人 | 手机在线观看国产精品 | 中文字幕在线视频网站 | 日韩精品免费一区 | 国产精品永久久久久久久www | 久久国产精品免费一区二区三区 | 国产一级视频在线观看 | 91黄色在线观看 | 国产香蕉视频在线观看 | 亚洲免费av一区二区 | 伊人五月天婷婷 | 精品在线小视频 | 激情深爱.com | 亚洲一区av | 国产精品初高中精品久久 | 免费观看性生活大片3 | 伊人狠狠色丁香婷婷综合 | 国产精品99免视看9 国产精品毛片一区视频 | 国产精品18久久久久白浆 | 伊人激情综合 | 日韩在线电影一区 | 激情综合网五月 | 97日日碰人人模人人澡分享吧 | 午夜18视频在线观看 | 高清av影院 | 国产码电影 | 日韩精品久久中文字幕 | 日韩在线电影观看 | 免费观看特级毛片 | 日本成人a | 99久久久久久久 | 久久久999免费视频 日韩网站在线 | 91传媒91久久久 | 国内精品久久久久久久久久久 | 999久久久 | 99久久999久久久精玫瑰 | 欧美a级免费视频 | 人人插人人草 | 91成熟丰满女人少妇 | 国内精品久久久 | 午夜视频在线观看一区二区三区 | 欧美a性| 五月天丁香综合 | 天天插天天狠 | 最近中文字幕高清字幕免费mv | 一级电影免费在线观看 | 久久久久人人 | 亚洲综合在线观看视频 | 亚洲精品资源在线 | av高清一区二区三区 | 人人爽人人爽人人爽学生一级 | www久久| 在线免费观看国产精品 | 国产精品3| 亚洲精品国产精品国自 | 好看av在线| 日批视频在线观看免费 | 狠狠干.com| 亚洲天堂网视频 | 欧美激情h| 久久免费视频1 | 欧美一级免费在线 | 伊人看片 | 中文伊人| 91大神一区二区三区 | 久久婷综合 | 色综合久久久久久中文网 | 国产一区视频在线播放 | 日韩高清不卡一区二区三区 | 开心激情五月网 | 日韩精品欧美精品 | 国产精品毛片久久久久久久久久99999999 | 色综合天天色综合 | 亚洲精品ww| 一区二区三区免费 | 欧美在线久久 | 国产精品国产三级国产不产一地 | 日韩资源在线观看 | 亚洲精品国偷自产在线91正片 | 天天躁日日躁狠狠躁av麻豆 | 亚洲日韩欧美视频 | 91视频观看免费 | 九九精品视频在线看 | 午夜久草 | 9ⅰ精品久久久久久久久中文字幕 | 久久视频免费在线观看 | 色综合久久网 | 亚洲综合激情 | 中文字幕免费一区二区 | 欧美日韩亚洲精品在线 | 国产精品视频免费在线观看 | 丁香五香天综合情 | 久草资源在线观看 | 人人草在线视频 | 午夜精品在线看 | 亚洲黄色区 | 久综合网 | 91插插视频| 久艹在线观看视频 | 狠狠操精品| 欧美日韩国产一区二区三区在线观看 | 在线观看国产91 | 国产亚洲精品中文字幕 | 高清中文字幕 | 久草在线欧美 | 欧洲视频一区 | 美女视频久久 | 欧美网址在线观看 | 91精品小视频 | 欧美午夜久久 | 丁香激情视频 | 日韩成人精品在线观看 | 欧美精品久久 | 亚洲午夜精 | 亚洲一区二区视频在线播放 | 亚洲精品视频在线播放 | 久热免费在线观看 | 久久久国内精品 | 国产91国语对白在线 | 国产高清精品在线观看 | 91精品免费视频 | 97高清免费视频 | 色99导航 | 亚洲精品动漫在线 | 精品国产乱码久久久久久1区二区 | 99久e精品热线免费 99国产精品久久久久久久久久 | av成人免费在线观看 | 国产不卡片 | 天天插夜夜操 | 久久只精品99品免费久23小说 | 中文字幕一区二区三区在线播放 | 二区三区av | 不卡的av在线 | 亚洲精品视频免费观看 | 国内外成人免费在线视频 | 日韩一区二区免费在线观看 | a电影在线观看 | 欧美一区中文字幕 | 黄色免费网站 | 四虎永久网站 | 国产 视频 久久 | 亚洲网久久 | 美女免费网视频 | 97色综合 | 狠狠网亚洲精品 | 久久精品91久久久久久再现 | 欧美不卡视频在线 | 国产xx视频| 天天天天天天操 | 欧美日比视频 | 亚洲一区日韩精品 | 久久精品激情 | 欧美污污视频 | 免费久久网 | 永久免费在线 | av电影在线观看 | 亚洲精品99久久久久久 | 九九视频在线观看视频6 | 久草在线91 | 日韩精品在线免费播放 | 国产精品久久久电影 | 国产免费观看久久 | 国产啊v在线观看 | 国产aaa毛片 | 久热免费在线观看 | 黄色软件在线观看免费 | 久久精品中文字幕少妇 | 亚洲高清91 | 四虎成人精品永久免费av | 免费婷婷| 精品国产伦一区二区三区免费 | 久久少妇av | 精品国产乱码一区二区三区在线 | 婷婷深爱网 | 国产精品1区 | 亚洲黄色网络 | 国产精品久久久久影院 | 丁香视频免费观看 | 九九av| 51久久成人国产精品麻豆 | 久久兔费看a级 | 婷婷国产在线观看 | 99久久精品网 | 日韩极品视频在线观看 | 成人av电影在线观看 | 韩日精品视频 | 国产成人1区| 超碰免费成人 | 99精品欧美一区二区三区 | 狠狠色丁香久久综合网 | 国产婷婷 | 国产色 在线 | 日韩亚洲欧美中文字幕 | 国产视频 久久久 | 亚洲精品在线资源 | 国产夫妻自拍av | 亚洲精品毛片一级91精品 | 一级免费片 | 九九精品视频在线看 | www亚洲国产 | 欧美一级免费高清 | 激情婷婷久久 | 黄色三级在线 | 国产在线理论片 | 国产麻豆剧传媒免费观看 | 欧美精品一区二区免费 | 91av手机在线观看 | 亚洲精品乱码久久 | 丝袜+亚洲+另类+欧美+变态 | 不卡的av在线播放 | 国产高清视频在线 | 99国产一区二区三精品乱码 | 久久资源总站 | 中日韩欧美精彩视频 | 亚洲久草在线视频 | 久久网址 | 丁香花中文在线免费观看 | 丁香五香天综合情 | 黄在线免费看 | 亚洲国产免费av | 婷婷六月天综合 | 久草在线手机观看 | 欧美老人xxxx18| 亚洲精品色婷婷 | 国产 日韩 欧美 自拍 | 日本美女xx | 99视频在线观看免费 | 天天干夜夜干 | 欧美极品xxxxx | 国产一区二区在线影院 | 亚洲国产丝袜在线观看 | 99在线视频播放 | 国产在线毛片 | 五月天久久综合网 | 色婷婷97| av在线专区 | 视频一区二区在线观看 | 欧美乱淫视频 | 黄色一级在线免费观看 | 亚洲丝袜一区 | 91亚洲精品乱码久久久久久蜜桃 | 狠狠色丁香婷婷综合久小说久 | 97视频入口免费观看 | 国产精品午夜av | 精品一区二区免费在线观看 | 成人97视频 | 国产不卡免费 | 国产精品久久久久久久免费 | 国产精品婷婷午夜在线观看 | 99午夜| 国产美女视频一区 | 亚洲免费在线观看视频 | 欧美一级视频免费 | 久久免费视频4 | 91aaa在线观看| 欧美特一级 | 狠狠五月天 | 国产一区播放 | 国产亚洲精品久久网站 | 国内精品久久久久久久久久久 | 国产私拍在线 | 色悠悠久久综合 | 午夜的福利 | 久久久www成人免费毛片麻豆 | 久草精品视频在线看网站免费 | 久久免费电影网 | 中日韩免费视频 | 国产精品免费av | 在线观看国产v片 | 久久久久 免费视频 | av软件在线观看 | 欧美一级在线 | 亚洲国产精品传媒在线观看 | a爱爱视频| 成人a在线观看高清电影 | 91在线网址 | 亚洲国产视频直播 | 国产一区精品在线 | 狠狠狠色丁香婷婷综合久久五月 | 欧美不卡视频在线 | 欧美精品xx | 欧美亚洲三级 | 91尤物国产尤物福利在线播放 | 久久精品一二三区 | 看片一区二区三区 | 天天干天天草 | 激情视频久久 | 成人理论电影 | 国产精品日韩欧美一区二区 | 97精品超碰一区二区三区 | 国产一级淫片在线观看 | 久久9999久久免费精品国产 | 亚洲天堂网视频 | 一区二区三区高清在线观看 | 中文字幕丝袜美腿 | 欧美日韩中文字幕在线视频 | 日本中文在线 | 亚洲综合导航 | 国产精品专区一 | 91麻豆精品国产91久久久无限制版 | 免费观看版 | 国产一区av在线 | 国产999视频| 色综合咪咪久久网 | www色婷婷com | 欧美亚洲另类在线视频 | 国产专区在线 | 亚洲欧美在线视频免费 | 日韩av视屏在线观看 |