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

网友投稿 236 2022-11-03

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

1 SQLite 基本语法

1.1 SQLite注释

单行注释以两个连续的横杠: "--" 开始

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

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

1.2 SQLite大小写

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

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

1.3 SQLite语句/命令

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

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-字节有符号整形)。

Boolean 数据类型

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

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 算起的秒数。

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

第一个参数(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语句,可以简单测试一些日期格式(打印当前的时间):

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot实现返回视图而不是string的方法
下一篇:实用教程 | 云原生安全平台 NeuVector 部署
相关文章

 发表评论

暂时没有评论,来抢沙发吧~