Sql Server系列:Select基本語句


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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM