Sqlite3:Sqlite3命令列Linux操作
1.檢視sqlite版本
[[email protected] idoxu]$ sqlite3 -version
2.進入sqlite後臺操作
指定一個完整檔案的路徑名,開啟或者建立資料庫(檔案不存在,則建立),同時進入sqlite後臺操作程式。
[[email protected] 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')) -- 時間 );
文章轉載至: