那些年我們用過的SQL Select語句

來源:互聯網
上載者:User

       眾所周知在SQL的世界中共有九種SQL語句,而在這些語句中最複雜的就屬我們的Select語句了,它是我們資料庫中用的最多的語句,於是乎如果我們把Select語句掌握了那我們的SQL語言就至少掌握了一半多了。那麼就請跟隨我們介紹來學習Select語句吧。

       在我們找東西時最先採取的戰略是知道他放哪兒了,想到了放哪兒那就很好找了,相同的道理在進行資料檢索時,我們必須知道需要的資料放在哪兒了。當然了我們的Select語句可以有多個查詢字句組成也可進行Select語句的嵌套。

首先讓我們來認識下Select語句可用於哪些檢索:      


     SQL

可用於的查詢

全部的行和列;

全部的行和特定的列

限定的範圍的行

隱藏有重複值的行

與一組值匹配的行

根據未知值檢索的行

根據多個搜尋條件檢索的行

接下來我們開始認識Select語句的基本結構:

      Select[ALL | Distinct] select_list [INTO [new_table_name]] From {table_name |view_name} [[,{table_name2 | view_name2} […,{table_name16} ]] [Where search_conditions] [Group Bygroup_by_list] [Having search_conditons] [Order
By order_list [ASC|Desc]]

這是經過簡化後的Select結構,並不是SQL語句中的標準結構,上面簡化的是我們經常使用的結構。但那麼多的英文名字讓我們怎麼理解呢?不用著急,讓我來一一解讀。

Select語句——字句

Select字句指定了需要同多查詢返回表的列,它的文法為:Select [ALL|DISTINCT] [TOP n] <select_list>     

ALL

指明查詢結構中可以顯示值相同的列,它是系統預設的

ALL和Distinct的區別

在於all可以顯示相同

的值,而且它是系統

預設的但是distinct不

會顯示相同的值,遇到相同的列時

只顯示其中之一即可。

DISTINCT

指明查詢結果中如果有值相同的列,則只顯示其中的一列。

對Distinct選項來說,Null值被認為是相同的值;

TOP n [PERCENT]

制定返回查詢結果的前n行資料,如果percent關鍵字指定的話,

則返回查詢結果的前百分之n行資料

select_list

表示需要查詢的欄位的列表,欄位名稱之間用逗號分隔這個列

表中既可以包含資料來源表或視圖中的欄位名稱,換可以包含其它運算式。如用*,則系統將返回資料表中的所有欄位

當然我們還有其它的子句,下面我們按照分類來介紹每個子句。

  

INTO子句:

INTO子句:用於把查詢結果存放到一個建立的表中

 

文法為:INTO new_table

new_table制定了建立表的名稱,新表的列由

SELECT字句中指定的列構成

新表中的資料行是由WHERE字句指定的如果

SELECT字句中制定了計算資料行,在新表中對應

的列則不是計算資料行,而是一個實際儲存在表中的列其中的資料由執行SELECT_INTO文法運算。


UNION子句:

UNION子句:將兩個或兩個以上的查詢結果合并為一個結果集。它與使用串連查詢合并兩個表的列是不同的,

使用UNION操作符合并查詢結果需要遵循兩個基本規則:列的樹木和順序在所有查詢中必須是一致的;資料

類型必須相容

 

文法:

Select 語句

UNION [ALL]

Select 語句

注意:

①使用union子句獲得的結果集的欄位名稱與union運算子之前的select語句結果集中的欄位

名相同,union運算子之後的select與語句的結果集的欄位名將被忽略;

②在預設情況下,union運算子將從最終集中重複資料刪除的記錄。如果希望最終結果既保留所

有的記錄,則必須使用all關鍵字;

③在使用union運算子時,單獨的select語句中不能包含其自己的order by或compute子句,

只能在最後一個select語句的後面使用一個order by或compute子句,此時,該子句將適用

於最終的組合結果集;

④若需要對查詢結果進行分組以及在分組後對結果使用having子句進行過濾,則必須在單

獨的select語句中指定group by和having子句。


WHERE子句:

WHERE子句:指定需要檢索的條件,以限制返回的資料行

 

 

查詢條件

比較子:<、<=、>、>=、=、>、!=、!<、!>

範圍說明:Between A and B、Not Between A and B

可選值列表:IN、Not In

模式比對:LIKE,NOT Like

是否空值:IS NULL,IS Not Null

上述條件的邏輯組合:AND,OR,NOT


HAVING子句:指明分組搜尋條件,常與Group By子句一起使用。Text、Ntext、Image資料類型不能用於HAVING子句。其文法為:HAVING <search_condition>


FROM子句;

FROM子句:指定需要進行資料查詢的表

 

 

      文法為:FROM {<table_source>} [,…n]

 

table_source:指明SELECT語句要用到的表、視圖等資料來源,該列表中的資料表明和試圖名之間使用逗號分隔。

From子句還可以指定資料表或視圖之間聯結的類型,這些類型將決定於on子句中指定的串連條件。

GROUP BY子句:

GROUP BY子句:指定查詢結果的分組條件

 

文法為:

GROUP BY [ALL]

 <group_by_expression>

[,…n] 

[WITH {CUBE | ROLLUP}]

group_by_expression:指明分組條件。通常是一個

列名,但不能是列的別名。資料類型為TEXT、

NTEXT、IMAGE或BIT類型的列不能作為分組條件

CUBE:除了返回由GROUP BY子句指明的列外,

換返回按組統計的行。返回的結果先按分組的第一

個條件列排序顯示,以此類推。統計行包括了

GROUP BY子句指定的列的各種組合的資料統計。

ROLLUP:與CUBE不同的是,此選項對GROUP 

BY子句中的列順序敏感,它只返回第一個分組條

件指定的列的統計行,改編列的順序會使返回的

結果行數發生變化。


ORDER BY子句:

ORDER BY子句:指定查詢結果的相片順序

 

文法為:

ORDER BY 

{order_by_

expression

 [ASC | DESC] }

 [,…n]

 

order_by_expression:指定排序的規則order_by_expression

可以是表或視圖的列的名稱或別名,如果SELECT語句中沒有

使用DISTINCT選項或UNION 操作符,那麼ORDER BY子句中

可以包含select list中沒有出現的列名或別名。ORDER BY子句

中也不能使用TEXT、NTEXT和IMAGE資料類型。

ASC:指明查詢結果按升序排序這是系統預設值。

DESC:指明查詢結果按降序排列。

COMPUTE子句:

COMPUTE子句:在查詢結果末尾產生一個摘要資料行

 

 

文法:

Compute 

{ {AVG | COUNT 

| MAX | MIN | SUM}

(expression)}

 [,…n] [BY expression 

[,…n]]

expression:指定需要統計的列的名稱,此列需要包含於

SELECT列表中,且不能用別名。COMPUTE子句也不能

使用TEXT、NTEXT、和IMAGE資料類型。

BY expression:在查詢結果中產生分類統計的行。如果

使用此選項,則必須同時使用ORDER BY子句。

Expression是對應的ORDER BY子句中的

order_by_expression的子集或全集。

AVG | COUNT | MAX | MIN | SUM:以上參數與對應的函

數有相同的含義,這些函數均會忽略NULL值且DISTINCT

選項不能在此使用。


        對Select語句的應用無非就是對它的子句、函數和幾種查詢的應用,在此我們主要介紹了select語句的子句,在下片部落格中主要介紹SQL查詢命令,有不對的地方還請指出。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.