亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

SQL SELECT完整語法

2024-07-21 02:51:24
字體:
來源:轉載
供稿:網友

1.SELECT語法

SELECT[ALL|DISTINCT|DISTINCTROW|TOP]{*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}FROM tableexPRession[,…][IN externaldatabase][WHERE…][GROUP BY…][HAVING…][ORDER BY…]

注意 Where,GroupBy,Having,OrderBy 順序。

執行步驟:

先從from字句一個表或多個表創建工作表將where條件應用于1)的工作表,保留滿足條件的行GroupBy 將2)的結果分成多個組Having 將條件應用于3)組合的條件過濾,只保留符合要求的組。Order By對結果進行排序。

2.FROM子句

FROM子句是SELECT語句中必不可少的子句,可以使用FROM子句指定查詢所需要的數據源名稱。語法如下:

FROM table_source

其中,table_source指定要在SQL語句中使用的表,視圖。雖然語句中可用的表源個數的限值可以用內存和查詢中其他表達式的復雜性而有所不同,但一個語句中可最多使用256個表源。

注:如果查詢中引用了很多表,查詢性能會受到影響,編譯和優化時間也受到其他因素的影響。

3.WHERE子句

在數據庫中查詢數據時,有時只希望查詢所需要的數據,而非數據表中的所有數據,那么就可以使用SELECT語句中的WHERE子句來實現。

WHERE子句通過條件表達式描述關系中元組的選擇條件。數據庫系統處理該語句時,按行為單位,逐個檢查每個行是否滿足條件,將不滿足條件的行篩選掉。WHERE子句的基本格式如下:

WHERE search_conditions

其中,search_conditions為用戶所選所需要查詢數據行的條件,即查詢返回行記錄的滿足條件。對于用戶所需要的所有行,search_conditions條件為true;而對于其他行,search_conditions條件為false或未知。

WHERE子句使用的條件

類別 運算符 說明
比較運算符 =,<,>,<=,>=,<> 比較兩個表達式
邏輯運算符 AND ,OR, NOT 組合兩個表達式的運算結果或取反
范圍運算符 BETWEEN,NOT BETWEEN 搜索值是否在范圍內
列表運算符 IN,NOT IN 查詢值是否屬于列表值之一
字符匹配符 LIKE ,NOT LIKE 字符串是否匹配
未知值 IS NULL ,IS NOT NULL 查詢值是否為NULL

下面兩張表將在后面使用到

這里寫圖片描述

1.比較運算符

WHERE expression1 comparison_Operator expression2

expression1 ,expression2表示要比較的表達式 ,comparison_operator 比較運算符。

這里寫圖片描述

2.邏輯運算符

有時,在查詢時指定一個查詢條件也很難滿足用戶需求,需要同時指定多個查詢條件,那么久可以使用邏輯運算符將多個查詢條件連接起來。

WHERE NOT (expression|expression1 logical_operator expression2 )

logical_operator為邏輯運算符

運算符 功能
AND 只有所有條件滿足時才會返回結果結果
OR 只要其中一個條件滿足就會返回查詢結果
NOT 條件不成立時返回查詢結果

這里寫圖片描述

3.范圍運算符

在WHERE子句中使用BETWEEN關鍵字查詢在一定某個范圍內的數據,使用NOT BETWEEN關鍵字查找不在某一范圍內的數據。

WHERE expression [NOT] BETWEEN value AND value2

這里寫圖片描述

4.列表運算符

在WHERE子句中,使用IN關鍵字可以確定表達式的取值是否屬于某一列表值,同樣,如果查詢表達式不屬于某一列值時可以使用NOT IN 關鍵字。

WHERE expression [NOT] IN value_list

value_list為列表值,當值不止一個時需要將這些值用括號起來,各列表值之間使用逗號隔開。

這里寫圖片描述

5.字符匹配符

在WHERE子句中 使用字符匹配符LIKE或NOT LIKE 可以把表達式與字符串進行比較,從而實現對字符串的模糊查詢。語法如下:

WHERE expression [NOT] LIKE ‘string’

其中,[NOT]為可選項,‘string’表示進行比較的字符串。WHERE子句實現對字符串的模糊匹配,進行模糊匹配是在string字符串中使用通配符。

通配符 說明 示例
% 任意多個字符 H% 表示查詢以H開頭的任意字符串,如Hello —– %h 表示查詢以h結尾的任意字符串,如Growth —— %h% 表示查詢在任何位置包含字母的h的所有字–符串,如hui,zhi
_ 單個字符 H_ 表示查詢以H開頭,后面跟任意一個字符的兩位字符串,如Hi,He
[] 指定范圍的單個字符 H[ea]% 表示查詢以H開頭,第二個字符是e或a的所有字符串,如:Health,Hand ———- [A-G]% 表示查詢以A到G之間的任意字符開頭的所有字符串,如:Apple,Banana,Guide
[^] 不在指定范圍的單個字符 H[^ea]% 表示查詢以H開頭,的一個字符不是e或a的所有字符串,如:Hope,Hub ——— [^A_G]% 表示查詢不是以A到G之間的任意字符開頭的字符串,如;Job,Zoo

例如:查找【圖書表】中【圖書名】還有【人】的所有圖書

這里寫圖片描述

6.未知值

當查詢數據庫中的值為NULL時,可以使用包含IS NULL關鍵字的WHERE子句進行查詢。反之要查詢數據庫中的值不為NULL時,可以使用IS NOT NULL關鍵字。

WHERE column IS [NOT] NULL

例如:在【圖書表】中查詢還關鍵字不為NULL的數據

這里寫圖片描述

4.ORDER BY 子句

有些時候,在使用SELECT語句進行數據查詢后,想先看到眾多數據中最新的信息或某列的最大值,就可以使用ORDER BY子句對生成的結果集進行排序。ORDER BY子句在SELECT語句中的語法格式:

ORDER BY order_experssion[ASC | DESC]

其中,order_experssion表示用于排序的列或列名及表達式。當有多個排序列時,每個排序了列用逗號隔開,而且列后都可以跟一個排序要求。

ASC—–升序排序(默認值)

DESC—降序排序

例如:將【圖書表】中的信息按【BookName】倒序排序

這里寫圖片描述

例如:將【圖書表】中的信息按【BookName】倒序排序和【BookID】倒序排序

這里寫圖片描述

5.GROUP BY 子句

使用GROUP BY 子句可以將查詢結果按照某一列數據值進行分類,換句話說,就是對查詢結果的信息進行歸納,以匯總相關數據。

GROUP BY group_by_expression[ WITH ROLLUP|CUBE ]

其中 ,group_by_expression表示分組所依據的列,ROLLUP表示只返回第一個分組條件指定的列的統計行,若改變列的順序就會使返回的結果行數據發生變化。CUBE是ROLLUP的擴展,表示除了返回由GROUP BY子句指定的列外,還返回按組統計的行。GROUP BY 子句通常與統計函數聯合使用。如下表:

函數名 功能
COUNT 求組中項數
SUM 求和
AVG 求平均值
MAX 求最大值
MIN 求最小值
ABS 求絕對值
ASCII 求ASCII碼
RAND 產生隨機數

在使用GROUP BY子句時,將GROUP BY子句中的列稱為分割列或分組列,而且必須保證SELECT語句中列是可計算的值并且GROUP BY列表中。

例如:查找【圖書表】中,相同書名的書籍存在多少本

這里寫圖片描述

6.HAVING

HAVING子句的用法類似WHERE子句,它指定了組或集合的搜索條件。HAVING子句通常與GROUP BY子句一起使用。HAVING子句的語法格式為:

HAVING search_conditions

其中search_conditions為查詢所需的條件,即返回查詢結果的滿足條件。在使用GROUP BY 子句時,HAVING子句將限定整個GROUP BY子句創建的組。其具體規則如下:

如果指定了GROUP BY 子句,則HAVING 子句的查詢條件應用于GROUP BY子句創建的組如果指定了WHERE子句而沒有指定GROUP BY子句,則HAVING子句的查詢條件將應用于WHERE子句的輸出結果集

如果既沒有指定WHERE子句又沒有指定GROUP BY子句,則HAVING子句的查詢條件將用于FROM子句的輸出結果集

這里寫圖片描述

在此查詢語句中。HAVING自己與WHERE子句一樣,可以使用各種運算符。

二:SELECT操作多表數據

在實際查詢應用中,用戶所需要的數據并不都是在一個表或視圖中,而是多個表中,這時就要使用多表查詢。多表查詢把多個表中數據組合,再從中獲取所需要的數據信息。多表查詢首先要在這些表中建立連接, 表之間的連接就是查詢的結果集,而實現連接的好處是在向數據庫添加新類型數據時沒有限制的,具有很大的靈活性。通常總是通過連接創建一個新表,以包含不同表中的數據。如果新表有合適的域,就可以把它連接到現有的表中。

1.JOIN連接

在進行多表操作時,最簡單的連接方式就是在SELECT語句中引用多個表的字段,在其FROM子句中用逗號將不同的基本表隔開。如果使用WHERE子句創建一個同等連接則能使查詢結果集更加豐富。同等連接是指第一個或多個列值與第二個基表中對應一個或多個列值相等的連接。通常情況下使用鍵碼建立連接,即一個基表中的主鍵碼與第二個基表中的外鍵碼保持一致,以保持整個數據庫的參照完整性。

用戶在進行基本連接操作時,可以遵循以下基本原則。

SELECT子句列表中,每個目標列都要加上基表名稱FROM子句應包括所有使用的基表WHERE子句應定義一個同等連接

例子:查詢【圖書表】和【關鍵字表】,通過BookCode相關聯

這里寫圖片描述

使用JOIN連接查詢和基本連接查詢一樣都是通過連接 多個表進行操作。其連接條件主要是通過以下方法定義。

指定每個表中用于連接的目標列。即在一個基本表中指定外鍵,在另一個基本表中指定與其關聯的鍵

指定在比較各目標列的值時要使用的比較運算符

連接可以在SELECT語句的FROM子句或WHERE子句中創建。連接條件WHERE子句和HAVING子句組合,用于控制在FROM子句引用的基表中所選定的行。JOIN連接查詢的語法格式為:

SELECT select_listFROM table1 join_type table [on join_conditions][WHERE search_conditions][ORDER BY order_expression]

上訴語法中,table1hetable2為基表,join_type指定連接類型,join_conditions指定連接條件。其中類型分為內連接,外連接,交叉連接和自連接。

2.內連接

內連接是一種比較常用的數據連接查詢方式,它使用比較運算符進行多個基表間數據的比較操作,并列出這些基表中與連接條件相匹配的所有數據行。一般用INNER JOIN或JOIN關鍵字來指定內連接,它是連接查詢默認的連接方式。

這里寫圖片描述

內連接返回的條件是:當且僅當至少有一個同屬于兩個表的行符合連接條件。內連接從第一個表中消除與另一個表中任何不匹配的行。(2張表都存在的行數據)

3.外鏈接

外連接與內連接不同,內連接消除與另一個表任何不匹配的行,外連接會返回From子句中提到的至少一個表或視圖所有的行,只要這些行符合任何搜索條件。因為在外鏈接中參與連接的表中有主次之分,以主表的數據行去匹配從表中的數據行如果符合連接條件則直接返回查詢結果中,如果主表中的行在從表中沒有找到匹配的行,主表的行任然保留返回查詢結果中,相應地表中的行被填上空值后也返回到查詢結果中。

鏈接方式 返回數據
左外連接(LEFT OUTER JOIN) 返回所有匹配行并從關鍵字JOIN左表中返回所有不匹配發行
右外連接(RIGHT OUTER JOIN) 返回所有匹配行并從關鍵字JOIN右表中返回所有不匹配發行
完全連接(FULL OUTER JOIN) 返回兩個表中所有匹配行和不匹配行

1. 左外連接 這里寫圖片描述

2.右外連接

這里寫圖片描述

3.完全連接

這里寫圖片描述

4.交叉連接

當對兩個基表使用交叉連接查詢時,將生成來自這兩個基表各行所有可能的組合。即在結果集中,兩個基表中每兩個可能成對的行占一行。在交叉連接中,查詢條件一般限定在WHERE子句中,查詢生成的結果集分為以下兩種情況:

不使用WHERE子句

當交叉連接查詢語句中沒有使用WHERE子句時,返回的結果集是被連接的兩個基表所有行的笛卡爾積,即返回到結果集中的行數等于一個基表中符合查詢條件的行數乘以另一個基表中的符合條件的行數。

使用WHERE子句

當交叉連接查詢語句中使用WHERE子句時,返回的結果集是被連接的兩個基表所有的行的笛卡爾積減去WHERE子句條件搜索到的數據的行數。

5.自連接

自連接是指一個表與自身相連接的查詢。自連接操作通過給基表定義別名的方式來實現。

這里寫圖片描述

6.聯合查詢

聯合查詢是指將多個不同的查詢結果連接在一起組成一組數據的查詢方式。聯合查詢使用UNION關鍵字連接SELECT子句,將兩個或多個查詢結果集組合為單個結果集,該集包含了所有查詢結果集匯總的全部行數據。

這里寫圖片描述

注:在使用UNION關鍵字進行聯合查詢時,應保證每個聯合查詢語句的選擇列表中具有相同數量的表達式,并且每個查詢選擇表達式應具有相同的數據類型,或者可以自動將它們轉化為相同的數據類型。在自動轉換時,對于數值類型,系統將低精度的數據類型轉換為高精度的數據類型

7.使用子查詢

子查詢和連接查詢一樣提供了使用單個查詢操作多個表中的數據的方法。子查詢在其他查詢結果的基礎上提供了一種有效的方式來表示WHERE子句的條件。子查詢可以分為返回多行的子查詢,返回單值和嵌套子查詢3種。

1.返回多行的子查詢

返回多行子查詢是指查詢語句獲得的結果集中返回了多行數據的子查詢。在子查詢中可以使用IN,EXISTS和比較運算符來連接表。

IN關鍵字 用來判斷一個表中指定列的值是否包含在已定義的列表或另一個表中。通過使用IN關鍵字把原表中目標列的值和子查詢的返回結果進行比較,如果列值與子查詢的結果一致或存在與之匹配的數據行,則查詢結果集中就包含該數據行。EXISTS關鍵字 表示子查詢不需要返回多行數據,而只需要返回一個真值或假值。也就是說,它的作用是在WHERE子句中測試子查詢返回的行是否存在。如果存在則返回真值,如果不返回則返回假值。比較運算符 與使用IN關鍵字引入的子查詢一樣,由比較運算符與一些關鍵字(ANY|ALL|SOME)引入的子查詢返回一個值列表。

2.返回單值的子查詢

例如:使用IN查詢–

這里寫圖片描述

3.嵌套子查詢

在SQL中子查詢是可以嵌套使用的,并且用戶可以在一個查詢中嵌套任意多個子查詢,即一個子查詢中還可以包含另一個子查詢。

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产一区二区丝袜高跟鞋图片| www欧美日韩| 亚洲精品电影在线| 91中文字幕在线| 亚洲精品久久久久久久久久久久| 91久久久亚洲精品| 美日韩精品视频免费看| 久久综合伊人77777蜜臀| 日韩hd视频在线观看| 欧美成人精品一区二区| 欧美黑人巨大xxx极品| 久久精品成人动漫| 国产精品视频99| 亚洲天堂开心观看| 日韩av手机在线观看| 亚洲人成网7777777国产| 亚洲电影中文字幕| 欧美高清视频在线播放| 欧美午夜无遮挡| 亚洲一区二区三区视频播放| 欧美成人第一页| 91国产一区在线| 亚洲欧洲国产精品| 中文字幕免费精品一区| 热草久综合在线| 国产视频久久久久久久| 欧美日韩另类字幕中文| 黑人巨大精品欧美一区二区一视频| 欧美激情亚洲另类| 国产精品wwww| 97久久精品在线| 国模吧一区二区三区| 久久亚洲国产精品成人av秋霞| 亚洲男人天堂2023| 狠狠躁天天躁日日躁欧美| 欧美另类xxx| 国产免费观看久久黄| 91福利视频网| 亚洲香蕉av在线一区二区三区| 草民午夜欧美限制a级福利片| 国内精品久久久久久中文字幕| 国产日本欧美在线观看| 欧美午夜久久久| 亚洲一区二区三区香蕉| 亚洲电影成人av99爱色| …久久精品99久久香蕉国产| 欧美黑人性生活视频| 久久久99免费视频| xxxx欧美18另类的高清| 精品少妇一区二区30p| 日韩成人在线免费观看| 97精品国产aⅴ7777| 精品国产一区二区三区在线观看| 色妞久久福利网| 97在线视频免费| 亚洲一区二区国产| 亚洲欧美日韩一区在线| 中文字幕亚洲欧美| 不卡伊人av在线播放| 欧美黑人性猛交| 国产福利视频一区二区| 亚洲精选一区二区| 日韩一区视频在线| 九色成人免费视频| 欧美亚洲在线观看| 国产欧美中文字幕| 欧美激情精品久久久| 91网站在线免费观看| 在线观看中文字幕亚洲| 国产丝袜一区二区三区免费视频| 亚洲国产天堂网精品网站| 中文字幕亚洲第一| 96精品久久久久中文字幕| 国语自产精品视频在免费| 色樱桃影院亚洲精品影院| 国产91精品不卡视频| 亚洲精品乱码久久久久久金桔影视| 国产久一一精品| 奇米一区二区三区四区久久| 国产精品高潮呻吟久久av无限| 国产成人aa精品一区在线播放| 国产三级精品网站| 26uuu日韩精品一区二区| 欧美精品xxx| 日韩在线视频观看正片免费网站| 中文字幕亚洲一区在线观看| 欧美日韩成人精品| 精品国产自在精品国产浪潮| 综合网日日天干夜夜久久| 欧美午夜精品在线| 欧美成人久久久| zzjj国产精品一区二区| 亚洲小视频在线观看| 国产精品视频99| 国产精品爽爽爽爽爽爽在线观看| 中文字幕欧美专区| 国产91免费看片| 国产亚洲精品一区二555| 日韩视频在线观看免费| 国产在线视频91| 精品夜色国产国偷在线| 2024亚洲男人天堂| 欧美在线激情视频| 久99久在线视频| 岛国av一区二区在线在线观看| 成人看片人aa| 91在线视频精品| 日韩欧美在线字幕| 色综合天天综合网国产成人网| 亚洲美女黄色片| 欧美精品在线免费观看| 亚洲深夜福利视频| 精品久久中文字幕久久av| 欧美夫妻性生活xx| 亚洲第一福利视频| 亚洲欧美中文字幕在线一区| 日韩美女中文字幕| 欧美视频在线观看 亚洲欧| 91人人爽人人爽人人精88v| 亚洲免费视频一区二区| 欧美日韩爱爱视频| 亚洲第一网站免费视频| 亚洲欧美激情一区| 亚洲天堂av高清| 亚洲最大的成人网| 高潮白浆女日韩av免费看| 日韩电影中文字幕一区| 国产91精品久久久久| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久久久久av| 成人a在线视频| 日韩中文在线观看| 精品视频久久久久久久| 久久精品色欧美aⅴ一区二区| 国产精品极品在线| 日韩欧美高清视频| 欧美电影免费观看高清完整| 91高清视频免费| 国产精品亚洲一区二区三区| 欧美激情按摩在线| 国产一区二区三区日韩欧美| 亚洲欧洲日产国产网站| 精品久久久久人成| 神马久久桃色视频| 亚洲欧美国产精品va在线观看| 少妇高潮久久久久久潘金莲| 亚洲999一在线观看www| 亚洲欧美国产高清va在线播| 欧洲s码亚洲m码精品一区| 亚洲free嫩bbb| 欧美亚洲一级片| 久久久久成人网| 国产精品久久久久999| 亚洲一区二区三区sesese| 久久手机免费视频| 欧美理论电影网| 成人国产精品av| 爱福利视频一区| 国产精品毛片a∨一区二区三区|国| 日韩精品亚洲精品| 久久久av亚洲男天堂| 久久久国产精品亚洲一区| 欧美中文字幕在线观看| 一色桃子一区二区|