SQLite学习笔记——基本了解
前言
因为 MacOS 已经安装好了SQLite3,所以笔者就不需要安装。
SQLite 点命令
首先我们要了解的是非常重要的点命令,这些命令的不同之处在于它们不以分号结束。
如果需要查看可用的点命令清单,可以在任何时候输入 .help 来获取。
SQLite 语法
大小写敏感性
首先需要注意的是,SQLite不区分大小写,但是有一些明明是大小写敏感的,比如GLOB和glob。
注释
SQL注释可以出现在任何空白处,摆阔表达式内和其他SQL语句中间,但是它们不能嵌套。
注释有两种:
- 连续的两个 -开始的到换行符结束的注释
- 以 /*开始*/结束的多行注释
SQLite语句
所有的SQLite语句可以从任何关键字开始,比如 SELECT,INSERT 等,所有的语句以 ; 结束。
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 算起的秒数 | 
    希望我们都有一个光明的未来
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号