SQLite中SELECT基本形式數據庫
每一個數據庫一般都包含多個表,而每一個表又包含多條數據。要獲取數據庫中的數據,就須要SQL語言提供的查詢語句SELECT。本章將講解和SELECT語句相關的內容,其中包括SELECT基本形式、表達式、鏈接、分組、排序和去重、獲取子集、子查詢以及聯合查詢等。express
3.1 SELECT基本形式數據結構
本節將講解SELECT語句的基本形式,其中包括基本完整形式、SELECT子句、FROM子句以及WHERE子句等排序
3.1.1 基本形式it
如下是SELECT語法的基本完整形式:io
SELECT [DISTINCT] select_headingtable
FROM source_tablesselect
WHERE filter_expression語法
GROUP BY grouping_expressionsim
HAVING filter_expression
ORDER BY ordering_expressions
LIMIT count
OFFSET count
其中,參數說明以下:
select_heading:用來定義最終結果表的格式和內容,主要是用來定義表的頭。
注意:在SQL中的數據結構就是表,表用於存儲數據和數據處理。表是由一個頭和體組成。頭定義了每列的名稱和類型(以SQLite爲單位)。列名稱在表格中必須是惟一的。頭定義了列的順序,這些列做爲表定義的一部分被修復。體包含了全部行。每一行由每列的一個數據元素組成。表中的每一列的全部行必須具備相同數量的數據元素,每一個元素能夠容納一個數據值(或一個NULL)。
注意: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。