SQLite学习笔记——基本了解

发布时间 2023-10-02 13:26:01作者: Gensokyo_Alice

前言

因为 MacOS 已经安装好了SQLite3,所以笔者就不需要安装。

SQLite 点命令

首先我们要了解的是非常重要的点命令,这些命令的不同之处在于它们不以分号结束。

如果需要查看可用的点命令清单,可以在任何时候输入 .help 来获取。

SQLite 语法

大小写敏感性

首先需要注意的是,SQLite不区分大小写,但是有一些明明是大小写敏感的,比如GLOB和glob。

注释

SQL注释可以出现在任何空白处,摆阔表达式内和其他SQL语句中间,但是它们不能嵌套。

注释有两种:

  • 连续的两个 - 开始的到换行符结束的注释
  • /* 开始 */ 结束的多行注释

SQLite语句

所有的SQLite语句可以从任何关键字开始,比如 SELECTINSERT 等,所有的语句以 ; 结束。

SQLite 数据类型

存储类

SQLite中共有五个存储类,这是比数据类型更大的概念

存储类 描述
NULL 值是一个 NULL 值
INTRGER 值是一个带符号的整数,根据值的大小存储在 1、2、3、4、6或8字节中
REAL 值是一个浮点数,存储8字节的IEEE浮点数字
TEXT 值时一个文本字符串,使用数据库编码(UTF-8、UTF-16BE、UTF-16LE)存储
BLOB 值是一个blob数据,完全根据它的输入存储

亲和类型

接下来介绍一下亲和类型,也就是每一列优先使用某一类型来作为该值的存储方式,目前有五种

亲和类型 描述
TEXT 先转换为文本格式
NUMERIC 如果转换不会导致信息丢失并且完全可逆,那么会把文本数据转换为INTEGER或REAL类型,否则以TEXT存储;对于NULL活着BLOB,不做任何转换。尽量选择INTEGER
INTEGER 规则基本等同NUMERIC,不过执行CAST表达式会有区别
REAL 规则基本等同NUMERIC,不过只会转换为REAL
BLOB(NULL) (这个类型经过改名,所以两个名字都可能)不做任何转换

数据类型

只列举一些

数据类型 亲和类型
INT, INTEGER, TINYINT, BIGINT, INT2 INTEGER
CHARACTER(20), TEXT, CLOB TEXT
BLOB, 未指定类型 BLOB
REAL, DOUBLE, FLOAT REAL
NUMERIC, BOOLEAN, DATE, DATETIME NUMERIC

其中BOOLEAN会被存为整数 0 / 1
DATE / TIME 数据类型则会存为TEXT、REAL、INTEGER值

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