天天看點

SQLite常用語句

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);