一、優(yōu)點
1.不需要單獨的服務(wù)器進程或操作的系統(tǒng);2.不需要配置安裝;3.輕量級,無外部依賴;
二、命令 create,insert,select,update,alter,delete,drop
CREATE:創(chuàng)建一個新的表,一個表的視圖,或者數(shù)據(jù)庫中的其他對象。
ALTER:修改數(shù)據(jù)庫中的某個已有的數(shù)據(jù)庫對象,比如一個表。
DROP:刪除整個表,或者表的視圖,或者數(shù)據(jù)庫中的其他對象。
INSERT:創(chuàng)建一條記錄。
UPDATE:修改記錄。
DELETE:刪除記錄。
SELECT:從一個或多個表中檢索某些記錄。
三、命令eg
1.創(chuàng)建一個表,ID 作為主鍵,NOT NULL 表示在表中創(chuàng)建紀錄時這些字段不能為 NULL:
create table tablename(ID int integer primary key NOT NULL,name TEXT,past TEXT);
2.插入部分數(shù)據(jù)到表
insert into tablename (column1, column2, column3,...columnN) values(value1, value2, value3,...valueN);
3.如果要為表中的所有列添加值,您也可以不需要在 SQLite 查詢中指定列名稱。但要確保值的順序與列在表中的順序一致。SQLite 的 INSERT INTO 語法如下:
insert into tablename values(value1, value2, value3,...valueN);
4.用一個表來填充另一個表
insert into tablename (column1, column2, column3,...columnN)
select column1, column2, ...columnN
from destablename [WHERE condition];
5.UPDATE 查詢用于修改表中已有的記錄
eg:修改表內(nèi)ID=6的地址(address)
UPDATE tablename SET address="new add" where ID=6
四、邏輯運算符
1. EXISTS:用于在滿足一定條件的表中搜索行的存在
2. IN:IN 運算符用于把某個值與一系列指定列表的值進行比較。
eg:下面的 SELECT 語句列出了 AGE 的值為 25 或 27 的所有記錄:
SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
3. NOT IN:IN 運算符的對立面,用于把某個值與不在一系列指定列表的值進行比較。
eg:下面的 SELECT 語句列出了 AGE 的值既不是 25 也不是 27 的所有記錄:
SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
4. LIKE: LIKE 運算符用于把某個值與使用通配符運算符的相似值進行比較。
eg: NAME 以 'Ki' 開始的所有記錄,'Ki' 之后的字符不做限制:
select * from tablename where NAME like "ki%"
LIKE通常與兩個運算符一起使用(%,_),百分號(%)代表零個、一個或多個數(shù)字或字符。下劃線(_)代表一個單一的數(shù)字或字符。
WHERE SALARY LIKE '200%'?????? 查找以 200 開頭的任意值
WHERE SALARY LIKE '%200%'???? 查找任意位置包含 200 的任意值
WHERE SALARY LIKE '_00%'??????? 查找第二位和第三位為 00 的任意值
WHERE SALARY LIKE '2_%_%'???? 查找以 2 開頭,且長度至少為 3 個字符的任意值
WHERE SALARY LIKE '%2'??????????? 查找以 2 結(jié)尾的任意值
WHERE SALARY LIKE '_2%3'??????? 查找第二位為 2,且以 3 結(jié)尾的任意值
WHERE SALARY LIKE '2___3'?????? 查找長度為 5 位數(shù),且以 2 開頭以 3 結(jié)尾的任意值
5. GLOB:把某個值與使用通配符運算符的相似值進行比較。GLOB 與 LIKE 不同之處在于,它是大小寫敏感的。結(jié)合運算符星號(*)代表零個、一個或多個數(shù)字或字符。問號(?)代表一個單一的數(shù)字或字符。
WHERE SALARY GLOB '200*'????? 查找以 200 開頭的任意值????
WHERE SALARY GLOB '*200*'???? 查找任意位置包含 200 的任意值
WHERE SALARY GLOB '?00*'????? 查找第二位和第三位為 00 的任意值
WHERE SALARY GLOB '2??'??????? 查找以 2 開頭,且長度至少為 3 個字符的任意值
WHERE SALARY GLOB '*2'?????????? 查找以 2 結(jié)尾的任意值
WHERE SALARY GLOB '?2*3'?????? 查找第二位為 2,且以 3 結(jié)尾的任意值
WHERE SALARY GLOB '2???3'???? 查找長度為 5 位數(shù),且以 2 開頭以 3 結(jié)尾的任意值
eg:下面的 SELECT 語句列出了 NAME 以 'Ki' 開始的所有記錄,'Ki' 之后的字符不做限制:
SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
6. NOT:NOT 運算符是所用的邏輯運算符的對立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定運算符。
7. IS NULL:NULL 運算符用于把某個值與 NULL 值進行比較。
8. IS:IS 運算符與 = 相似。
9:IS NOT:IS NOT 運算符與 != 相似。
eg:SELECT 語句列出了 AGE 不為 NULL 的所有記錄,結(jié)果顯示所有的記錄:
slecet from tablename where AGE IS NOT NULL
10.UNIQUE:UNIQUE 運算符搜索指定表中的每一行,確保唯一性(無重復(fù))。
11. LIMIT 子句用于限制由 SELECT 語句返回的數(shù)據(jù)數(shù)量。
SELECT * FROM COMPANY LIMIT 6?? 取6行
SELECT * FROM COMPANY LIMIT 3 OFFSET 2;? 從第三位開始提取 3 個記錄
12. ORDER BY 子句是用來基于一個或多個列按升序或降序順序排列數(shù)據(jù)。
SELECT * FROM COMPANY ORDER BY SALARY ASC; 結(jié)果按 SALARY 升序排序
SELECT * FROM COMPANY ORDER BY NAME DESC; NAME 降序排序
? 13. GROUP BY 子句用于與 SELECT 語句一起使用,來對相同的數(shù)據(jù)進行分組。
在 SELECT 語句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。
14.HAVING 子句允許指定條件來過濾將出現(xiàn)在最終結(jié)果中的分組結(jié)果。
WHERE 子句在所選列上設(shè)置條件,而 HAVING 子句則在由 GROUP BY 子句創(chuàng)建的分組上設(shè)置條件。
eg:顯示名稱計數(shù)小于 2 的所有記錄:
SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;
15. DISTINCT 與 SELECT 一起使用,來消除所有重復(fù)的記錄,并只獲取唯一一次記錄。
SELECT DISTINCT name FROM COMPANY;