select select_list [ into new_table ] from table_source [ where search_condition ] [ group by broup_by_expression ] [ having search_condition ] [order by order_by_expression [ asc | desc ]
select查詢語句中的主要參數說明以下html
select_list:查詢的列或者表達式的列表,用逗號進行分隔。 new_table:新的表名。 table_source:要查詢的表。若是是多個表,用逗號進行分隔。 search_condition:查詢條件。 group_by_expression:分組表達式。 order_by_expression:排序表達式。 asc:升序排序。 desc:降序排序。web
select查詢語句字句的功能列表數據庫
子句 | 主要功能 | 是否必需 |
select | 指定由查詢返回的列 | 是 |
from | 指定要查詢的表 | 是 |
into | 建立新表並將結果行插入新表中 | 否 |
where | 查詢條件 | 否 |
group by | 對查詢結果進行分組 | 否 |
order by | 對查詢結果進行排序 | 否 |
having | 對查詢結果進行篩選 | 否 |
選擇列表用於定義select語句的結果集中的列express
一、* 查詢全部列:服務器
select * from person
*就是結果集合,表示查詢person表中的全部列。函數
二、distinct 去除重複數據:性能
distinct是對全部列做用,也就是說,全部列都相同纔算重複數據。this
select distinct name from person
三、包含函數的查詢:spa
例如:code
select count(*) from person
from子句實際上就是用逗號分隔的表名、視圖名和join字句的列表。使用from子句能夠實現以下功能:
一、列出選擇列表和where子句引用的列所在的表和視圖。可使用as子句爲表和視圖指定別名。
二、聯接類型。這些類型由on子句中指定的聯接條件限定。
分配表名時可使用以下形式
須要特別說明的是,若是爲表分配了別名,那麼T-SQL語句中對該表的全部顯示引用都必須使用別名,而不能使用別名。
where子句能夠篩選結果集的源表中的行。帶有where子句的select語句的結構以下:
select <字段列表> from <表名> where<條件表達式>
其中,條件表達式是由各類字段、常量、表達式、關係運算符、邏輯運算符和特殊的運算符組合起來的。
where子句中的運算符:
一、關係運算符
關係運算符用來表示兩個表達式之間的比較關係。
關係運算符 | 含義 |
= | 等於 |
< | 小於 |
> | 大於 |
!=(或<>) | 不等於 |
>= | 大於等於 |
<= | 小於等於 |
!> | 不大於 |
!< | 不小於 |
二、邏輯運算符
邏輯運算符用於表示兩個表達式之間的邏輯關係:
邏輯運算符 | 含義 |
not | 非(否) |
and | 與 |
or | 或 |
三、特殊運算符
特殊運算符 | 含義 |
% | 通配符,一般與like配合使用 |
_ | 通配符,表明嚴格的一個字符。where name like '_xxx'將查找以xxx結尾的全部4個字母的名字(sxxx,dxxx等) |
[] | 指定範圍([a-f])或集合([abcdefg])中的任何單個字符。where name like '[a-f]xxxx',將超找以abcdef開頭,xxxx結尾的字符。 |
[^] | 不屬於指定範圍的([a-f])或集合([abcdefg])的任何單個字符。 |
between | 定義一個取值範圍區間,使用and分開。between開始值與and結束值。 |
like | 字符串匹配 |
in | 一個字段的值是否在一組定義的值之中 |
exists | 子查詢有結果集返回(則子查詢返回True) |
not exists | 子查詢沒有結果集返回(則子查詢返回True) |
is null | 字段是否爲null |
is not null | 字段是否不爲null |
在WHERE子句中使用EXISTS(若是使用得當的話)能夠大大提升性能。由於使用EXISTS時,只要找到和條件匹配的記錄,SQL Server就當即中止。假設有一個包含一百萬條記錄的表,而且在第三個記錄中找到了匹配的記錄,那麼使用EXISTS選項將避免讀取999997條記錄!NOT EXISTS以一樣的方式工做。
詳見地址:http://www.cnblogs.com/kissdodog/p/3365789.html
order by子句用於指定結果集的排序
一、語法結構:
select <字段名列表> from 數據庫表名 [where <條件表達式>] [order by[<字段名或者表達式> [asc|desc],...]]
order by子句能夠搭配where子句,也能夠和select、fromD搭配使用,而不須要where子句。
order by子句的語法以下:
[ order by { order_by_expression [ asc | desc] } [ ,...n ] ]
其中主要的參數說明以下:
order_by_espression:指定要排序的列、列的別名、表達式或者指定爲表明選擇列表內的名稱、別名或表達式的位置的負整數。
asc:按遞增順序對指定列中的值進行排序。
desc:按遞減順序對指定列中的值進行排序。
詳見地址:http://www.cnblogs.com/kissdodog/p/3365789.html
into子句將查詢結果生成新表,新表的結構由查詢字段列表組成。也能夠將查詢的結果送入tempdb數據庫的臨時表中,這樣關閉服務器以後臨時表會自動刪除。
into查詢的語法結構:
SELECT <字段名列表> [ into 新的數據表名 ] FROM 數據庫表名 [ where <條件表達式> ]