好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQLite 基本知识

SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。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)中运行。

DDL - 数据定义语言

CREATE
创建一个新的表,一个表的视图,或者数据库中的其他对象。

ALTER
修改数据库中的某个已有的数据库对象,比如一个表。

DROP
删除整个表,或者表的视图,或者数据库中的其他对象。

DML - 数据操作语言

INSERT
创建一条记录。

UPDATE
修改记录。

DELETE
删除记录。

DQL - 数据查询语言

SELECT
从一个或多个表中检索某些记录。

 

SQLite 是不区分大小写的,但也有一些命令是大小写敏感的,比如 GLOBglob 在 SQLite 的语句中有不同的含义。

SQLite 注释是附加的注释,可以在 SQLite 代码中添加注释以增加其可读性,他们可以出现在任何空白处,包括在表达式内和其他 SQL 语句的中间,但它们不能嵌套。

SQL 注释以两个连续的 "-" 字符(ASCII 0x2d)开始,并扩展至下一个换行符(ASCII 0x0a)或直到输入结束,以先到者为准。

您也可以使用 C 风格的注释,以 "/*" 开始,并扩展至下一个 "*/" 字符对或直到输入结束,以先到者为准。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 Affinity 类型

SQLite 支持列上的 类型 affinity 概念。任何列仍然可以存储任何类型的数据,但列的首选存储类是它的 affinity。在 SQLite3 数据库中,每个表的列分配为以下类型的 affinity 之一:

TEXT
该列使用存储类 NULL、TEXT 或 BLOB 存储所有数据。

NUMERIC
该列可以包含使用所有五个存储类的值。

INTEGER
与带有 NUMERIC affinity 的列相同,在 CAST 表达式中带有异常。

REAL
与带有 NUMERIC affinity 的列相似,不同的是,它会强制把整数值转换为浮点表示。

NONE
带有 affinity NONE 的列,不会优先使用哪个存储类,也不会尝试把数据从一个存储类强制转换为另一个存储类。

SQLite Affinity 及类型名称

下表列出了当创建 SQLite3 表时可使用的各种数据类型名称,同时也显示了相应的应用 Affinity:

INT

INTEGER

TINYINT

SMALLINT

MEDIUMINT

BIGINT

UNSIGNED BIG INT

INT2

INT8

INTEGER

CHARACTER(20)

VARCHAR(255)

VARYING CHARACTER(255)

NCHAR(55)

NATIVE CHARACTER(70)

NVARCHAR(100)

TEXT

CLOB

TEXT

BLOB

no datatype specified

NONE

REAL

DOUBLE

DOUBLE PRECISION

FLOAT

REAL

NUMERIC

DECIMAL(10,5)

BOOLEAN

DATE

DATETIME

NUMERIC


Boolean 数据类型

SQLite 没有单独的 Boolean 存储类。相反,布尔值被存储为整数 0(false)和 1(true)。

Date 与 Time 数据类型

SQLite 没有一个单独的用于存储日期和/或时间的存储类,但 SQLite 能够把日期和时间存储为 TEXT、REAL 或 INTEGER 值。

存储类
日期格式

TEXT
格式为 "YYYY-MM-DD HH:MM:SS.SSS" 的日期。

REAL
从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。

INTEGER
从 1970-01-01 0 UTC 算起的秒数。

您可以以任何上述格式来存储日期和时间,并且可以使用内置的日期和时间函数来自由转换不同格式。

 

SQLite 运算符是什么?

运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。

运算符用于指定 SQLite 语句中的条件,并在语句中连接多个条件。

算术运算符

比较运算符

逻辑运算符

位运算符

SQLite 算术运算符

+
加法 - 把运算符两边的值相加
a + b 将得到 30

-
减法 - 左操作数减去右操作数
a - b 将得到 -10

*
乘法 - 把运算符两边的值相乘
a * b 将得到 200

/
除法 - 左操作数除以右操作数
b / a 将得到 2

%
取模 - 左操作数除以右操作数后得到的余数
b % a will give 0

SQLite 比较运算符

==
检查两个操作数的值是否相等,如果相等则条件为真。
(a == b) 不为真。

=
检查两个操作数的值是否相等,如果相等则条件为真。
(a = b) 不为真。

!=
检查两个操作数的值是否相等,如果不相等则条件为真。
(a != b) 为真。

<>
检查两个操作数的值是否相等,如果不相等则条件为真。
(a <> b) 为真。

>
检查左操作数的值是否大于右操作数的值,如果是则条件为真。
(a > b) 不为真。

<
检查左操作数的值是否小于右操作数的值,如果是则条件为真。
(a < b) 为真。

>=
检查左操作数的值是否大于等于右操作数的值,如果是则条件为真。
(a >= b) 不为真。

<=
检查左操作数的值是否小于等于右操作数的值,如果是则条件为真。
(a <= b) 为真。

!<
检查左操作数的值是否不小于右操作数的值,如果是则条件为真。
(a !< b) 为假。

!>
检查左操作数的值是否不大于右操作数的值,如果是则条件为真。
(a !> b) 为真。

 

SQLite 逻辑运算符

AND
AND 运算符允许在一个 SQL 语句的 WHERE 子句中的多个条件的存在。

BETWEEN
BETWEEN 运算符用于在给定最小值和最大值范围内的一系列值中搜索值。

EXISTS
EXISTS 运算符用于在满足一定条件的指定表中搜索行的存在。

IN
IN 运算符用于把某个值与一系列指定列表的值进行比较。

NOT IN
IN 运算符的对立面,用于把某个值与不在一系列指定列表的值进行比较。

LIKE
LIKE 运算符用于把某个值与使用通配符运算符的相似值进行比较。

GLOB
GLOB 运算符用于把某个值与使用通配符运算符的相似值进行比较。GLOB 与 LIKE 不同之处在于,它是大小写敏感的。

NOT
NOT 运算符是所用的逻辑运算符的对立面。比如 NOT EXISTS、NOT BETWEEN、NOT IN,等等。它是否定运算符。

OR
OR 运算符用于结合一个 SQL 语句的 WHERE 子句中的多个条件。

IS NULL
NULL 运算符用于把某个值与 NULL 值进行比较。

IS
IS 运算符与 = 相似。

IS NOT
IS NOT 运算符与 != 相似。

||
连接两个不同的字符串,得到一个新的字符串。

UNIQUE
UNIQUE 运算符搜索指定表中的每一行,确保唯一性(无重复)。

SQLite 位运算符

&
如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。
(A & B) 将得到 12,即为 0000 1100

|
如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。
(A | B) 将得到 61,即为 0011 1101

~
二进制补码运算符是一元运算符,具有"翻转"位效应。
(~A ) 将得到 -61,即为 1100 0011,2 的补码形式,带符号的二进制数。

<<
二进制左移运算符。左操作数的值向左移动右操作数指定的位数。
A << 2 将得到 240,即为 1111 0000

>>
二进制右移运算符。左操作数的值向右移动右操作数指定的位数。
A >> 2 将得到 15,即为 0000 1111

 

LIKE 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。这里有两个通配符与 LIKE 运算符一起使用:

百分号 (%)

下划线 (_)

百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。

 

GLOB 运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,对于下面的通配符,它遵循 UNIX 的语法。

星号 (*)

问号 (?)

星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。这些符号可以被组合使用。

 

ORDER BY 子句是用来基于一个或多个列按升序或降序顺序排列数据。

ORDER BY 子句的基本语法如下:

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

您可以在 ORDER BY 子句中使用多个列。确保您使用的排序列在列清单中。

 

GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组。

在 SELECT 语句中,GROUP BY 子句放在 WHERE 子句之后,放在 ORDER BY 子句之前。

HAVING 子句允许指定条件来过滤将出现在最终结果中的分组结果。

WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。

DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。

有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录

SQLite 基本知识

标签:

查看更多关于SQLite 基本知识的详细内容...

  阅读:31次

上一篇: MongoDB安装与window服务启动

下一篇:FMDB