查詢基本原理
查詢是針對儲存在 SQL Server 中的資料進行要求。可以使用以下數種形式來發出查詢:
MS Query 或 Microsoft Access 的使用者可使用圖形化使用者介面 (GUI),將所要查看的資料從一或多個 SQL Server 資料表中挑選出來。
SQL Server Management Studio 或 osql 公用程式的使用者可發出 SELECT 陳述式。
用戶端或以中層為基礎的應用程式 (例如 MicrosoftVisual Basic 應用程式),可將 SQL Server 資料表的資料對應到繫結控制項,例如方格 (Grid)。
雖然查詢與使用者之間有各種不同的互動方式,但完成的工作卻相同:查詢將 SELECT 陳述式的結果集呈現給使用者。即使使用者未曾指定 SELECT 陳述式,就如同使用 Visual Studio Query Designer 之類的圖形工具一樣,用戶端軟體仍然會把每個使用者的查詢轉換成傳送到 SQL Server 的 SELECT 陳述式。
SELECT 陳述式從 SQL Server 中擷取資料,並以一或多個結果集傳回資料給使用者。結果集是從 SELECT 而來的資料表格化排列。如同 SQL 資料表一樣,結果集是由資料行與資料列所組成。
SELECT 陳述式的完整語法非常複雜,但大部份的 SELECT 陳述式描述了結果集的四個主要屬性:
位於結果集之中的資料行數量與屬性。每個結果集資料行必須定義下列屬性:
資料行的資料類型。
資料行的大小,對於數值資料行而言則是精確度與小數位數。
資料行中傳回之資料值的來源。
所擷取之結果集資料的來源資料表,以及資料表之間的任何邏輯關係。
來源資料表中的資料列條件必須符合 SELECT 中所限定的條件。將會忽略與條件不符的資料列。
傳回到資料行的資料值來源。
下列 SELECT 陳述式尋找產品單價超過 $40 的產品識別碼、名稱及定價:
SELECT ProductID, Name, ListPrice
FROM Production.Product
WHERE ListPrice > $40
ORDER BY ListPrice ASC
列於選取清單中 SELECT 關鍵字後面的資料行名稱 (ProductID、Name 以及 ListPrice)。清單中指定結果集有三個資料行,且每個資料行擁有 Product 資料表中相關資料行的名稱、資料類型及大小。由於 FROM 子句僅指定一個基底資料表,因此 SELECT 陳述式中的所有資料行名稱指的便是位於該資料表的資料行。
FROM 子句列出 Product 資料表,此為擷取資料的來源資料表。
WHERE 子句指定只有 Product 資料表中 ListPrice 資料行的值超過 $40 的資料列,才符合此 SELECT 陳述式所限定的條件。
ORDER BY 子句指定結果集是依照 ListPrice 資料行值的遞增順序 (ASC) 來排序。