SQLlite数据库可能是目前来说最轻量级、使用最为广泛的SQL数据库。它本身又是开源的,自身包含在C中的一个相对小的库中,支持ACID事务、零配置、储存在单一磁盘文件中的一个完整的数据库,它所使用的资源非常低,在几百K的内存环境下也可以稳定运行,而目前支持的数据大小到2TB,自身又没有什么额外的依赖、移植性好、支持多种开发语言,所以SQLlite被广泛运用在各个系统平台上、一些软件应用、小型网站、以及嵌入式应用、简单的数据分析、代替磁盘临时文件、文件档案、缓存等等。在Unix系统下一般默认就是有安装过的,即使是没有安装也可以同在Windows、macOS中一样到官网(http://www.sqlite.org/download.html)上把二进制包下载下来解压后配置好PATH环境变量就可以使用,或者是下载源码包编译亦可,平时可以在系统中使用shell直接交互或者使用各个gui来使用。建立好的一个schema在SQLlite就是一存储在磁盘上的一个文件,注意一旦删除了表的数据文件数据就会丢失,至于使用也很简单
[root@localhost data]# sqlite3 #调用二进制文件直接进入命令交互界面
[root@localhost data]# sqlite3 /data/my_test.db #建立一个名为my_test的schema后缀用什么都可以但是要注意不同的文件名后缀相同的文件名就是不同的文件,是完全2个完全独立的schema,建议是用.db是标准的容易区分,如果有这个文件名的schema则不创建数据文件,建好了默认有一个main的database,其次默认建立的schema是不加密的,如果是重要数据建议加密
[root@localhost data]# sqlite3 /data/my_test.db #进入my_test的schema,要注意的是,如果是新建立的schema在其中没有建立任何项目时是不会产生相应的数据文件的
SQLite version 3.6.20
Enter ".help"
for
instructions
Enter SQL statements terminated with
a ";"
sqlite> .database
#查看当前的schema下的database信息
seq name
file
--- --------------- ----------------------------------------------------------
0 main /data/my_test.db
sqlite> .help #帮助信息
sqlite> .exit #退出
sqlite> SELECT
* FROM
sqlite_master; #系统表,在SQLite中唯一的一张,是只读的,是无法删除的执行删除该表是是在做类似于flush的操作
sqlite> .show
echo: off
explain: off
headers: off
mode: list
nullvalue: ""
output: stdout
separator: "|"
width:
以上就是SQLlite数据库比较常用的交互命令,至于其他更多可以通过help查看,在这个就不做过多的介绍,在平时可以通过查询SQLlite数据库中唯一的一张系统表sqlite_master表获知当前的schema下所有表、视图、索引、触发器相关等等信息,在sqlite_master表中有4个列:
type列记录了项目的类型,如表、视图、索引、触发器
name列记录了项目的名称,如表名、索引名、视图名等
tbl_name列记录所从属的表名,如索引所在的表名。对于表来说,该列就是表名本身
rootpage列记录项目在
数据库
页中存储的编号。对于视图该列值为0,触发器该列值NULL。
sql列记录建表的DDL
一些常用的系统表查询:
sqlite> SELECT
* FROM
sqlite_master WHERE
type = 'table'; #查看当前schema下所有表信息
sqlite> SELECT
* FROM
sqlite_master WHERE
rootpage = 0; #查看当前schema下所有的视图信息
sqlite> SELECT
* FROM
sqlite_master WHERE
rootpage IS
NULL; #查看当前schema下所有的视图信息
sqlite> SELECT
sql FROM
sqlite_master WHERE
type = 'table'
AND
tbl_name = 'tablename'; #查看tablenameDDL或者直接使用schma命令查看
sqlite> .schema
sqlite_master
CREATE
TABLE
sqlite_master (
type text,
name
text,
tbl_name text,
rootpage integer,
sql text
);
在SQLlite目前下有5种数据存储类型:
数据存储类型 | 说明 |
---|---|
NULL | 值是一个 NULL 值 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储 |
而SQLlite其自身有支持列的亲和数据类型、亲和数据名称概念。任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式,
如各种int型存入INTEGER中,在建好的表中用的是INTEGER类型,或者还是用其它的数据类型名称,但是实际中还是存在INTEGER中,要注意的是SQLlite本身仅仅是一个很小的轻量级数据库平时不要把SQLlite当成其它大型数据来使用,其次因为SQLlite的数据文件一般都是以文件的形式存储的,而在平时就可以通过对其文件来进行压缩备份即可。