Sqlite全面學習(二),sqlite學習

來源:互聯網
上載者:User

Sqlite全面學習(二),sqlite學習

PS一句:最終還是選擇CSDN來整理髮表這幾年的知識點,該文章平行遷移到CSDN。因為CSDN也支援MarkDown文法了,牛逼啊!

【工匠若水 http://blog.csdn.net/yanbober】

本篇繼續接上一篇,閱讀上一篇《Sqlite全面學習(一)》

SQLite建立資料庫

建立資料庫文法:

sqlite3 DatabaseName.db

如下展示一個執行個體:

SQLite附加資料庫

假設這樣一種情況,當在同一時間有多個資料庫可用,您想使用其中的任何一個。SQLite的ATTACH DTABASE語句是用來選擇一個特定的資料庫,使用該命令後,所有的SQLite語句將在附加的資料庫下執行。 ATTACH DATABASE語句添加另外一個資料庫檔案到當前的串連中,如果檔案名稱為”:memory:”,我們可以將其視為記憶體資料庫,記憶體資料庫無法持久化到磁碟檔案上。如果操作Attached資料庫中的表,則需要在表名前加資料庫名,如dbname.table_name。最後需要說明的是,如果一個事務包含多個Attached資料庫操作,那麼該事務仍然是原子的。

附加資料庫文法(Alias-Name的取值不能為main或者temp,系統的):

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

如下展示一個執行個體:

SQLite分離資料庫

SQLite的DETACH DTABASE語句是用來把命名資料庫從一個資料庫連接分離和游離出來,串連是之前使用ATTACH語句附加的。如果同一個資料庫檔案已經被附加上多個別名,DETACH 命令將只斷開給定名稱的串連,而其餘的仍然有效。您無法分離main或temp資料庫。如果資料庫是在記憶體中或者是臨時資料庫,則該資料庫將被摧毀,且內容將會丟失。

分離資料庫文法:

DETACH DATABASE 'Alias-Name';

如下展示一個執行個體:

SQLite建立表

SQLite的CREATE TABLE語句用於在任何給定的資料庫建立一個新表。建立基本表,涉及到命名表、定義列及每一列的資料類型。

建立表文法:

CREATE TABLE database_name.table_name(   column1 datatype  PRIMARY KEY(one or more columns),   column2 datatype,   column3 datatype,   .....   columnN datatype,);

如下展示一個執行個體:

SQLite刪除表

SQLite的DROP TABLE語句用來刪除表定義及其所有相關資料、索引、觸發器、約束和該表的許可權規範。使用此命令時要特別注意,因為一旦一個表被刪除,表中所有資訊也將永遠丟失。

刪除表文法:

DROP TABLE database_name.table_name;

如下展示一個執行個體:

SQLite Insert語句

SQLite的INSERT INTO語句用於向資料庫的某個表中添加新的資料行。
Insert語句文法:

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);

如果要為表中的所有列添加值,您也可以不需要在SQLite查詢中指定列名稱。但要確保值的順序與列在表中的順序一致。

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

也可以通過在一個有一組欄位的表上使用select語句填充資料到另一個表中(使用一個表來填充另一個表)。下面是文法:

INSERT INTO first_table_name [(column1, column2, ...columnN)] SELECT column1, column2, ...columnN FROM second_table_name [WHERE condition];

如下展示一個執行個體:

SQLite Select語句

SQLite的SELECT語句用於從SQLite資料庫表中擷取資料,以結果表的形式返回資料。這些結果表也被稱為結果集。

Select語句文法:

SELECT column1, column2, columnN FROM table_name;

如果您想擷取所有可用的欄位,那麼可以使用下面的文法:

SELECT * FROM table_name;

如下展示一個執行個體:

SQLite算術運算子
運算子 描述
+ 把運算子兩邊的值相加
- 左運算元減去右運算元
* 把運算子兩邊的值相乘
/ 左運算元除以右運算元
% 左運算元除以右運算元後得到的餘數

這個太小兒科就不示範例子了。

SQLite比較子
運算子 描述
== 檢查兩個運算元的值是否相等,如果相等則條件為真。
= 檢查兩個運算元的值是否相等,如果相等則條件為真。
!= 檢查兩個運算元的值是否相等,如果不相等則條件為真。
<> 檢查兩個運算元的值是否相等,如果不相等則條件為真。
> 檢查左運算元的值是否大於右運算元的值,如果是則條件為真。
< 檢查左運算元的值是否小於右運算元的值,如果是則條件為真。
>= 檢查左運算元的值是否大於等於右運算元的值,如果是則條件為真。
<= 檢查左運算元的值是否小於等於右運算元的值,如果是則條件為真。
!< 檢查左運算元的值是否不小於右運算元的值,如果是則條件為真。
!> 檢查左運算元的值是否不大於右運算元的值,如果是則條件為真。

這個太小兒科就不示範例子了,結合where語句使用就行。

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位元運算符

下表中列出了SQLite語言支援的位元運算符。

運算子 描述
& 二進位AND運算子。
/(一個豎線) 二進位OR運算子。
~ 二進位補碼運算子是一元運算子,具有”翻轉”位效應。
<< 左運算元的值向左移動右運算元指定的位元。
>> 右運算元的值向右移動右運算元指定的位元。

例子就不示範了。

SQLite布林運算式

SQLite的布林運算式在匹配單個值的基礎上擷取資料。

如下示範了SQLite布林運算式的用法:

SQLite數值運算式

數值運算式用來執行查詢中的任何數學運算。

文法:

SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION] ;

如下樣本:

SQLite日期運算式

日期運算式返回當前系統日期和時間值,這些運算式將被用於各種資料操作。

文法:

SELECT CURRENT_TIMESTAMP;

返回結果:
CURRENT_TIMESTAMP = 2013-03-17 10:43:35

SQLite Where子句

SQLite的WHERE子句用於指定從一個表或多個表中擷取資料的條件。如果滿足給定的條件,即為真(true)時,則從表中返回特定的值。您可以使用WHERE子句來過濾記錄,只擷取需要的記錄。WHERE子句不僅可用在SELECT語句中,它也可用在UPDATE、DELETE語句中。

文法:

SELECT column1, column2, columnN FROM table_name WHERE [condition]

例子就不BB了,上面有很多關於where子句的例子。

SQLite AND和OR運算子

SQLite的AND和OR運算子用於編譯多個條件來縮小在SQLite語句中所選的資料。這兩個運算子被稱為串連運算子。這些運算子為同一個SQLite語句中不同的運算子之間的多個比較提供了可能。

文法:

SELECT column1, column2, columnN FROM table_name WHERE [condition1] AND [condition2]...AND [conditionN];SELECT column1, column2, columnN FROM table_name WHERE [condition1] OR [condition2]...OR [conditionN];

例子就不BB了,上面有很多關於AND和OR的例子。

SQLite Update語句

SQLite的UPDATE查詢用於修改表中已有的記錄。可以使用帶有WHERE子句的UPDATE查詢來更新選定行,否則所有的行都會被更新。

文法:

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];

如下展示了一個執行個體:

SQLite Delete語句

SQLite的DELETE查詢用於刪除表中已有的記錄。可以使用帶有WHERE子句的DELETE查詢來刪除選定行,否則所有的記錄都會被刪除。

文法:

DELETE FROM table_name WHERE [condition];

例子就算了,比較easy。清除所有資料可以直接:DELETE FROM table_name;

SQLite Like子句

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

  • 百分比符號 (%)
  • 底線 (_)

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

文法:

SELECT FROM table_name WHERE column LIKE 'XXXX%';SELECT FROM table_name WHERE column LIKE 'XXXX_';

例子就算了,上面也有使用like的例子,比較easy。XXXX%和XXXX_都可以任意組合使用。

SQLite Glob子句

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

  • 星號 (*)
  • 問號 (?)

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

文法:

SELECT FROM table_name WHERE column GLOB 'XXXX*';SELECT FROM table_name WHERE column GLOB 'XXXX?';

例子就算了,上面也有使用glob的例子,比較easy。XXXX*和XXXX?都可以任意組合使用。

SQLite Limit子句

SQLite的LIMIT子句用於限制由SELECT語句返回的資料數量。

帶有LIMIT子句的SELECT語句基本文法:

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows]

LIMIT子句與OFFSET子句一起使用時的文法:

SELECT column1, column2, columnN FROM table_name LIMIT [no of rows] OFFSET [row num]

如下就是一個執行個體:

SQLite Order By關鍵字

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

文法:

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

您可以在ORDER BY子句中使用多個列。確保您使用的排序列在列清單中。ASC為升序,DESC為降序。

如下就是一個執行個體:

SQLite Group By關鍵字

SQLite的GROUP BY子句用於與SELECT語句一起使用,來對相同的資料進行分組。在SELECT語句中,GROUP BY子句放在WHERE子句之後,放在ORDER BY子句之前。

文法:

SELECT column-list FROM table_name WHERE [ conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN;

GROUP BY子句必須放在WHERE子句中的條件之後,必須放在ORDER BY子句之前。

如下就是一個執行個體:

SQLite Having子句

HAVING子句允許指定條件來過濾將出現在最終結果中的分組結果。WHERE子句在所選列上設定條件,而HAVING子句則在由GROUP BY子句建立的分組上設定條件。

下面是HAVING子句在SELECT查詢中的位置:

SELECT FROM WHERE GROUP BY HAVING ORDER BY

在一個查詢中,HAVING子句必須放在GROUP BY子句之後,必須放在ORDER BY子句之前。下面是包含HAVING子句的SELECT語句的文法:

SELECT column1, column2FROM table1, table2WHERE [ conditions ]GROUP BY column1, column2HAVING [ conditions ]ORDER BY column1, column2;

如下就是一個執行個體:

SQLite Distinct關鍵字

SQLite的DISTINCT關鍵字與SELECT語句一起使用,來消除所有重複的記錄,並只擷取唯一一次記錄。有可能出現一種情況,在一個表中有多個重複的記錄。當提取這樣的記錄時,DISTINCT關鍵字就顯得特別有意義,它只擷取唯一一次記錄,而不是擷取重複記錄。

文法:

SELECT DISTINCT column1, column2,.....columnN FROM table_nameWHERE [condition];

如下就是一個執行個體:

總結

至此,基本的Sqlite使用已經算是可以了。關於Sqlite更多知識點再下一篇會有詳細說明。閱讀下一篇《。。。。。等待》

【工匠若水 http://blog.csdn.net/yanbober】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.