共计 2582 个字符,预计需要花费 7 分钟才能阅读完成。
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 的数据文件一般都是以文件的形式存储的,而在平时就可以通过对其文件来进行压缩备份即可。