SQLite3-基本操作
SQLite 的特点
SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。
SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
SQLite 不需要一个单独的服务器进程或操作的系统(无服务器的)。
SQLite 不需要配置,这意味着不需要安装或管理。
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于 250KiB。
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOB 和 glob 在 SQLite 的语句中有不同的含义。
SQLite 的字符串请使用单引号,因为我用双引号会报错。
SQLite 的命令
SQLite 命令与 SQL 语句的不同之处在于它们不以分号 ; 结束。
1 | $ sqlite3 |
上面的命令会显示各种重要的 SQLite 点命令的列表,其中常用的有:
命令 | 描述 |
---|---|
.databases | 显示打开的数据库 |
.open ?DB_NAME? | 打开名为 DB_NAME.db 的数据库,没有则创建 |
.tables ?PATTERN? | 列出匹配 pattern 模式的表的名称 |
.backup ?DB? FILE | 备份 DB 数据库(默认是 “main”)到 FILE 文件 |
.exit | 退出 SQLite 提示符 |
.help | 显示命令帮助列表 |
.schema ?TABLE? | 显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表 |
.show | 显示各种设置的当前值 |
sqlite_master 表
主表中保存数据库表的关键信息,并把它命名为 sqlite_master。如要查看表概要,可按如下操作:
1 | sqlite>.schema sqlite_master |
将产生以下结果:
1 | CREATE TABLE sqlite_master ( |
SQLite 数据类型
SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。
开发者可以在创建表的同时使用这些数据类型。SQLite 使用一个更普遍的动态类型系统。在 SQLite 中,值的数据类型与值本身是相关的,而不是与它的容器相关。
每个存储在 SQLite 数据库中的值都具有以下存储类之一:
存储类型 | 描述 |
---|---|
NULL | 值是一个 NULL 值 |
INTEGER | 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6 或 8 字节中 |
REAL | 值是一个浮点值,存储为 8 字节的 IEEE 浮点数字 |
TEXT | 值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储 |
SQLite 的存储类稍微比数据类型更普遍。例如 INTEGER 存储类型,包含 6 种不同的不同长度的整数数据类型。
SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。
存储为 TEXT:格式为:”YYYY-MM-DD HH:MM:SS.SSS”的日期。
存储为 REAL:从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。
存储为 INTEGER:从 1970-01-01 00:00:00 UTC 算起的秒数。
运算符
比较运算符和算数运算法则与编程语言的运算符相同。
逻辑运算符由一些区别
逻辑运算符
逻辑运算符如下图所示:
表达式
布尔表达式
SQLite 的布尔表达式在匹配单个值的基础上获取数据。语法如下:
1 | SELECT column1, column2, columnN |
实际使用如下:
1 | sqlite> SELECT * FROM COMPANY WHERE SALARY = 10000; |
数值表达式
用来执行查询中的任何数学运算。
语法如下:
1 | SELECT numerical_expression as OPERATION_NAME |
实际使用如下:
1 | sqlite> SELECT (15 + 6) AS ADDITION |
日期表达式
日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。
1 | sqlite> SELECT CURRENT_TIMESTAMP; |