我知道SQLite数据库用于移动设备(Android,iPhone),它很轻,只占用Kb空间。 SQLite有任何限制吗?我想知道它们有何不同。
答案 0 :(得分:59)
每个SQL数据库都使用自己的语言实现略有不同。虽然基本查询几乎是通用的,但MySQL,PostgreSQL,Microsoft SQL Server,Oracle数据库等之间存在明显的细微差别。
SQLite特别值得注意的是,与上面提到的所有其他内容不同,这个数据库软件没有附带查询传递的守护进程。这意味着如果多个进程同时使用数据库,它们将直接通过SQLite库更改数据,并自行调用操作系统的读/写数据。这也意味着锁定机制不能很好地处理争用。
对于大多数人都会想到使用SQLite的应用程序来说,这不是问题 - 小的开销优势和简单的数据检索是值得的。但是,如果您要使用多个进程访问数据库,或者不考虑通过一个线程映射所有请求,则可能会有点麻烦。
答案 1 :(得分:29)
Sqlite是一个非常简单的SQL版本,支持SQL的许多功能。基本上是为手机,平板电脑等小型设备开发的。
SQLite是第三方,开源和进程内数据库引擎。 SQL Server Compact来自Microsoft,是SQL Server的精简版本。它们是两个竞争的数据库引擎。
SQL是查询语言。 Sqlite是可嵌入的关系数据库管理系统。
编辑:(来自以下对我的回答的评论)
Sqlite也不需要特殊的数据库服务器或任何东西。它只是一个使用SQL语法的直接文件系统引擎。 (作者:Adam Plocher)
从技术上讲,SQLite不是开源软件,而是公共领域。没有许可证。 (作者:Larry Lustig)
答案 2 :(得分:11)
SQL是查询语言。 Sqlite是可嵌入的关系数据库管理系统。
与其他数据库(如SQL Server和MySQL)不同,SQLite不支持存储过程。
SQLite是基于文件的,不像其他数据库,如基于服务器的SQL Server和MySQL。
答案 3 :(得分:0)
SQLite是一个开放源代码,零配置,自包含,独立的事务关系数据库引擎,旨在嵌入到应用程序中。
Python SQLite定义为使用基于轻量级光盘的ANSI-C数据库开发的 C库;不需要额外的或任何其他单独的服务器进程。
SQLite 不需要来运行服务器(RDBMS,例如MySQL,PostgreSQL等,需要单独的服务器进程来运行)。
是自包含的,它需要操作系统或外部库的最少支持。这使得SQLite可以在任何环境中使用,特别是在iPhone,Android手机,游戏机,手持媒体播放器等嵌入式设备中。
不使用任何配置文件。
符合ACID 。这意味着所有查询和更改都是原子的,一致的,隔离的和持久的,即使发生应用程序崩溃,电源故障或操作系统崩溃等意外情况,事务中的所有更改还是完全发生或根本没有发生。
能够创建非常快速地使用的内存数据库。
为表使用动态类型。这意味着您可以在任何列中存储任何值,而与数据类型无关。
允许单个数据库连接同时访问多个数据库文件。
SQLite保证所有事务均符合 ACID ,即使由于程序崩溃,操作系统转储或计算机电源中断而中断了事务。
原子:事务应该是原子的。这意味着更改无法分解为较小的更改。提交事务时,是否应用整个事务。
一致:事务必须确保将数据库从一种有效状态更改为另一种有效状态。当事务开始并执行修改数据的语句时,数据库将变得不一致。但是,当事务被提交或回滚时,重要的是事务必须保持数据库的一致性。
隔离:一个会话执行的待处理事务必须与其他会话隔离。当会话启动事务并执行INSERT或UPDATE语句更改数据时,这些更改仅对当前会话可见,而对其他会话则不可见。另一方面,事务开始后其他会话提交的更改对当前会话不可见。
持久性:如果事务成功提交,则更改必须在数据库中永久存在,而不管诸如电源故障或程序崩溃之类的情况。相反,如果程序在提交事务之前崩溃,则更改不应持久。
答案 4 :(得分:0)
SQLite 和 SQL 之间最基本的区别是:
SQL 是一种被不同 SQL 数据库使用的查询语言。它本身不是数据库。
SQLite 本身就是一个使用 SQL 的数据库管理系统。
答案 5 :(得分:-3)
SQL是一种查询语言的数据库,SQLite是一种使用SQL规范的数据库(RDBMS)。 SQLite可以说是微软SQL Server的竞争对手。
这个名称本身表明它是SQL RDBMS的简易版本。它用于大多数小型便携式设备,如Android和iOS设备。
答案 6 :(得分:-4)
SQLite :数据库管理系统(DBMS) SQL :结构化查询语言是一种计算机语言,用于通过查询从DBMS创建,编辑和获取数据。