1 T-SQL中SELECT語法結構
<SELECT statement> ::= [WITH <common_table_expression> [,...n]] <query_expression> [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] } [ ,...n ] ] [ <FOR Clause>] [ OPTION ( <query_hint> [ ,...n ] ) ] <query_expression> ::= { <query_specification> | ( <query_expression> ) } [ { UNION [ ALL ] | EXCEPT | INTERSECT } <query_specification> | ( <query_expression> ) [...n ] ] <query_specification> ::= SELECT [ ALL | DISTINCT ] [TOP ( expression ) [PERCENT] [ WITH TIES ] ] < select_list > [ INTO new_table ] [ FROM { <table_source> } [ ,...n ] ] [ WHERE <search_condition> ] [ <GROUP BY> ] [ HAVING < search_condition > ]
2 基本SELECT查詢
SELECT * FROM [dbo].[Product]
使用星號(*)萬用字元時,將返回全部列,列按照定義表的時候的順序顯示。
3 查詢記錄中指定欄位
在不需要資料表中全部欄位值時,可以指定需要查詢的欄位名稱,這樣不僅顯示的結果更清晰,而且能提高查詢的效率。
SELECT [ProductID],[ProductName] FROM [dbo].[Product]
4 在查詢結果中使用表示式
SELECT [ProductID], [ProductName], [UnitPrice] * 2 AS DoubleUnitPrice FROM [dbo].[Product]
AS關鍵字表示為表示式指定一個用於顯示的欄位名稱,這裡AS為一個可選引數,也可以不使用。
5 顯示部分查詢結果
當資料表中包含大量的資料時,可以通過指定顯示記錄數限制返回的結果集中的行數。
SELECT TOP [n | PERCENT] FROM table_name
TOP後面有兩個可選引數,n表示從查詢結果集返回指定的n行,PERCENT表示從結果集中返回指定的百分比數目的行。
SELECT TOP (10) * FROM [dbo].[Product]
SELECT TOP (10) PERCENT * FROM [dbo].[Product]
6 帶限制條件的查詢
資料庫中如果包含大量的資料,根據特殊要求,可能只須查詢表中的指定資料,既對資料進行過濾。在SELECT語句中使用WHERE字句,對資料進行過濾。
SELECT * FROM [dbo].[Product] WHERE [ProductID] <= 10
7 帶AND的多條件查詢
使用SELECT查詢時,可以增加查詢的限制條件,這樣可以使查詢的結果更加精確。在WHERE字句中使用AND操作符,限定滿足所有查詢條件的記錄才會被返回。可以使用AND連線兩個或多個查詢條件。多個條件表示式之間用AND分開。
SELECT * FROM [dbo].[Product] WHERE [ProductID] <= 10 AND [UnitPrice] >= 20
8 帶OR的多條件查詢
在WHERE宣告中使用OR操作符,表示只需要滿足其中一個條件的記錄即可返回。OR也可以連線兩個或多個查詢條件,多個條件表示式直接使用OR分開。
SELECT * FROM [dbo].[Product] WHERE [ProductID] <= 10 OR [UnitPrice] >= 20
9 使用LIKE運算子進行匹配查詢
在不能明確指定查詢的限定條件,可以使用LIKE運算子進行模式匹配查詢。在查詢時可以使用的萬用字元:
萬用字元 | 說明 |
---|---|
% | 包含零個或多個字元的任意字串 |
_ | 任何單個任意字元 |
[] | 指定範圍或集合中的單個字元 |
[^] | 不在指定範圍或集合中的單個字元 |
SELECT * FROM [dbo].[Product] WHERE [ProductName] LIKE '%LINQ'
SELECT [ProvinceID] ,[ProvinceCode] ,[ProvinceName] FROM [dbo].[Province] WHERE [ProvinceCode] LIKE '_10000'
SELECT [ProvinceID] ,[ProvinceCode] ,[ProvinceName] FROM [dbo].[Province] WHERE [ProvinceCode] LIKE '[1,2]10000'
SELECT [ProvinceID] ,[ProvinceCode] ,[ProvinceName] FROM [dbo].[Province] WHERE [ProvinceCode] LIKE '[^1,^2]10000'
10 使用BETWEEN ... AND查詢
BETWEEN ... AND運算子可以對查詢值限定一個查詢區間。
SELECT * FROM [dbo].[Product] WHERE [ProductID] BETWEEN 10 AND 20
等價於:
SELECT * FROM [dbo].[Product] WHERE [ProductID] >= 10 AND [ProductID] <= 20
11 對查詢結果進行排序
ORDER BY子句可以根據指定的欄位的值對查詢的結果進行排序,並可以指定排序方式(升序/降序)。
SELECT * FROM [dbo].[Product] ORDER BY [UnitPrice] DESC
ORDER BY子句可以對查詢結果進行升序排列,升序排列是預設的排序方式,在使用ORDER BY 子句升序排列時,可以使用ASC關鍵字,也可以省略該關鍵字。
12 使用GROUP BY聚合資料
SELECT [CategoryID], SUM([Quantity]) FROM [dbo].[Product] GROUP BY [CategoryID]