SQL Server Select語句

本教程將介紹SQL Server SELECT語句的基礎知識,重點介紹如何針對單個表進行查詢。

SQL Server SELECT語句簡介

資料庫表是存儲資料庫中所有數據的對象。 在表中,數據按行和列格式邏輯組織,類似於電子錶格(Excel)。

在表中,每行代表一個唯一記錄,每列代表記錄中的一個字段。 例如,customers表包含客戶數據,如客戶標識號,名字,姓氏,電話,電子郵件和地址資訊,如下所示:

SQL Server使用模式對表和其他資料庫對象進行邏輯分組。 在示例資料庫(bb_stores)中,有兩個模式:salesproductionsales模式將所有與銷售相關的表分組,而production模式將所有與生產相關的表分組。

要從表中查詢數據,請使用SELECT語句。 以下是SELECT語句的最基本形式:

SELECT
    select_list
FROM
    schema_name.table_name;

在上面語法中,

  • 首先,select_list指定要在SELECT子句中查詢數據的逗號分隔列的列表。
  • 其次,schema_name.table_name是在FROM子句中指定源表及其模式名稱。

處理SELECT語句時,SQL Server首先處理FROM子句,然後處理SELECT子句,即使SELECT子句首先出現在查詢中也是一樣。

SQL Server SELECT語句示例

下麵將使用示例資料庫中的customers表進行演示。

1. SQL Server SELECT檢索表部分列示例

以下查詢查找所有客戶的名字和姓氏:

SELECT
    first_name,
    last_name
FROM
    sales.customers;

執行上面查詢語句,得到以下結果 -

查詢的結果稱為結果集

以下語句返回所有客戶的名字,姓氏和電子郵件:

SELECT
    first_name,
    last_name,
    email
FROM
    sales.customers;

執行上面查詢語句,得到以下結果:

2. SQL Server SELECT從表中檢索所有列的示例

要從表的所有列獲取數據,可以指定選擇列表中的所有列。 還可以使用SELECT *作為速記來減少一些書寫:

SELECT
    *
FROM
    sales.customers;

執行上面查詢語句,得到以下結果:

SELECT *對於檢查不熟悉表的列和數據非常有用,它對即席查詢也很有幫助。

但是,由於以下主要原因,不應將SELECT *用於實際生產代碼:

  • 首先,SELECT *經常檢索比應用程式需要運行的數據更多的數據。它會導致不必要的數據從SQL Server傳輸到客戶端應用程式,從而花費更多時間使數據通過網路傳輸並減慢應用程式的速度。
  • 其次,如果為表添加了一個或多個新列,則SELECT *只檢索包含新添加的列的所有列,這些列不打算在應用程式中使用,這可能會導致應用程式崩潰。

3. SQL Server SELECT - 對結果集進行排序

要根據一個或多個條件篩選行,請使用WHERE子句。在此示例中,查詢返回位於CA的客戶。如以下示例所示:

SELECT
    *
FROM
    sales.customers
WHERE
    state = 'CA';

執行上面查詢語句,得到以下結果:

當WHERE子句可用時,SQL Server按以下順序處理查詢的子句:FROMWHERESELECT。要基於一個或多個列對結果集進行排序,請使用ORDER BY子句,如以下示例所示:

SELECT
    *
FROM
    sales.customers
WHERE
    state = 'CA'
ORDER BY
    first_name;

執行上面查詢語句,得到以下結果:

在此示例中,ORDER BY子句按名字按昇冪對客戶進行排序。在這種情況下,SQL Server按以下順序處理查詢的子句:FROMWHERESELECTORDER BY

4. SQL Server SELECT - 將行分組為組示例

要將行分組,請使用GROUP BY子句。 例如,以下語句將返回位於CA的所有客戶以及每個城市的客戶數量。參考以下查詢語句:

SELECT
    city,
    COUNT (*)
FROM
    sales.customers
WHERE
    state = 'CA'
GROUP BY
    city
ORDER BY
    city;

執行上面查詢語句,得到以下結果:

在這種情況下,SQL Server按以下順序處理子句:FROMWHEREGROUP BYSELECTORDER BY

5. SQL Server SELECT - 過濾分組示例

要根據一個或多個條件篩選組,請使用HAVING子句。以下示例返回CA州擁有10個以上客戶的城市:

SELECT
    city,
    COUNT (*)
FROM
    sales.customers
WHERE
    state = 'CA'
GROUP BY
    city
HAVING
    COUNT (*) > 10
ORDER BY
    city;

執行上面查詢語句,得到以下結果:

請注意,WHERE子句在HAVING子句篩選器分組時篩選行。

在本教學中,學習了如何使用SQL Server SELECT語句從單個表中查詢數據。


上一篇: SQL Server數據查詢 下一篇: SQL Server連接表