1. 程式人生 > 資料庫 >Sqlite3:Sqlite3命令列Linux操作

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'))    -- 時間
);

 

文章轉載至: