前面几篇文章:
玩转SQLite1:SQLite简介与安装
玩转SQLite2:SQLite命令行基本操作
玩转SQLite3:SQLite图形软件基本操作
玩转SQLite4:SQLite数据插入与查看
玩转SQLite5:使用Python来读写数据库
玩转SQLite6:使用C语言来读写数据库
已经快速了解了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 | 从一个或多个表中检索某些记录 |
总结一下:
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函数:
代码语言:javascript复制date(...) strftime('%Y-%m-%d', ...)
time(...) strftime('%H:%M:%S', ...)
datetime(...) strftime('%Y-%m-%d %H:%M:%S', ...)
julianday(...) strftime('%J', ...)
strftime中的格式包括:
代码语言:javascript复制-- 格式 格式说明
-- %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语句,可以简单测试一些日期格式(打印当前的时间):