常用数据库(一)SQLite

SQLite是一个轻量级的关系数据库管理系统,采用C语言编写,集成了ACID特性。不同于传统的客户端/服务器架构,SQLite作为嵌入式数据库被集成到应用程序中,减少了访问延迟。它支持大多数SQL标准,但在类型检查和某些特性上有所简化。

SQLite 是遵守ACID关系数据库管理系统,它包含在一个相对小的C程序库中。与许多其它数据库管理系统不同,SQLite不是一个客户端/服务器结构的数据库引擎,而是被集成在用户程序中。

SQLite遵守ACID,实现了大多数SQL标准。它使用动态的、弱类型的SQL语法。[4]它作为嵌入式数据库,是应用程序,如网页浏览器,在本地/客户端存储数据的常见选择。它可能是最广泛部署的数据库引擎,因为它正在被一些流行的浏览器、操作系统嵌入式系统所使用[5]。同时,它有许多程序设计语言的语言绑定

SQLite是D. Richard Hipp创建的公有领域项目。[1]

设计[编辑]

不像常见的客户端/服务器结构数据库管理系统,SQLite引擎不是一个应用程序与之通信的独立进程。SQLite库链接到程序中,并成为它的一个组成部分。这个库也可被动态链接。应用程序经由编程语言内的直接API调用来使用SQlite的功能,这在减少数据库访问延迟上有积极作用,因为在一个单一进程中的函数调用比跨进程通信更有效率。SQLite将整个数据库,包括定义、表、索引以及数据本身,作为一个单独的、可跨平台使用的文件存储在主机中。它采用了在写入数据时将整个数据库文件加锁的简单设计。尽管写操作只能串行进行,但SQLite的读操作可以多任务同时进行。

SQLite将PostgreSQL作为参考平台。项目将“PostgreSQL可能做些什么”作为SQL标准实现的开发参考。[6][7]然而与这个目标最重要的偏差在于,除了主键以外,SQLite不强制进行类型检查。一个值的类型是动态的,不被schema所强制限制(虽然如此,但如果可以进行可恢复的类型转换时,schema会在存储数据时触发一个自动转换)。

特征[编辑]

程序库实现了多数的SQL-92标准,包括事务,以及实现原子性一致性隔离性持久性(即ACID),但它缺失了某些特性。例如,它仅部分支持触发器。尽管它支持大多数的复杂查询,但它的ALTER TABLE功能有所限制,不能修改或删除列,只能通过重新创建表的方式迂回进行。

SQLite不进行类型检查。你可以把字符串插入到整数列中。某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候;然而其他用户认为这是主要的缺点。

多个进程线程可以同时访问同一个数据而没有问题。可以同时平行读取同一个数据库。但同一时间只能有一个进程或线程进行数据写入;否则会写入失败并得到一个错误消息(或者会自动重试一段时间;自动重试的逻辑以及重试时间的长短是可以设置的)。

程序设计者还提供了一个叫做sqlite3的独立程序用来查询和管理SQLite数据库文件。SQLite的用户可以把这个程序当作如何写SQLite应用程序的示例。

语言绑定[编辑]

目前有大量的编程语言提供使用SQLite的绑定,包括:

  • C/C++[8]
  • Tcl[9]
  • CPANDBD::SQLite上有一个PerlDBI/DBD模块,它不是到SQLite的接口,而是包括整个SQLite数据库引擎在其中并不需要任何额外的软件。
  • Python自2.5之后将pysqlite内置,模块名为sqlite3。[10]
  • PHP从PHP 5.0开始已经包含SQLite,但是自5.1版之后,SQLite开始成为一个延伸库。SQLite能与PHP4一起工作,但不包含在PHP4里面。
  • Rails2.0.3将缺省的数据库配置改为了SQLite 3。
  • Haskell[11]
  • Java[12]
  • Delphi:DISQLite3作为Delphi的一个第三方控件,不是SQLite的API,也不是接口,而是把SQLite数据库引擎重新封装编译到Delphi的目标程序中。

SQLite管理客户端[编辑]

SQLite亦可以作为桌面数据库使用,以下为第三方SQLite的GUI软件。例如,

  • Navicat for SQLite是一套专为SQLite设计的强大数据库管理及开发工具。它可以用于任何版本2或3的SQLite数据库,并支持大部分SQLite的功能,包括触发器、索引、查看等。。
  • SQLiteMan,使用Qt开发的一个SQLite客户端,支持多语言、跨平台。
  • SQLite Manager,以Firefox浏览器的扩展形式提供的SQLite客户端。
  • SQLite Database Browser,一款连接SQLite数据库的图形客户端。
  • SQLite Expert Personal,Windows上的一款连接SQLite数据库的免费客户端。
### 关于SQLite数据库的基本信息 SQLite个轻量级的关系型数据库管理系统,适用于小型应用和嵌入式系统[^3]。其设计目标是在占用极少资源的情况下提供高效的数据库服务。SQLite可以直接访问文件系统的单个文件来存储整个数据库,不需要单独的服务器进程或系统配置。 #### 主要特点 - **自含式**:无需依赖外部库即可运行。 - **零配置**:不需设置或管理;只需加载并使用。 - **跨平台兼容性**:能够在多种操作系统上工作,包括但不限于Windows、macOS以及Linux等环境[^1]。 - **ACID事务支持**:确保数据的致性和可靠性。 - **完整的SQL实现**:几乎完全实现了ANSI-SQL标准的功能集。 - **易于集成到应用程序中**:特别适合移动设备和其他资源受限的地方使用。 --- ### 使用教程 #### 下载与安装 对于Linux用户来说,在官方网站https://www.sqlite.org/ 可以找到最新版本的SQLite下载链接[^2]。通常情况下,大多数现代Linux发行版已经预装了SQLite工具包。如果没有,则可以通过包管理器轻松安装: ```bash sudo apt-get install sqlite3 libsqlite3-dev # Debian / Ubuntu systems ``` #### 基本命令行操作 旦成功安装之后,就可以通过终端启动SQLite shell程序来进行交互式的查询和修改操作了。这里给出几个常见的例子说明如何执行些基础的任务。 ##### 创建新数据库 当首次调用`sqlite3`命令时如果指定了不存在的名字作为参数,那么就会自动创建个新的同名.db结尾的数据文件: ```sql $ sqlite3 my_database.db ``` 这将在当前目录下生成名为`my_database.db`的新数据库实例。 ##### 构建表格结构 进入shell界面后,可以利用CREATE TABLE语句定义新的记录集合(即表),如下所示: ```sql CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INT CHECK(age >= 0), email VARCHAR UNIQUE); ``` 这段代码片段建立了叫做users的个实体模型,其中包含了四个字段——id, name, age 和email,并设置了相应的约束条件。 ##### 执行简单的增删改查(CRUD) ###### 插入数据 向已有的表里添加行或多行记录可通过INSERT INTO完成: ```sql INSERT INTO users (name, age, email) VALUES ('Alice', 30, 'alice@example.com'); ``` 上述指令会往users表内加入条由三个具体值组成的条目。 ###### 更新现有项 UPDATE允许更改特定条件下匹配的结果集中某些属性的内容: ```sql UPDATE users SET age = 28 WHERE name='Alice'; ``` 此命令将会把名字叫“Alice”的用户的年龄更新为28岁。 ###### 删除指定对象 DELETE FROM用来移除符合条件的所有元组: ```sql DELETE FROM users WHERE id=1; ``` 这条语句表示删除具有唯标识符等于1的那个user。 ###### 查询检索资料 SELECT是最常用的SQL动词之,用于获取满足给定表达式的行列表: ```sql SELECT * FROM users ORDER BY age DESC LIMIT 5; ``` 该查询返回按降序排列后的前五个最年长者的全部详情。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值