sqlite 学习
sqlite
SQLite是一个轻量级的嵌入式关系型数据库管理系统(RDBMS),它实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。以下是关于SQLite的详细介绍:
一、SQLite的特点
轻量级与嵌入式:SQLite是一个轻量级的数据库引擎,非常适合嵌入到各种应用程序中。它不需要独立的服务器进程,而是直接将数据库存储在主机文件系统中,从而节省了资源和提高了性能。
零配置:SQLite是一个零配置的数据库,这意味着它不需要在系统中进行任何配置即可使用。开发者只需将SQLite库嵌入到应用程序中,即可轻松使用其提供的数据库功能。
跨平台:SQLite支持多种操作系统,包括UNIX、Windows、Linux等,以及多种编程语言,如C、C++、Java、Python等。这使得开发者可以在不同的平台上使用相同的数据库技术,降低了开发成本和复杂性。
事务性:SQLite支持事务处理,确保数据的完整性和一致性。它提供了BEGIN TRANSACTION、COMMIT、ROLLBACK等事务控制语句,允许开发者在多个操作之间维护数据的一致性。
完整的SQL功能:SQLite提供了完整的SQL功能,包括数据定义语言(DDL)、数据操作语言(DML)和数据控制语言(DCL)。它支持SELECT、INSERT、UPDATE、DELETE等基本的SQL操作,以及触发器、索引、视图等高级功能。
二、SQLite的基本概念
数据库:SQLite数据库是一个存储在单一跨平台的磁盘文件中的完整数据库系统。这个文件包含了数据库的所有表、索引、视图和触发器等信息。
表:表是数据库中的基本存储单元,用于存储数据。每个表都有一个唯一的名称,并包含若干列和行。列表示数据的字段,行表示记录。
行与列:行是表中的一条记录,列是表中的字段。每条记录都包含若干个字段值,这些字段值对应着表中的各个列。
主键:主键是表中的一列或多列,其值能够唯一标识表中的一条记录。主键列的值不允许为空,且不允许重复。
外键:外键是表中的一列,其值引用另一个表的主键。外键用于维护表之间的关系和数据的一致性。
索引:索引是一种特殊的查找表,用于加快数据检索的速度。它允许数据库引擎在不需要扫描整个表的情况下,快速找到满足查询条件的记录。
三、SQLite的学习资源
官方文档:SQLite的官方网站提供了详细的文档和教程,包括SQL语法、API接口、数据类型、事务处理等方面的内容。这些文档是学习SQLite的最佳资源之一。
在线教程:有许多在线教程和网站提供了SQLite的学习资源,如菜鸟教程(Runoob)、W3Schools等。这些教程通常包含了从基础到高级的SQLite知识和示例代码,非常适合初学者入门。
书籍:有一些专门的书籍介绍了SQLite的使用和编程技巧。这些书籍通常包含了详细的示例和案例,可以帮助读者更好地理解和应用SQLite。
社区和论坛:SQLite拥有一个活跃的社区和论坛,开发者可以在这里提问、交流经验和分享代码。这些社区和论坛是学习SQLite的好去处,可以获取最新的技术动态和解决方案。
四、SQLite的学习建议
掌握基础SQL知识:在学习SQLite之前,建议先掌握基础的SQL知识,包括SQL的基本概念、语法和常用操作等。这将有助于你更好地理解SQLite的数据库功能和操作方式。
实践操作:通过编写SQL语句和程序来实践SQLite的使用。你可以创建数据库、表、索引等对象,并插入、查询、更新和删除数据。实践操作是掌握SQLite的最佳方式之一。
阅读官方文档和教程:官方文档和教程是学习SQLite的权威资源。它们提供了详细的解释和示例代码,可以帮助你更好地理解和应用SQLite的功能和特性。
参与社区和论坛:加入SQLite的社区和论坛,与其他开发者交流和分享经验。这将有助于你解决遇到的问题,并了解最新的技术动态和解决方案。
总之,SQLite是一个功能强大且易于使用的轻量级数据库引擎。通过学习SQLite,你将能够掌握关系型数据库的基本概念和操作方式,为开发高效、可靠的应用程序打下坚实的基础。
可视化工具 Navicat lite(免费)
创建一个sqlite仓库
# macos 推荐放在这个目录下
cd ~/Library/Application Support
mkdir -p SqliteStudy
qlite3 sqlitestudy.db
navicat 连接sqlite 注意事项
连接报错 14 - unable to open database file
- 路径要用绝对路径不能是相对路径, ~/Library/Application Support/SqliteStudy/sqlitestudy.db 是错误的,应该用 Users/paul/Library/Application Support/SqliteStudy/sqlitestudy.db
sqlite 数据类型
几乎所有的DBMS(关系型数据库),都采用严格的静态类型。而 sqlite 的数据类型是动态的。遇到数据类型转换的问题,sqlite 会自动转换。
SQLite 仅有四个基元数据类型:INTEGER、REAL、TEXT 和 BLOB。
- NULL: 表示一个NULL值
- INTEGER: 用来存储一个整数,根据大小可以使用1,2,3,4,6,8位来存储.
- REAL: IEEE浮点数
- TEXT: 按照字符串来存储
- BLOB: 按照二进制值存储,不做任何改变.
sqlite 有一套判断规则
如果声明的类型中包含 "INT",则为 INTEGER
如果声明的类型中包含 "CHAR", "CLOB" 或 "TEXT",则为 TEXT
如果声明的类型中包含 "BLOB",或者没有声明类型,则为 BLOB
如果声明的类型中包含 "REAL", "FLOA" 或 "DOUB",则为 REAL
其他情况,则为 NUMERIC
sqlite没有布尔值类型,布尔值被存储为整数 0(false)和 1(true)。
sqlite没有Date 与 Time 数据类型,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
- TEXT:格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。
- REAL:从公元前 4714 年 11 月 24 日格林尼治时间正午开始算起的天数。
- INTEGER:从 1970-01-01 00:00:00 UTC 算起的秒数。
您可以以任何上述格式来存储日期和时间,并且可以使用内置的日期和时间函数来自由转换不同格式。
sql 学习网站
了解sqlite 与myysql、sqlserver 的区别
SQL学习网站
预填充数据库与动态创建数据库
预填充数据库:在项目assets里直接放入预先准备好的数据库文件。
- 优点:
- 提供了快速的初始数据加载,因为数据已经预先准备好。
- 简化了应用逻辑,因为开发者不需要在应用启动时编写数据插入代码。
- 支持离线使用,因为数据已经内置在应用中。
- 缺点:
- 数据库文件的大小会增加应用安装包的大小。
- 如果需要更新数据,可能需要重新发布应用或提供某种机制来下载和更新数据库文件。
动态创建的数据库:应用运行时动态创建数据库文件。
- 优点:
- 数据库文件的大小不会增加应用安装包的大小。
- 可以根据需要动态更新数据,而不需要重新发布应用。
- 缺点:
- 初始数据加载可能较慢,因为数据需要在应用运行时插入。
- 需要编写额外的代码来处理数据库创建和数据插入。