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】