SQLite是遵守ACID的关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。
SQLite遵守ACID,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法。它作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择。它可能是最广泛部署的数据库引擎,因为它正在被一些流行的浏览器、操作系统、嵌入式系统所使用。同时,它有许多程序设计语言的语言绑定。
SQLite是D. Richard Hipp创建的公有领域项目。
一、 建立或打开数据库
[ycxie@fedora Workspace]$ sqlite3 data.db SQLite version 3.22.0 2018-01-22 18:45:57 Enter ".help" for usage hints. sqlite> .databases main: /home/ycxie/Workspace/data.db
data.db如果存在,即打开此数据库;如果不存在,即创建一个名为data.db的数据库。
二、 创建表
sqlite> CREATE TABLE STUDENT( ...> ID INT PRIMARY KEY NOT NULL, ...> NAME TEXT NOT NULL, ...> AGE INT ...> ); sqlite> .tables STUDENT sqlite> .schema CREATE TABLE STUDENT( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT );
三、 插入表
sqlite> INSERT INTO STUDENT VALUES(1, 'Cary', 21); sqlite> INSERT INTO STUDENT VALUES(2, 'Paul', 18); sqlite> INSERT INTO STUDENT VALUES(3, 'ALEX', 35); sqlite> INSERT INTO STUDENT VALUES(4, 'Obama', 43); sqlite> INSERT INTO STUDENT VALUES(5, 'Trump', 68);
四、 查询表
sqlite> SELECT * FROM STUDENT; 1|Cary|21 2|Paul|18 3|ALEX|35 4|Obama|43 5|Trump|68
靠,它难看了,调整格式。先看默认格式再说。
sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: filename: data.db
打开headers。
sqlite> .headers on sqlite> SELECT * FROM STUDENT; ID|NAME|AGE 1|Cary|21 2|Paul|18 3|ALEX|35 4|Obama|43 5|Trump|68
再设置mode看看。
sqlite> .mode column sqlite> SELECT * FROM STUDENT; ID NAME AGE ---------- ---------- ---------- 1 Cary 21 2 Paul 18 3 ALEX 35 4 Obama 43 5 Trump 68 sqlite> SELECT * FROM STUDENT ORDER BY ID DESC; ID NAME AGE ---------- ---------- ---------- 5 Trump 68 4 Obama 43 3 ALEX 35 2 Paul 18 1 Cary 21
现在来看,确实不错,挺好看的了。。如果数据比较多,我们只看少数几行怎么办呢?
sqlite> SELECT * FROM STUDENT LIMIT 3; ID NAME AGE ---------- ---------- ---------- 1 Cary 21 2 Paul 18 3 ALEX 35
五、 数据库备份
sqlite> .output student.sql sqlite> .dump sqlite> .output stdout
[ycxie@fedora Workspace]$ cat student.sql PRAGMA foreign_keys=OFF; BEGIN TRANSACTION; CREATE TABLE STUDENT( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT ); INSERT INTO STUDENT VALUES(1,'Cary',21); INSERT INTO STUDENT VALUES(2,'Paul',18); INSERT INTO STUDENT VALUES(3,'ALEX',35); INSERT INTO STUDENT VALUES(4,'Obama',43); INSERT INTO STUDENT VALUES(5,'Trump',68); COMMIT;
六、 数据库恢复
sqlite> .read student.sql
七、 数据库压缩
sqlite> vacuum; [ycxie@fedora Workspace]$
sqlite采用的是变长纪录存储,删除数据后数据库文件并未减小。在数据删除后,需要手动执行vacuum命令,清空“空闲列表”,把数据库尺寸压缩到最小。
八、 数据库退出
sqlite> .quit [ycxie@fedora Workspace]$
SQLite数据库常识普及,挺好的,非常棒~