SQLite常用語句
資料類型
類型 | 描述 |
---|---|
NULL | 值是一個空值 |
INTEGER | 帶符号的整數,根據值得大小存儲在1、2、3、4、6或8位元組中。相容(等同于)其他資料庫的INT,INTEGER,TINYINT,SMALLINT,MEDIUMINT,BIGINT,UNSIGNED BIG INT,INT2,IN8 |
REAL | 浮點值,存儲8位元組的浮點數字。相容其他資料庫的REAL,DOUBLE,DOUBLE PRECISION,FLOAT |
TEXT | 一個文本字元串。相容其他資料庫的CHAR,VARCHAR,NCHAR等等 |
BLOB | 存儲blob資料 |
注意:
SQLite沒有一個單獨用于存儲日期或時間的存儲類型,但是SQLite能把日期和時間存儲為TEXT、REAL或INTEGER類型
存儲類型 | 日期格式 |
---|---|
TEXT | YYYY-MM-DD HH:mm:SS:SSS |
REAL | 從公元前4714年11月24日的正午開始算天數 |
INTEGER | 從1970-01-01 00:00:00 開始算秒數 |
建立表
文法
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
…
columnN datatype, );
執行個體
建立一個STUDENT表,ID為主鍵,NAME為TEXT類型非空,AGE為INT類型非空,ADDRESS為CHAR類型50字元以内可以為空:
CREATE TABLE STUDENT(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
);
删除表
文法
DROP TABLE database_name.table_name;
執行個體
删除表STUDENT
DROP TABLE STUDENT;
插入語句insert
文法
INSERT INTO TABLE_NAME [(column1, column2, column3,…columnN)]
VALUES (value1, value2, value3,…valueN);
執行個體
在STUDENT表中添加一條記錄,ID為1,NAME為ZS,AGE為21,ADDRESS為成都:
INSERT INTO STUDENT
(ID,NAME,AGE,ADDRESS)
VALUES
(1, ‘ZS’, 21, ‘成都’);
查詢語句select
文法
SELECT column1, column2, columnN FROM table_name;
執行個體
-
查詢STUDENT表的所有記錄
SELECT * FROM STUDENT
-
查詢STUDENT表中ID為1的記錄(WHERE)
SELECT * FROM STUDENT WHERE ID=1
-
查詢STUDENT表中ID為1的學生的姓名
SELECT NAME FROM STUDENT WHERE ID=1
-
查詢STUDENT表中NAME為ZS的學生的AGE和ADDRESS
SELECT AGE,ADDRESS FROM STUDENT FROM STUDENT WHERE NAME = 'ZS’
-
查詢AGE 大于等于 20 且ID大于1的所有記錄(AND)
SELECT * FROM STUDENT WHERE AGE >= 20 AND ID > 1
-
查詢AGE 大于等于 20 或ID大于1 的所有記錄(OR)
SELECT * FROM STUDENT WHERE AGE >= 20 OR ID > 1
-
查詢 ADDRESS為 NULL 的所有記錄(IS)
SELECT * FROM STUDENT WHERE ADDRESS IS NULL
-
查詢 ADDRESS不為 NULL 的所有記錄(NOT IS)
SELECT * FROM STUDENT WHERE ADDRESS IS NOT NULL
-
查詢 AGE 的值為 20 或 21 的所有記錄(IN)
SELECT * FROM STUDENT WHERE AGE IN ( 20, 21 );
-
查詢 AGE 的值既不為 20 又不為 21 的所有記錄(NOT IN)
SELECT * FROM STUDENT WHERE AGE NOT IN ( 20, 21 );
-
查詢 AGE 的值在 20 和 22 之間的所有記錄(BETWEEN…AND)
SELECT * FROM STUDENT WHERE AGE BETWEEN 20 AND 22;
-
查詢在ADDRESS為成都的學生中,AGE大于20的記錄
SELECT * FROM STUDENT WHERE AGE > (SELECT AGE FROM STUDENT WHERE ADDRESS = ‘成都’)
-
查詢在ADDRESS為成都的學生的AGE
SELECT AGE FROM STUDENT WHERE EXISTS (SELECT AGE FROM STUDENT WHERE ADDRESS = ‘成都’)
-
查詢學生資訊,隻顯示前3個(LIMIT)
SELECT * FROM STUTENT LIMIT 3
-
查詢學生資訊,隻顯示前3個,從第三個(偏移2位)開始數(LIMIT…OFFSET)
SELECT * FROM STUTENT LIMIT 3 OFFSET 2
-
查詢學生資訊,按AGE升序顯示(ORDER BY)
SELECT * FROM STUTENT ORDER BY AGE ASC
-
查詢學生資訊,按AGE降序顯示(ORDER BY)
SELECT * FROM STUTENT ORDER BY AGE DESC
-
查詢學生的NAME并消除重複記錄(DISTINCT)
SELECT DISTINCT NAME FROM STUDENT
模糊查詢
文法
-
SQLite 的 LIKE 運算符是用來比對通配符指定模式的文本值。如果搜尋表達式與模式表達式比對,LIKE 運算符将傳回真(true),也就是 1。這裡有兩個通配符與 LIKE 運算符一起使用:
百分号 (%)、下劃線 (_)
百分号(%)代表零個、一個或多個數字或字元。下劃線(_)代表一個單一的數字或字元。這些符号可以被組合使用:
SELECT column_list
FROM table_name
WHERE column LIKE ‘XXXX%’
or
SELECT column_list
FROM table_name
WHERE column LIKE ‘%XXXX%’
or
SELECT column_list
FROM table_name
WHERE column LIKE ‘XXXX_’
or
SELECT column_list
FROM table_name
WHERE column LIKE ‘_XXXX’
or
SELECT column_list
FROM table_name
WHERE column LIKE 'XXXX’
-
SQLite 的 GLOB 運算符是用來比對通配符指定模式的文本值。如果搜尋表達式與模式表達式比對,GLOB 運算符将傳回真(true),也就是 1。與 LIKE 運算符不同的是,GLOB 是大小寫敏感的,對于下面的通配符,它遵循 UNIX 的文法。
星号 (*)
問号 (?)
星号(*)代表零個、一個或多個數字或字元。問号(?)代表一個單一的數字或字元。這些符号可以被組合使用。
執行個體
-
查詢 NAME 以 ‘Z’ 開始的所有記錄
SELECT * FROM STUDENT WHERE NAME LIKE 'Z%'
-
查詢 NAME 以 ‘Z’ 結尾的所有記錄
SELECT * FROM STUDENT WHERE NAME LIKE '%Z’
-
查詢 NAME 包含 ‘Z’ 的所有記錄
SELECT * FROM STUDENT WHERE NAME LIKE '%Z%'
-
查詢 NAME 的 'Z’開頭兩位字元 的所有記錄
SELECT * FROM STUDENT WHERE NAME LIKE 'Z_'
内置函數
執行個體
-
求AGE平均數AVG()
SELECT AVG(AGE) AS “平均數” FROM STUDENT;
-
求AGE總數SUM()
SELECT SUM(AGE) AS “總年齡” FROM STUDENT;
-
求學生總數COUNT()
SELECT COUNT(*) AS “學生總數” FROM STUDENT;
-
求年齡最大值MAX()
SELECT MAX(AGE) FROM STUTENT
-
求年齡最小值MIN()
SELECT MIN(AGE) FROM STUTENT
-
把所有NAME的值改成大寫UPPER()
SELECT * UPPER(NAME) FROM STUTENT
-
把所有NAME的值改成小寫LOWER()
SELECT * LOWER(NAME) FROM STUTENT
-
擷取每條記錄NAME的長度LENGTH()
SELECT NAME,LENGTH(NAME) FROM STUDENT
修改語句UPDATE
文法
UPDATE table_name
SET column1 = value1, column2 = value2…, columnN = valueN
WHERE [condition];
執行個體
-
把ID為1的記錄的AGE修改為22
UPDATE STUDENT SET AGE = 22 WHERE ID = 1;
-
把所有記錄的AGE修改為22
UPDATE STUDENT SET AGE = 22;
删除語句DELETE
文法
DELETE FROM table_name
WHERE [condition];
執行個體
-
把ID為1的記錄從表中删除
DELETE FROM STUDENT WHERE ID = 1;
-
删除STUDENT表中的所有記錄
DELETE FROM STUDENT;
修改表 ALTER TABLE
文法
-
用來重命名已有的表的 ALTER TABLE 的基本文法如下:
ALTER TABLE database_name.table_name RENAME TO new_table_name;
-
用來在已有的表中添加一個新的列的 ALTER TABLE 的基本文法如下:
ALTER TABLE database_name.table_name ADD COLUMN column_def…;
執行個體
-
把表STUDENT的表名改為PERSON
ALTER TABLE STUDENT RENAME TO PERSON;
-
為表STUDENT添加一個新的列
ALTER TABLE STUDENT ADD COLUMN SEX CHAR(1);