Sql Server系列:Select基本語句

libingql發表於2014-11-24

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]

相關文章