SQLite数据库极简易入门教程

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]$ 

1 thought on “SQLite数据库极简易入门教程

Leave a Reply

Your email address will not be published. Required fields are marked *