SQLite 基本知識

來源:互聯網
上載者:User

標籤:

SQLite是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。SQLite是一個增長最快的資料庫引擎,這是在普及方面的增長,與它的尺寸大小無關。SQLite 原始碼不受著作權限制。

為什麼要用 SQLite?

不需要一個單獨的伺服器處理序或操作的系統(無伺服器的)。

SQLite 不需要配置,這意味著不需要安裝或管理。

一個完整的 SQLite 資料庫是儲存在一個單一的跨平台的磁碟檔案。

SQLite 是非常小的,是輕量級的,完全配置時小於 400KiB,省略可選功能配置時小於250KiB。

SQLite 是自給自足的,這意味著不需要任何外部的依賴。

SQLite 事務是完全相容 ACID 的,允許從多個進程或安全執行緒訪問。

SQLite 支援 SQL92(SQL2)標準的大多數查詢語言的功能。

SQLite 使用 ANSI-C 編寫的,並提供了簡單和便於使用的 API。

SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。

DDL - 資料定義語言 (Data Definition Language)

CREATE
建立一個新的表,一個表的視圖,或者資料庫中的其他對象。

ALTER
修改資料庫中的某個已有的資料庫物件,比如一個表。

DROP
刪除整個表,或者表的視圖,或者資料庫中的其他對象。

DML - 資料操作語言

INSERT
建立一條記錄。

UPDATE
修改記錄。

DELETE
刪除記錄。

DQL - 資料查詢語言

SELECT
從一個或多個表中檢索某些記錄。

 

SQLite 是不區分大小寫的,但也有一些命令是大小寫敏感的,比如 GLOBglob 在 SQLite 的語句中有不同的含義。

SQLite 注釋是附加的注釋,可以在 SQLite 代碼中添加註釋以增加其可讀性,他們可以出現在任何空白處,包括在運算式內和其他 SQL 陳述式的中間,但它們不能嵌套。

SQL 注釋以兩個連續的 "-" 字元(ASCII 0x2d)開始,並擴充至下一個分行符號(ASCII 0x0a)或直到輸入結束,以先到者為準。

您也可以使用 C 風格的注釋,以 "/*" 開始,並擴充至下一個 "*/" 字元對或直到輸入結束,以先到者為準。SQLite的注釋可以跨越多行。

 

SQLite 儲存類

每個儲存在 SQLite 資料庫中的值都具有以下儲存類之一:

NULL
值是一個 NULL 值。

INTEGER
值是一個帶符號的整數,根據值的大小儲存在 1、2、3、4、6 或 8 位元組中。

REAL
值是一個浮點值,儲存為 8 位元組的 IEEE 浮點數字。

TEXT
值是一個文本字串,使用資料庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)儲存。

BLOB
值是一個 blob 資料,完全根據它的輸入儲存。

SQLite 的儲存類稍微比資料類型更普遍。INTEGER 儲存類,例如,包含 6 種不同的不同長度的整數資料類型。

SQLite Affinity 類型

SQLite 支援列上的類型 affinity 概念。任何列仍然可以儲存任何類型的資料,但列的首選儲存類是它的 affinity。在 SQLite3 資料庫中,每個表的列分配為以下類型的 affinity 之一:

TEXT
該列使用儲存類 NULL、TEXT 或 BLOB 儲存所有資料。

NUMERIC
該列可以包含使用所有五個儲存類的值。

INTEGER
與帶有 NUMERIC affinity 的列相同,在 CAST 運算式中帶有異常。

REAL
與帶有 NUMERIC affinity 的列相似,不同的是,它會強制把整數值轉換為浮點表示。

NONE
帶有 affinity NONE 的列,不會優先使用哪個儲存類,也不會嘗試把資料從一個儲存類強制轉換為另一個儲存類。

SQLite Affinity 及類型名稱

下表列出了當建立 SQLite3 表時可使用的各種資料類型名稱,同時也顯示了相應的應用 Affinity:

  • INT
  • INTEGER

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • BIGINT

  • UNSIGNED BIG INT

  • INT2

  • INT8

  • INTEGER
  • CHARACTER(20)

  • VARCHAR(255)

  • VARYING CHARACTER(255)

  • NCHAR(55)

  • NATIVE CHARACTER(70)

  • NVARCHAR(100)

  • TEXT

  • CLOB

  • TEXT
  • BLOB

  • no datatype specified

  • NONE
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

  • REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

  • NUMERIC


    Boolean 資料類型

    SQLite 沒有單獨的 Boolean 儲存類。相反,布爾值被儲存為整數 0(false)和 1(true)。

    Date 與 Time 資料類型

    SQLite 沒有一個單獨的用於儲存日期和/或時間的儲存類,但 SQLite 能夠把日期和時間儲存為 TEXT、REAL 或 INTEGER 值。

    儲存類
    日期格式

    TEXT
    格式為 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。

    REAL
    從公元前 4714 年 11 月 24 日格林尼治時間的正午開始算起的天數。

    INTEGER
    從 1970-01-01 00:00:00 UTC 算起的秒數。

    您可以以任何上述格式來儲存日期和時間,並且可以使用內建的日期和時間函數來自由轉換不同格式。

     

    SQLite 運算子是什嗎?

    運算子是一個保留字或字元,主要用於 SQLite 語句的 WHERE 子句中執行操作,如比較和算術運算。

    運算子用於指定 SQLite 語句中的條件,並在語句中串連多個條件。

    • 算術運算子

    • 比較子

    • 邏輯運算子

    • 位元運算符

    SQLite 算術運算子

    +
    加法 - 把運算子兩邊的值相加
    a + b 將得到 30

    -
    減法 - 左運算元減去右運算元
    a - b 將得到 -10

    *
    乘法 - 把運算子兩邊的值相乘
    a * b 將得到 200

    /
    除法 - 左運算元除以右運算元
    b / a 將得到 2

    %
    模數 - 左運算元除以右運算元後得到的餘數
    b % a will give 0

    SQLite 比較子

    ==
    檢查兩個運算元的值是否相等,如果相等則條件為真。
    (a == b) 不為真。

    =
    檢查兩個運算元的值是否相等,如果相等則條件為真。
    (a = b) 不為真。

    !=
    檢查兩個運算元的值是否相等,如果不相等則條件為真。
    (a != b) 為真。

    <>
    檢查兩個運算元的值是否相等,如果不相等則條件為真。
    (a <> b) 為真。

    >
    檢查左運算元的值是否大於右運算元的值,如果是則條件為真。
    (a > b) 不為真。

    <
    檢查左運算元的值是否小於右運算元的值,如果是則條件為真。
    (a < b) 為真。

    >=
    檢查左運算元的值是否大於等於右運算元的值,如果是則條件為真。
    (a >= b) 不為真。

    <=
    檢查左運算元的值是否小於等於右運算元的值,如果是則條件為真。
    (a <= b) 為真。

    !<
    檢查左運算元的值是否不小於右運算元的值,如果是則條件為真。
    (a !< b) 為假。

    !>
    檢查左運算元的值是否不大於右運算元的值,如果是則條件為真。
    (a !> b) 為真。

     

    SQLite 邏輯運算子

    AND
    AND 運算子允許在一個 SQL 陳述式的 WHERE 子句中的多個條件的存在。

    BETWEEN
    BETWEEN 運算子用於在給定最小值和最大值範圍內的一系列值中搜尋值。

    EXISTS
    EXISTS 運算子用於在滿足一定條件的指定表中搜尋行的存在。

    IN
    IN 運算子用於把某個值與一系列指定列表的值進行比較。

    NOT IN
    IN 運算子的對立面,用於把某個值與不在一系列指定列表的值進行比較。

    LIKE
    LIKE 運算子用於把某個值與使用萬用字元運算子的相似值進行比較。

    GLOB
    GLOB 運算子用於把某個值與使用萬用字元運算子的相似值進行比較。GLOB 與 LIKE 不同之處在於,它是大小寫敏感的。

    NOT
    NOT 運算子是所用的邏輯運算子的對立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定運算子。

    OR
    OR 運算子用於結合一個 SQL 陳述式的 WHERE 子句中的多個條件。

    IS NULL
    NULL 運算子用於把某個值與 NULL 值進行比較。

    IS
    IS 運算子與 = 相似。

    IS NOT
    IS NOT 運算子與 != 相似。

    ||
    串連兩個不同的字串,得到一個新的字串。

    UNIQUE
    UNIQUE 運算子搜尋指定表中的每一行,確保唯一性(無重複)。

    SQLite 位元運算符

    &
    如果同時存在於兩個運算元中,二進位 AND 運算子複製一位到結果中。
    (A & B) 將得到 12,即為 0000 1100

    |
    如果存在於任一運算元中,二進位 OR 運算子複製一位到結果中。
    (A | B) 將得到 61,即為 0011 1101

    ~
    二進位補碼運算子是一元運算子,具有"翻轉"位效應。
    (~A ) 將得到 -61,即為 1100 0011,2 的補碼形式,帶符號的位元。

    <<
    二進位左移運算子。左運算元的值向左移動右運算元指定的位元。
    A << 2 將得到 240,即為 1111 0000

    >>
    二進位右移運算子。左運算元的值向右移動右運算元指定的位元。
    A >> 2 將得到 15,即為 0000 1111

     

    LIKE 運算子是用來匹配萬用字元指定模式的文本值。如果搜尋運算式與模式運算式匹配,LIKE 運算子將返回真(true),也就是 1。這裡有兩個萬用字元與 LIKE 運算子一起使用:

    • 百分比符號 (%)

    • 底線 (_)

    百分比符號(%)代表零個、一個或多個數字或字元。底線(_)代表一個單一的數字或字元。這些符號可以被組合使用。

     

    GLOB 運算子是用來匹配萬用字元指定模式的文本值。如果搜尋運算式與模式運算式匹配,GLOB 運算子將返回真(true),也就是 1。與 LIKE 運算子不同的是,GLOB 是大小寫敏感的,對於下面的萬用字元,它遵循 UNIX 的文法。

    • 星號 (*)

    • 問號 (?)

    星號(*)代表零個、一個或多個數字或字元。問號(?)代表一個單一的數字或字元。這些符號可以被組合使用。

     

    ORDER BY 子句是用來基於一個或多個列按升序或降序順序排列資料。

    ORDER BY 子句的基本文法如下:

    SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];

    您可以在 ORDER BY 子句中使用多個列。確保您使用的排序列在列清單中。

     

    GROUP BY 子句用於與 SELECT 語句一起使用,來對相同的資料進行分組。

    在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之後,放在 ORDER BY 子句之前。

    HAVING 子句允許指定條件來過濾將出現在最終結果中的分組結果。

    WHERE 子句在所選列上設定條件,而 HAVING 子句則在由 GROUP BY 子句建立的分組上設定條件。

    DISTINCT 關鍵字與 SELECT 語句一起使用,來消除所有重複的記錄,並只擷取唯一一次記錄。

    有可能出現一種情況,在一個表中有多個重複的記錄。當提取這樣的記錄時,DISTINCT 關鍵字就顯得特別有意義,它只擷取唯一一次記錄,而不是擷取重複記錄

    SQLite 基本知識

    相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.