sqlite3的使用

0、簡介

sqlite3是一款主要用於嵌入式的輕量級數據庫

sqlite3存儲數據的類型

NULL:標識一個NULL值

INTERGER:整數類型

REAL:浮點數

TEXT:字符串

BLOB:二進制數

sqlite3存儲數據的約束條件

Sqlite常用約束條件如下:

PRIMARY KEY - 主鍵:

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

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

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

NOT NULL - 非空:

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

UNIQUE - 唯一:

除主鍵外,約束其他列的數據的值唯一

CHECK - 條件檢查:

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

DEFAULT - 默認值:

列數據中的值基本都是一樣的,這樣的字段列可設爲默認值

1、安裝sqlite3

sudo apt-get install sqlite3

  查看版本信息

sqlite3 -version

2、新建或打開數據庫

# sqlite3 數據庫名字
sqlite3 student.db # 當前目錄下建立或打開student.db數據庫文件,並進入sqlite命令終端,以sqlite>前綴標識

3、數據庫命令(以"."開頭)

.help 輸出幫助信息

.database 查看數據庫文件信息

.tables 顯示錶

.schema 查看所有表

.schema <table_name> 查看指定表,顯示錶結構

.dump <table_name> 以sql語句的形式列出表內容

.separator <symble> 設置顯示信息的分隔符,如.separator :(默認爲"|")

.mode <mode_name> 設置顯示模式,如.mode column(默認爲list)

.width <width_value> 設置每一列的顯示寬度,如.width 2

.show 列出當前顯示格式的配置

.quit或.exit 退出sqlite終端

4、數據庫語句(以";"結尾,"--"表示註釋)

 (1) 創建數據表:

# create table table_name(field1 type1, field2 type1, ...);
create table student (id int primary key,name char,age int,sex char); # 創建一個記錄學生信息的數據表student

 (2) 向表中插入數據記錄:

# insert into <table_name> values (val1, val2, ...);
insert into student values (0,'alan_0',20,'m');
# insert into <table_name>(field1, field2, ...) values(val1, val2, ...);
insert into student(id, name, age, sex) values(1, 'alan_1', 20, 'm');

 (3) 修改數據記錄 

# update <table_name> set field1=val1, field2=val2 where expression; # where是sql語句中用於條件判斷的命令,expression爲判斷表達式
update student set name='alan_2', age=21 where name='alan_1';

 (4) 查詢數據記錄

# select columns from <table_name> [where expression];

  a)查詢輸出所有數據記錄

# select * from <table_name>;
select *from student;

  b)限制輸出數據記錄數量

# select * from <table_name> limit val;
select *from student limit 10;

  c)排序輸出數據記錄

# select * from <table_name> order by field asc;
select * from student order by age asc limit 10; # 升序,降序爲desc

  d)條件查詢

# select * from <table_name> where expression;
select * from student where age<21 and sex='m'; # 按照某個條件查找and/or

# select * from table_name where field in ('val1', 'val2', 'val3');
select * from student where name in ('alan_0', 'alan_1');

# select * from table_name where field between val1 and val2;
select * from student where age between 20 and 21;

select * from student where name like 'alan%'; # ('%'符號是SQL的萬用字符)

  e)查詢記錄數目

# select count (*) from <table_name>;
select count(*) from student; # 數據庫一共有多少筆資料
select count(*) from student where age > 20; # 年齡大於20的有幾個 

  f)區分列數據

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

# select distinct field from <table_name>;
select distinct sex from student;

  g)查找某個字段(列信息)

# select field from <table_name>;
select id from student;
select name, age from student where name like 'alan%' and age >= 20 order by age desc limit 10; # 查所有名字以zhang開頭、年齡大於20、年齡大的優先列出、最多十筆,只列出名字和年齡

 (5) 刪除數據記錄:

# delete from <table_name> [where expression]; # 不加判斷條件則清空表所有數據記錄
delete from student where name='alan_2';

 (6) 建立索引
 note: 當數據表存在大量記錄,索引有助於加快查找數據錶速度。建立完成後,sqlite3在對該字段查詢時,會自動使用該索引。

# create index <index_name> on <table_name>(field);
create index student_index on student(id); # 針對學生表id字段,建立一個索引

 (7) 刪除索引

# drop index <index_name>;
drop index student_index;

 (8) 添加一列

# alter table 表名 add 列名 數據類型;
alter table student add address char;
update student set address='beijing'; # 把地址字段全部更新爲beijing

  (9) 刪除一列

  note: sqlite3不支持刪除一列信息,可以把原來的表裏面的需要的列複製到一個新表,重新命名)

# create table 新表名 as select 列名1,列名2,列名3,列名4 from 舊錶名; 
create table stu as select id, name, sex from student; # 選擇student表中的id,name,sex字段作爲新表的字段

  (10) 重新命名錶

# alter table 舊錶名 rename to 新表名; 
alter table stu rename to student_new;

  (11) 刪除數據表

# drop table <table_name>;
drop table student_new;

 5、其他sqlite的特別用法

# sqlite可以在shell底下直接執行命令
sqlite3 student.db "select * from student;"

# 輸出 HTML 表格
sqlite3 -html student.db "select * from student;"

# 將數據庫「倒出來」
sqlite3 student.db ".dump" >output.sql

# 利用輸出的資料,建立一個一模一樣的數據庫(加上以上指令,就是標準的SQL數據庫備份了)
sqlite3 student.db <output.sql

# 在大量插入資料時,你可能會需要先打這個指令:
begin;
# 插入完資料後要記得打這個指令,資料纔會寫進數據庫中:
commit;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章