SQLite介绍

SQLite介绍

SQLite 是一个实现自我依赖、纯客户端、零配置且支持事务的数据库引擎。  
在使用的过程中,也无需创建用户和划分权限,SQLite 没有用户以及账户概念,而是根据文件系统确定所有数据库的权限  
弱类型:和大多数支持静态类型的数据库不同的是,SQLite中的数据类型被视为数值的一个属性。因此对于一个数据表列而言,即便在声明该表时给出了该列的类型,我们在插入数据时仍然可以插入任意类型,

SQLite文件

sqlite3.exe 是SQLite数据库引擎,命令行工具,可以实现SQLite 各项基本操作  
sqlite3_analyzer.exe 是SQLite数据库分析器,命令行数据库分析器,该分析器允许显示关于任何 SQLite 数据库当前状态的详细信息。  
sqlite3.dll : 动态连接库文件,提供了标准API函数,需要编程调用,经过编译的软件可以动态链接到SQLite,这意味着需要SQLite功能是,应用程序会加载DLL,而不是将SQLite代码嵌入到应用程序。

数据库配置

SQLite没有配置文件,所有的配置都是使用编译指令来实验<pragma>,包括了运行信息等
控制字符串如何编码及存储在数据库文件中
sqlite编码方式由pragma encoding设定,只有以下几种
PRAGMA encoding;   --查询当前编码方式,默认utf8
PRAGMA encoding = "UTF-8"; 
PRAGMA encoding = "UTF-16"; 
PRAGMA encoding = "UTF-16le"; 
PRAGMA encoding = "UTF-16be";
如果文件路径出现中文,就会导致打开失败.sqlite数据库使用的是UTF-8编码方式,而传入的字符串是ASCII编码或Unicode编码,导致字符串格式错误。解决方案是在调用sqlite接口之前,先将字符串转换成UTF-8编码,各种字符串编码转换函数。

常见命令

创建命令

创建数据库:
 1. D:\>sqlite3 test.db 
创建表
 2. sqlite> CREATE TABLE person (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(20), age SMALLINT);

查看命令

.databases 命令用来查看当前所有数据库
sqlite> .databases
seq name file 
--- --------------- ----------------------------------------------------------
0 main /home/yu/sqlite/test.db 
1 temp

 .tables 命令用来查看当前数据库的所有数据表
sqlite> .tables
data_txt_table
sqlite>

.schema 命令来查看指定的数据表的结构
sqlite> .schema data_txt_table
CREATE TABLE data_txt_table(id char(10),name char(10),age char(10),address varchar(15),hobby varchar (15));
sqlite>

select查看具体的数据
sqlite> select * from data_txt_table limit 3;

数据的导入和导出

数据的导入

   1. 首先,确定导入的数据源,这里是待导入的,按固定格式的文本文件。
   2. 然后,依照导入的文件格式,确定想导入的目标数据表,这个数据表如果没有,可以依照待导入的文本文件格式,创建一个相对应的数据表。
   3. 最后,执行.import命令,将文本文件中数据导入数据表中。   
   .sql文件导入数据:
        1.  sqlite> .read test.sql 
    从文本文件导入
    sqlite> .import data.txt data_txt_table

数据导出

导出数据
    sqlite> .output data.sql
数据库导出
    qlite$ sqlite3 test.db ".dump" | sqlite3 test2.db

SQLite 数据类型

SQLite 数据类型是一个用来指定任何对象的数据类型的属性
存储类
SQLite Affinity :
Boolean 数据类型:SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)
Date 与 Time 数据类型:无单独类型,QLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。

其他

 SQLite源代码
 SQLite设计与概念:核心 C API以及扩展C API

blogroll

social