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]