SQLite和SQL有什么区别?

72

我知道SQLite数据库被用于移动设备(安卓,iPhone)中,而且它非常轻量级,只需要几个KB的空间。那么SQLite有哪些限制呢?我想知道它们与其他数据库的区别在哪里。

7个回答

78

每个SQL数据库都使用自己的语言实现,这些实现略有不同。虽然基本查询几乎是通用的,但是MySQL、PostgreSQL、Microsoft SQL Server、Oracle Database等之间存在明显的细微差别。

SQLite特别值得注意的是,与上述所有数据库软件不同,它不带有通过的守护进程进行查询。这意味着如果多个进程同时使用数据库,它们将直接通过SQLite库修改数据,并且对操作系统进行读/写数据调用。这也意味着锁定机制无法很好地处理争用。

对于大多数应用程序来说,这并不是一个问题,在这些应用程序中,人们会考虑使用SQLite——小的开销和简单的数据检索是值得的。但是,如果您将使用多个进程访问数据库,或者不考虑将所有请求映射到一个线程中,则可能会有些麻烦。


41

Sqlite是SQL的一种轻量级版本,支持SQL的许多功能。基本上是为移动设备如手机、平板电脑等开发的。

SQLite是第三方的、开源的、内置的数据库引擎。SQL Server Compact来自于微软,是SQL Server的一个精简版。它们是两个竞争的数据库引擎。

SQL是查询语言。Sqlite是一种可嵌入的关系型数据库管理系统。

编辑:(以下内容来源于我回答中的评论)

Sqlite也不需要特殊的数据库服务器或任何东西。它只是一个直接使用SQL语法的文件系统引擎。(作者:Adam Plocher)

从技术上讲,SQLite并不是开源软件,而是公有领域。没有任何许可证。(作者:Larry Lustig)


7
Sqlite不需要特殊的数据库服务器或其它什么东西,它只是一个直接使用SQL语法的文件系统引擎。 - Adam Plocher
3
从技术上讲,SQLite 不是开源软件,而是属于公共领域。它没有许可证。 - Larry Lustig

14

SQL是一种查询语言。SQLite是一款可嵌入的关系型数据库管理系统。

与其他数据库(如SQL Server和MySQL)不同,SQLite不支持存储过程。

SQLite是基于文件的,而其他数据库(如SQL Server和MySQL)则是基于服务器的。


0

什么是SQLite?

  • SQLite是一个开源、零配置、自包含、独立的事务关系数据库引擎,旨在嵌入应用程序中。

  • Python SQLite可以被定义为使用ANSI-C开发的C库,轻量级基于磁盘的数据库;不需要额外或任何其他单独的服务器进程。

一些SQLite特点是什么?

  • SQLite不需要服务器运行(例如MySQL、PostgreSQL等关系型数据库需要单独的服务器进程来操作)。

  • SQLite是自包含的,它需要最少的操作系统或外部库的支持。这使得SQLite在任何环境下都可以使用,特别是在嵌入式设备中,如iPhone、Android手机、游戏机、手持媒体播放器等。

  • 不使用任何配置文件。

  • SQLite是ACID兼容的。这意味着所有查询和更改都是原子性、一致性、隔离性和持久性的,即使出现意外情况,如应用程序崩溃、断电或操作系统崩溃,事务内的所有更改也完全发生或完全不发生。

  • 能够创建非常快速的内存数据库。

  • 对于表格使用动态类型。这意味着您可以将任何值存储在任何列中,而不管数据类型如何。

  • 允许单个数据库连接同时访问多个数据库文件。

SQLite & ACID

SQLite保证所有的事务都符合ACID标准,即使事务被程序崩溃、操作系统转储或计算机断电所中断。

  • 原子性:事务应该是原子的。这意味着一个更改不能被分解成更小的部分。当您提交一个事务时,要么整个事务被应用,要么不被应用。

  • 一致性:事务必须确保将数据库从一个有效状态更改为另一个有效状态。当事务开始并执行修改数据的语句时,数据库变得不一致。然而,当事务提交或回滚时,重要的是事务必须保持数据库的一致性。

  • 隔离性:由会话执行的挂起事务必须与其他会话隔离开来。当会话启动事务并执行INSERT或UPDATE语句以更改数据时,这些更改仅对当前会话可见,而不对其他会话可见。另一方面,在事务开始后由其他会话提交的更改不应对当前会话可见。

  • 持久性:如果事务成功提交,则无论条件如何(例如电源故障或程序崩溃),更改都必须在数据库中永久存在。相反,如果程序在事务提交之前崩溃,则更改不应持久存在。


参考资料:Sqlitetutorial.net


0

SQLiteSQL之间最基本的区别是:

SQL是一种查询语言,被不同的SQL数据库使用。它本身不是一个数据库。

SQLite是一个数据库管理系统,它使用SQL。


-2

SQL是一种数据库查询语言,而SQLite是一种使用SQL规范的数据库(关系型数据库管理系统)。SQLite可以说是微软SQL Server的竞争对手。

其名称本身就表明它是SQL RDBMS的轻量级版本。它被用于大多数小型和便携设备,如Android和iOS设备。


1
SQLite无法与SQL Server相媲美,因为它们的用途不同,所以比较它们是无效的。 - Navin Israni

-4

SQLite:数据库管理系统(DBMS)。
SQL:结构化查询语言是一种计算机语言,用于通过查询创建、编辑和获取DBMS中的数据。


SQLite 不是 DBMS。 - Jeremy Parker
维基百科介绍说,“SQLite是一个包含在C库中的关系型数据库管理系统。与许多其他数据库管理系统不同,SQLite不是客户端-服务器数据库引擎。相反,它被嵌入到最终程序中。SQLite通常遵循PostgreSQL语法。” - carloswm85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接