1.查看sqlite版本
[istester@ietester.com idoxu]$ sqlite3 -version
2.進入sqlite后台操作
指定一個完整文件的路徑名,打開或者創建數據庫(文件不存在,則創建),同時進入sqlite后台操作程序。
[istester@ietester.com idoxu]$ sqlite3 dome.db
3.查看所有數據庫
#查看所有數據庫
sqlite>.database
4.查看所有表
#查看所有表
sqlite>.table
5.查看所有表的創建語句
#查看所有表的建表語句
sqlite>.schema
6.查看某個表的創建語句
#查看某表的建表語句
sqlite>.schema table_name
7.增刪改查命令
1)建立數據表
create table table_name(field1 type1, field2 type1, ...);
table_name是要創建數據表名稱,fieldx是數據表內字段名稱,typex則是字段類型。
例,建立一個簡單的學生信息表,它包含學號與姓名等學生信息:
create table student_istester(stu_no interger primary key, name text);
2)添加數據記錄
insert into table_name(field1, field2, ...) values(val1, val2, ...);
values為需要存入字段的值。
例,往學生信息表添加數據:
insert into student_istester(stu_no, name) values(0001, alex);
3)修改數據記錄
update table_name set field1=val1, field2=val2 where expression;
where是sql語句中用於條件判斷的命令,expression為判斷表達式
例,修改學生信息表學號為0001的數據記錄:
update student_istester set stu_no=0001, name=hence where stu_no=0001;
4)刪除數據記錄
delete from table_name [where expression];
不加判斷條件則清空表所有數據記錄。
例,刪除學生信息表學號為0001的數據記錄:
delete from student_istester 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;
注意:
指定INTEGER PRIMARY KEY AUTOINCREMENT 和不指定自增長字段用rowid有什么區別:
Sqlite中,一個自增長字段定義為INTEGER PRIMARY KEY AUTOINCREMENT,那么在插入一個新數據時,只需要將這個字段的值指定為NULL,即可由引擎自動設定其值,引擎會設定為最大的rowid+1。當然,也可以設置為非NULL的數字來自己指定這個值,但這樣就必須自己小心,不要引起沖突。當這個rowid的值大於所能表達的最大值 9223372036854775807 (3.0及以后版本的rowid最大值)后,rowid的新值會這個最大數之前隨機找一個沒被使用了的值。所以在rowid達到最大值前,rowid的值是嚴格單調增加的。
INTEGER PRIMARY KEY AUTOINCREMENT 自增長字段的算法與rowid稍微有些不同。
第一,在達到最大值后,rowid會找已被刪除的字段對應的rowid作為新值,而自增長字段則會丟出一個SQLITE_FULL的錯誤。
第二,自增長字段在增加新值時,是找一個從沒被使用過的rowid作為新值,而rowid則是找最大已存在的rowid+1。這里對應用的影響會比較大,尤其是一些對id值有依賴的元記錄,只適合使用自增長字段而不能用rowid。
附錄建表語句:
drop table test; create table test ( [tkid] integer PRIMARY KEY autoincrement, -- 設置主鍵 [tktype] int default 0, [tableid] varchar (50), [createdate] datetime default (datetime('now', 'localtime')) -- 時間 );