首页 > 技术知识 > 正文

前面几篇文章已经快速了解了SQLite的基本用法以及简单的Pyhton与C语言的API函数的使用。本篇再来全面介绍下SQLite的基本语法与数据类型。

1 SQLite 基本语法

1.1 SQLite注释

单行注释以两个连续的横杠: “复制–” 开始

多行注释则与C风格的:“复制/* */”一致

复制sqlite>.help — 这是一个简单的注释 sqlite>.help /* 这也是一个简单的注释 */

1.2 SQLite大小写

SQLite是不区分大小写,比如select语句中,既可以使用大写的SELECT,也可以用小写的select

但有例外:复制GLOB和复制glob在SQLite语句中有不同的含义。

1.3 SQLite语句/命令

SQLite 语句以关键字开始,以分号 复制; 结束

关键字,也称SQLite命令,如:SELECT,INSERT,UPDATE,DELETE,ALTER,DROP等,具体分类如下:

1.3.1 DDL – 数据定义语言

数据操作语言,即数据的增、删、改数据库在的数据表

命令 描述 CREATE/create 创建一个新的表,一个表的视图,或者数据库中的其他对象 ALTER/alter 修改数据库中的某个已有的数据库对象,比如一个表 DROP/drop 删除整个表,或者表的视图,或者数据库中的其他对象

1.3.2 DML – 数据操作语言

数据操作语言,即对数据表中的数据进行增、删、改操作

命令 描述 INSERT/insert 创建一条记录 DELETE/delete 删除记录 UPDATE/update 修改记录

1.3.3 DQL – 数据查询语言

数据操作语言,即对数据表中的数据进行操作

命令 描述 SELECT/select 从一个或多个表中检索某些记录

总结一下:

玩转SQLite7:基本语法与数据类型

2 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 种不同的不同长度的整数数据类型,但只要INTEGER值被从磁盘读出进内存处理,就被转换成最一般的数据类型(8-字节有符号整形)。

对于BLOB数据,它表示二进制大对象,一般用来保存图片,视频等,另外还有CLOB,表示字符大对象,能够存放大量基于字符的数据。

Boolean 数据类型

SQLite 没有单独的 Boolean 存储类,它使用INTEGER作为存储类型,布尔值被存储为整数 0(false)和 1(true)。

Date 与 Time 数据类型

SQLite 没有一个单独的用于存储日期和/或时间的存储类,但内置的sqlite日期和时间函数能够将日期和时间以TEXT,REAL或INTEGER形式存放数能够将日期和时间以TEXT,REAL或INTEGER形式存放。

存储类 日期格式 TEXT 格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期。 REAL 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数。 INTEGER 从 1970-01-01 00:00:00 UTC 算起的秒数。

内置的日期和时间函数包括:

函数 含义 date(timestring, modifier, modifier, …) 以 YYYY-MM-DD 格式返回日期 time(timestring, modifier, modifier, …) 以 HH:MM:SS 格式返回时间 datetime(timestring, modifier, modifier, …) 以 YYYY-MM-DD HH:MM:SS 格式返回 julianday(timestring, modifier, modifier, …) 这将返回从格林尼治时间的公元前 4714 年 11 月 24 日正午算起的天数 strftime(format, timestring, modifier, modifier, …) 这将根据第一个参数指定的格式字符串返回格式化的日期

第一个参数(timestring):时间字符串

后面的参数(modifier):修饰符

strftime() 函数可以把格式字符串format作为其第一个参数

前四个个函数也可以转换成strftime函数:

复制date(…) strftime(%Y-%m-%d, …) time(…) strftime(%H:%M:%S, …) datetime(…) strftime(%Y-%m-%d %H:%M:%S, …) julianday(…) strftime(%J, …)

strftime中的格式包括:

复制– 格式 格式说明 — %d 天数,例如:01-31中某一个天 — %f 带小数部分(SS.SSS格式)的秒 — %H 小时,例如: 00-23中某一个小时 — %j 一年中的第几天,001-366 — %J 儒略日数,DDDD.DDDD — %m 月,00-12中某一具体月份 — %M 分,00-59 — %s 从 1970-01-01 算起的秒数 — %S 秒,00-59 — %w 一周中的第几天,0-6 (0 is Sunday) — %W 一年中的第几周,01-53 — %Y 年,YYYY — %% % symbol

通过SQLite语句,可以简单测试一些日期格式(打印当前的时间):

玩转SQLite7:基本语法与数据类型1

end

审核编辑:汤梓红

猜你喜欢