sqlite简介
sqlite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足、无服务器、零配置的、事务性的sql数据库引擎。它是一个零配置的数据库,这就体现出来sqlite与其他数据库的最大的区别:sqlite不需要在系统中配置,直接可以使用。且sqlite不是一个独立的进程,可以按应用程序需求进行静态或动态连接。sqlite可直接访问其存储文件。
sqlite对于其他数据库有什么优势:
不需要配置,不许爱安装和管理
不需要一个单独的服务器进程或 *** 作的系统(无服务器的)
一个完整的sqlite数据库存储在一个单一的跨平台的磁盘文件上
sqlite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
sqlite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖
sqlite事务是完全兼容ACID的,允许从多个进程或线程安全访问
sqlite支持sql92(sql2)标准的大多数查询语言的功能
sqlite使用ANSI-C编写的,并提供了简单和易于使用的API
sqlite可在UINX(linux,Max OS-X,AndroID,iOS)和windows(Win32,WinCE,WinRT)中运行
sqlite的局限性:
在sqlite中,sql92不支持的特性如下所示:
RIGHT OUTER JOIN: 只实现了left OUTER JOIN
FulL OUTER JOIN: 只实现了left OUTER JOIN
ALTER table: 支持REname table和ALTER table的ADD ColUMN variants命令,
不支持DROP ColUMN、ALTER ColUMN、ADD CONSTRAINT
Trigger支持: 支持FOR EACH ROW触发器,但不支持FOR EACH STATEMENT触发器
VIEWS: 在sqlite中,视图是只读的,不能在视图中执行DELETE、INSERT或UPDATE语句
GRANT 和 REVOKE:可以应用的唯一的访问权限是底层 *** 作系统的正常文件访问权限
sqlite命令
与关系数据库进行交互的标准sqlite命令类似于sql。命令包括CREATE,SELECT,INSERT,UPDATE,DELETE和DROP。这些命令基于他们的 *** 作性质分为以下几种:
DDL-数据库定义语言
CREATE:创建一个新的表,一个表的视图,或者数据库中的其他对象
ALTER:修改数据库中的某个已有的数据库对象,比如一个表
DROP:删除整个表,或者表的视图,或者数据库中的其他对象
DML-数据库 *** 作语言
INSERT:创建一条记录
UPDATE:修改记录
DELETE:删除记录
DQL-数据查询语言
SELECT:从一个或多个表中检索某些记录
sqlite3的下载与使用:
(1)下载:sqlite3是目前最新的sqlite版本。可以从http://www.sqlite.org/download.html网站上下载sqlite3的源代码。下载完成后,解压到某一盘符下。
(2)注意:sqlite3支持的基本数据类型主要有以下几类:
1).NulL------------------blob
2).INTEGER---------------int
3).REAL------------------float、double
4).TEXT------------------char、varchar
5).NUMERIC---------------其余
(3)使用:
1)在windows平台下,打开Dos窗口,切换到含有刚解压的sqlite3.exe的目录下,输入 sqlite3 -version后回车,出现对应的版本号信息 :
2) 数据库的使用与创建:假设需要使用一个test.db数据库,只需在命令行下输入 “sqlite3 test.db”即可,如果数据库test.db已经存在,则命令“sqlite3 test.db”会在当前目录下打开test.db。如果数据库test.db不存在,则命会在当前目录下新建数据库test.db。为了提高效率,sqlite3并不会马上创建test.db,而是等到第一个表创建完成后才会在物理上创建数据库。
3)数据库的查询:使用“.database”命令可以查询所在在使用的数据库。
4)表创建:由于sqlite3是弱类型的数据库,所以在create语句中并不要求给出列的类型(当然给出也不错)。另外注意,所以的sql指令都是以分号(;)结尾的。如果遇到两个减号(–)则代表注解,sqlite3会略过去。
5)数据库的表查询:使用命令“.table”可以查询数据库中的表有哪些。
6)插入
7)查询
查询所有:
按指定条件查询和查询指定字段:
模糊查询:
8)更新:
9)删除:
@H_74_403@
10)其他说明:
a.批量提交数据
sqlite> begin;
sqlite> insert into test_table values (‘xiaoxue‘,‘female‘,18);
sqlite> insert into test_table values (‘xiaoliu‘,‘male‘,20);
sqlite> commit;
b.设置主键,使用命令“paimary key”
注意:超出所定义的范围和类型是没有关系的
c.模糊查询
1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。
比如 SELECT * FROM [user] WHERE u_name liKE ‘%三%‘
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。
另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
SELECT * FROM [user] WHERE u_name liKE ‘%三%‘ AND u_name liKE ‘%猫%‘
2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:
比如 SELECT * FROM [user] WHERE u_name liKE ‘_三_‘
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;
再比如 SELECT * FROM [user] WHERE u_name liKE ‘三__‘;
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
比如 SELECT * FROM [user] WHERE u_name liKE ‘[张李王]三‘
将找出“张三”、“李三”、“王三”(而不是“张李王三”);
如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name liKE ‘老[1-9]‘
将找出“老1”、“老2”、……、“老9”;
4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
比如 SELECT * FROM [user] WHERE u_name liKE ‘[^张李王]三‘
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;
d.sqlite内置命令:
见如下常用示例:
1). 备份和还原数据库。
--在当前连接的main数据库中创建一个数据表,之后再通过.backup命令将main数据库备份到D:/mydb.db文件中。
sqlite> CREATE table mytable (first_col integer);
sqlite> .backup ‘D:/mydb.db‘
sqlite> .exit
--通过在命令行窗口下执行sqlite3.exe以重新建立和sqlite的连接。
--从备份文件D:/mydb.db中恢复数据到当前连接的main数据库中,再通过.tables命令可以看到mytable表。
sqlite> .restore ‘D:/mydb.db‘
sqlite> .tables
mytable
2). DUMP数据表的创建语句到指定文件。
--先将命令行当前的输出重定向到D:/myoutput.txt,之后在将之前创建的mytable表的声明语句输出到该文件。
sqlite> .output D:/myoutput.txt
sqlite> .dump mytabl%
sqlite> .exit
--在DOS环境下用记事本打开目标文件。
D:\>notepad myoutput.txt
3). 显示当前连接的所有Attached数据库和main数据库。
sqlite> ATTACH DATABASE ‘D:/mydb.db‘ AS mydb;
sqlite> .databases
seq name file
--- --------------- ------------------------
0 main
2 mydb D:\mydb.db
4). 显示main数据库中的所有数据表。
sqlite> .tables
mytable
5). 显示匹配表名mytabl%的数据表的所有索引。
sqlite> CREATE INDEX myindex on mytable(first_col);
sqlite> .indices mytabl%
myindex
6). 显示匹配表名mytable%的数据表的Schema信息。
--依赖该表的索引信息也被输出。
sqlite> .schema mytabl%
CREATE table mytable (first_col integer);
CREATE INDEX myindex on mytable(first_col);
7). 格式化显示SELECT的输出信息。
--插入测试数据
sqlite> INSERT INTO mytable VALUES(1);
sqlite> INSERT INTO mytable VALUES(2);
sqlite> INSERT INTO mytable VALUES(3);
--请注意没有任何设置时SELECT结果集的输出格式。
sqlite> SELECT * FROM mytable;
1
2
3
--显示SELECT结果集的列名。
--以列的形式显示各个字段。
--将其后输出的第一列显示宽度设置为10.
sqlite> .header on
sqlite> .mode column
sqlite> .wIDth 10
sqlite> SELECT * FROM mytable;
first_col
----------
1
2
3
e.找不到sqlite3.dll的解决办法
直接拷贝sqlite3.dll文件到系统目录里:
windows NT/2000系统,把这个文件复制到c:\WINNT\System32目录下。
windows XP/WIN7系统,把这个文件复制到c:\windows\System32目录下。
windows 95/98/Me系统,把这个文件复制到c:\windows\System目录下。
然后打开"开始-运行-输入regsvr32 此文件名称",再按回车错误就得以解决了!
说明:动态链接库英文为DLL,是Dynamic link library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。DLL 是一个包含可由多个程序同时使用的代码和数据的库。
参考:https://blog.csdn.net/zhan_chi_ao_xiang/article/details/63260955
以上是内存溢出为你收集整理的SQLite数据库 简介、特点、优势、局限性及使用全部内容,希望文章能够帮你解决SQLite数据库 简介、特点、优势、局限性及使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)