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)删除:

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 是一个包含可由多个程序同时使用的代码和数据的库。

简述sqlite数据库的特点_SQLite数据库 简介、特点、优势、局限性及使用相关推荐

  1. 简述sqlite数据库的特点_sqlite数据库的优缺点

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. 简述sqlite数据库的特点_SQLite教程(一):SQLite数据库介绍

    一.简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB.MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征 ...

  3. WAL模式 Android,SQLite 数据库 WAL 工作模式原理简介

    闪存 对象序列化系列 数据序列化系列(待更) <Android 数据序列化之 JSON> <Android 数据序列化之 Protocol Buffer 使用> <And ...

  4. drop sqlite 多个表_SQLite简介与安装

    SQLite简介: SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.就像其他数据 ...

  5. 使用反射+注解封装一个基于Sqlite极简的android数据库框架

    数据库 背景 GreenDao 封装 创建数据库 对象映射表 数据库操作 扩展 总结 背景 目前市面上已经有比较好用的数据库框架,比如GreenDao和OrmLite,而且功能也很齐全,那为什么还要多 ...

  6. 【数据库】sqlite中的限制:数据库大小、表数、列数、行数、参数个数、连接数等

    目录 一.参考网址 二.详解 1.查看.设置sqlite限制命令.limit 2.SQLite中的限制汇总 1)字符串或BLOB的最大长度 2)最大列数 3)SQL语句的最大长度 4)联接中的最大表数 ...

  7. Redis数据库(一)——Redis简介、部署及常用命令

    文章目录 一.关系数据库与非关系型数据库概述 1.关系型数据库 2.非关系型数据库 3.关系数据库与非关系型数据库区别 ①.数据存储方式不同 ②.扩展方式不同 ③.对事务性的支持不同 4.非关系型数据 ...

  8. Delphi纯代码连SQLite数据库,同时支持数据库的加密解密

    //摘自:http://bbs.witbase.com/thread-1141-1-1.html Delphi纯代码连SQLite数据库,同时支持数据库的加密解密 Delphi纯代码连SQLite数据 ...

  9. 从sqlite 迁移 mysql_将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库

    下面我们就来说说如何从 SQLite 迁移到 MySQL . 准备 首先你要已经安装好 MySQL 数据库.如果你用的是 Ubuntu 系统,请参考这篇文章.其他系统请参考各自对应的文档. 导出当前数 ...

最新文章

  1. 对线性代数的思考和理解
  2. A good security site
  3. 【Tools】VNC Viewer 6.20安装详解
  4. LeetCode 783. 二叉搜索树结点最小距离(中序遍历)
  5. 【热修复】Andfix源码分析
  6. 电脑桌面点任何文件都打开计算机,桌面上的文件全部都打不开
  7. homebrew Mac 相关问题
  8. jsp拿不到回显数据_第一个SpringBoot项目、核心配置文件properties(yml、yaml)、集成jsp...
  9. oracle临时表空间自动清理,oracle清理临时表空间
  10. Eclipse查看JDK源码报错——Failed to create the part’s controls
  11. 基于单片机的光立方设计
  12. 电脑自带的cmd/Powershell连接远程服务器(实用技巧)
  13. 市场调研报告-全球与中国数字钥匙模块市场现状及未来发展趋势
  14. 【转】使用 HTML5 设计辅助功能
  15. Spring boot Shiro 用户认证
  16. linux系统用户密码忘了怎么办,忘记了Linux账户密码怎么办?
  17. 微信小程序网络请求之设置合法域名后不显示oss、cos的图片问题
  18. JavaScript(网页特效)
  19. 360路由器远程连接服务器,“怎样用动态域名实现路由器的远程配置”的解决方案...
  20. P1498 南蛮图腾 题解

热门文章

  1. kurtosis skewness
  2. 生信必会格式:GFF和GTF的简介和转换
  3. java程序重启_如何使您的Java应用程序重新启动
  4. 学习深入理解JVM虚拟机及JavaGuide后的学习笔记
  5. DCGAN理论讲解及代码实现
  6. HTC Desire A8181 的Android系统闹铃声音的修改
  7. rocksdb原理_RocksDB上锁机制
  8. ar 微信小程序_【看一看案例集】AR+微信小程序(1):认识篇
  9. tensorboard ckpt pb 模型的输出节点_乐学初中数学研究|第七期:最值问题之费马点模型...
  10. java计算机毕业设计人才公寓管理系统源码+数据库+系统+lw文档+mybatis+运行部署