sqlite3 語句總結

2021-08-01 12:19:20 字數 3126 閱讀 1897

一、

sqlite3長用於 輕量級的 資料儲存,象微控制器這一類,但是現在的sqlite3,已經很先進,不能小看

二、sqlite3常用命令

當前目錄下建立或開啟test.db資料庫檔案,並進入sqlite命令終端,以sqlite>字首標識:

#sqlite3 test.db

檢視資料庫檔案資訊命令(注意命令前帶字元'.'):

sqlite>.database

檢視所有表的建立語句:

sqlite>.schema

檢視指定表的建立語句:

sqlite>.schema table_name

或sqlite>.exit

3、sqlite3指令

sql的指令格式:所有sql指令都是以分號(;)結尾,兩個減號(--)則表示注釋。

如:sqlite>create studen_table(stu_no interger primary key, name text not null, id interger unique, age interger check(age>6), school text default 'xx小學);

該語句建立乙個記錄學生資訊的資料表。

3.1 sqlite3儲存資料的型別

null:標識乙個null值

interger:整數型別

real:浮點數

text:字串

blob:二進位制數

3.2 sqlite3儲存資料的約束條件

sqlite常用約束條件如下:

primary key - 主鍵:

1)主鍵的值必須唯一,用於標識每一條記錄,如學生的學號

2)主鍵同時也是乙個索引,通過主鍵查詢記錄速度較快

3)主鍵如果是整數型別,該列的值可以自動增長

not null - 非空:

約束列記錄不能為空,否則報錯

unique - 唯一:

除主鍵外,約束其他列的資料的值唯一

check - 條件檢查:

約束該列的值必須符合條件才可存入

default - 預設值:

列資料中的值基本都是一樣的,這樣的字段列可設為預設值

3.3 sqlite3常用指令

1)建立資料表

create table table_name(field1 type1, field2 type1, ...);

table_name是要建立資料表名稱,fieldx是資料表內欄位名稱,typex則是字段型別。

例,建立乙個簡單的學生資訊表,它包含學號與姓名等學生資訊:

create table student_info(stu_no interger primary key, name text);

create table if not exists 表名(欄位名1,欄位名2...);  

2)新增資料記錄

insert into table_name(field1, field2, ...) values(val1, val2, ...);

valx為需要存入欄位的值。

例,往學生資訊表新增資料:

insert into student_info(stu_no, name) values(0001, alex);

3)修改資料記錄

update table_name set field1=val1, field2=val2 where expression;

where是sql語句中用於條件判斷的命令,expression為判斷表示式

例,修改學生資訊表學號為0001的資料記錄:

update student_info set stu_no=0001, name=hence where stu_no=0001;

4)刪除資料記錄

delete from table_name [where expression];

不加判斷條件則清空表所有資料記錄。

例,刪除學生資訊表學號為0001的資料記錄:

delete from student_info where stu_no=0001;

5)查詢資料記錄

select指令基本格式:

select columns from table_name [where expression];

a查詢輸出所有資料記錄

select * from table_name;

b限制輸出資料記錄數量

select * from table_name limit val;

c公升序輸出資料記錄

select * from table_name order by field asc;

d降序輸出資料記錄

select * from table_name order by field desc;

e條件查詢

select * from table_name where expression;

select * from table_name where field in ('val1', 'val2', 'val3');

select * from table_name where field between val1 and val2;

f查詢記錄數目

select count (*) from table_name;

g區分列資料

select distinct field from table_name;

有一些欄位的值可能會重複出現,distinct去掉重複項,將列中各字段值單個列出。

6)建立索引

當說資料表存在大量記錄,索引有助於加快查詢資料表速度。

create index index_name on table_name(field);

例,針對學生表stu_no欄位,建立乙個索引:

create index student_index on student_table(stu_no);

建立完成後,sqlite3在對該字段查詢時,會自動使用該索引。

7)刪除資料表或索引

drop table table_name;

drop index index_name;

使用sqlite3 模組操作sqlite3資料庫

python內建了sqlite3模組,可以操作流行的嵌入式資料庫sqlite3。如果看了我前面的使用 pymysql 操作mysql資料庫這篇文章就更簡單了。因為它們都遵循pep 249,所以操作方法幾乎相同。廢話就不多說了,直接看 吧。都差不多,首先匯入模組,然後建立連線,然後獲取游標物件,之後利...

SQLITE3 使用總結 4

下面是編譯時提示缺少的函式 這個函式不需要做任何處理,獲取金鑰的部分在下面derivekey 函式裡實現 void sqlite3codecgetkey sqlite3 db,int ndb,void key,int nkey 被sqlite 和sqlite3 key interop 呼叫,附加金鑰...

SQLITE3 使用總結(十)

五 效能優化 很多人直接就使用了,並未注意到sqlite也有配置引數,可以對效能進行調整。有時候,產生的結果會有很大影響。主要通過pragma指令來實現。比如 空間釋放 磁碟同步 cache大小等。不要開啟。前文提高了,vacuum的效率非常低!1 auto vacuum pragma auto v...