概述
本文结构如下所示:
- SQL 是什么
- SQLite 数据类型
- SQLite 创建/销毁/修改表
- SQLite 常用命令
一、SQL 是什么
SQL 全称为 Structured Query Language,即结构化查询语言,所以和 C、Java 一样,它是一门语言,一门专门用来与数据库“沟通”的语言。下面是几个重要的数据库术语以及它们的概念:
术语 | 含义 |
---|---|
数据库(Database) | 数据库是一个以某种有组织的方式储存的数据集合。我们可以把数据库想象成一个文件柜,这个文件柜是一个存放数据的物理位置,不管数据是什么,也不管数据是如何组织的。 |
表(Table) | 表示某种特定类型数据的结构化清单。每个表的表名都是唯一的。表具有一些特性,这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式(schema)。 |
列(Column) | 表中的一个字段,所有的表都是由一个或多个列组成的。 |
数据类型(Datatype) | 所允许的数据的类型。每个表列都有对应的数据类型,它限制(或允许)该列中存储的数据。 |
行(Row) | 表中的一个记录即为行,表中的数据是按行存储的。 |
主键(Primary key) | 一列(或一组列),其值能够唯一标识表中每一行。 |
表中的任何列都可以作为主键,它需要满足以下条件:
- 任意两行都不能具有相同的主键值;
- 每一行都必须具有一个主键值(主件列不允许 NULL 值);
- 主键列的值不允许修改或更新;
- 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
二、SQLite数据类型
SQLite 支持以下5大数据类型:
数据类型 | 描述 |
---|---|
NULL | 值为 NULL |
INTEGER | 值为一个带符号的数字,根据值的大小存储在 1、2、3、4、6 或 8 字节中 |
TEXT | 值为一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储 |
BLOB | 值是一个 blob 数据,完全根据它的输入存储 |
REAL | 值为浮点型,8字节存储 |
但实际上,SQLite 也支持以下的数据类型:
数据类型 | 描述 |
---|---|
smallint | 16 位整数 |
float | 32 位浮点型数 |
double | 64 位浮点型数 |
char(n) | n 长度的字串,n 的大小不能超过 254 |
varchar(n) | 长度不固定且其最大长度为 n 的字串,n 的大小不能超过 4000 |
date | 包含了 年份、月份、日期 |
time | 包含了 小时、分钟、秒 |
timestamp | 包含了 年、月、日、时、分、秒、毫秒 |
这里仅仅列出了日常中较常使用的几种数据类型,更多的数据类型可以参考 SQL数据类型。此外,最后的三种数据类型 date、time、timestamp 我们往往用它们来记录日志或者时间戳事件,如下所示:
CREATE TABLE Times
(
id integer PRIMARY KEY,
date NOT NULL DEFAULT current_date,
time NOT NULL DEFAULT current_time,
timestamp NOT NULL DEFAULT current_timestamp
);
INSERT INTO Times (id) VALUES(1);
INSERT INTO Times (id) Values(2);
采用 SELECT 查看 Times 表,结果如下所示:
sqlite> SELECT * FROM Times;
id