Sqlite3:Sqlite3命令行Linux操作


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

 

文章轉載至:https://www.jianshu.com/p/385965563b12


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM