SQLite中SELECT基本形式

大學霸發表於2018-04-08
SQLite中SELECT基本形式
每個資料庫通常都包含多個表,而每個表又包含多條資料。要獲取資料庫中的資料,就需要SQL語言提供的查詢語句SELECT。本章將講解和SELECT語句相關的內容,其中包括SELECT基本形式、表示式、連線、分組、排序和去重、獲取子集、子查詢以及聯合查詢等。
3.1  SELECT基本形式
本節將講解SELECT語句的基本形式,其中包括基本完整形式、SELECT子句、FROM子句以及WHERE子句等
3.1.1  基本形式
以下是SELECT語法的基本完整形式:
SELECT [DISTINCT] select_heading
FROM source_tables
WHERE filter_expression
GROUP BY grouping_expressions
HAVING filter_expression
ORDER BY ordering_expressions
LIMIT count
OFFSET count
其中,引數說明如下:
? select_heading:用來定義最終結果表的格式和內容,主要是用來定義表的頭。
注意:在SQL中的資料結構就是表,表用於儲存資料和資料處理。表是由一個頭和體組成。頭定義了每列的名稱和型別(以SQLite為單位)。列名稱在表格中必須是唯一的。頭定義了列的順序,這些列作為表定義的一部分被修復。體包含了所有行。每一行由每列的一個資料元素組成。表中的每一列的所有行必須具有相同數量的資料元素,每個元素可以容納一個資料值(或一個NULL)。
  • FROM source_tables:指定一個或多個源表,並將它們組合成一個大的工作表。
  • WHERE filter_expression:對工作表中的特定行過濾。
  • GROUP BY grouping_expressions:用來指定分組。
  • HAVING filter_expression:過濾分組表中的特定行。
  • ORDER BY ordering_expressions:對結果集的行進行排序。
  • LIMIT count:將結果集輸出限制為特定數量的行。
  • OFFSET count:跳過結果集開頭的行。
注意:DISTINCT是可選的,用來消除重複的行。除了DISTINCT外,在SELECT語句中,附加子句(FROM、WHERE、GROUP BY等)都是可選的。
SELECT語句中的子句並不是按照它們寫入的順序進行執行的。其執行流程如圖3.1所示。
 
圖3.1  執行流程
注意:在圖3.1中R後面的數字可以認為是執行順序。
(1)查詢語句需要一個或者兩個源表。
(2)通過FROM子句,獲取一個R1表。
(3)WHERE子句對R1表中的行進行過濾,然後生成一個新的表R2。
(4)R2表通過GROUP BY子句然後進行分組,將R2表分組了對應的組,此時會出生成R3表。
(5)R3表再通過HAVING子句過濾表中特定行,生成R4表。
(6)R4表再通過SELECT子句執行要顯示的最終結果表的格式和內容,此時會生成R5表。
(7)R5表再使用DISTINCT關鍵字進行去重,此時會生成R6表。
(8)R6會通過ORDER BY子句進行排序,此時會生成R7表。
(9)R7表通過OFFSET子句跳過表的開頭的行,生成一個新的表R8表。
(10)R8表通過LIMIT子句限制為特定數量的行,此時會出顯示出最終的結果表Result。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2152662/,如需轉載,請註明出處,否則將追究法律責任。

相關文章