目录
[1. SQLite 是什么?](#1. SQLite 是什么?)
[2. SQLite 和 MySQL 最大区别是什么?](#2. SQLite 和 MySQL 最大区别是什么?)
[3. SQLite 支持哪些数据类型?](#3. SQLite 支持哪些数据类型?)
[4. 什么是 SQLite 动态类型?](#4. 什么是 SQLite 动态类型?)
[5. SQLite 自增主键怎么写?](#5. SQLite 自增主键怎么写?)
[6. SQLite 怎么查看所有表?](#6. SQLite 怎么查看所有表?)
[7. SQLite 怎么查看表结构?](#7. SQLite 怎么查看表结构?)
[8.sqlite 左右连接全连接及关键字](#8.sqlite 左右连接全连接及关键字)
1. SQLite 是什么?
标准答案:
SQLite 是一个嵌入式、轻量级、文件型关系数据库。
它不需要单独启动数据库服务器,数据库通常直接存储在一个文件中。应用程序通过 SQLite 库直接读写这个数据库文件。
特点:
- 无需独立服务器
- 单文件数据库
- 支持标准 SQL
- 支持事务和 ACID
- 支持索引、触发器、视图、外键
- 适合移动端、桌面软件、嵌入式设备、本地数据存储
- 不支持存储过程
追问:为什么 SQLite 不需要启动服务?
因为 SQLite 是嵌入到应用程序中的数据库引擎,而 MySQL/PostgreSQL 通常需要独立的数据库服务进程。
2. SQLite 和 MySQL 最大区别是什么?
最大的区别是架构:
| SQLite | MySQL(C/S架构) |
|---|---|
| 嵌入式数据库 | 客户端/服务器数据库 |
| 数据通常是本地文件 | 数据由数据库服务管理 |
| 不需要启动服务 | 通常需要数据库服务 |
| 没有传统用户权限体系 | 有用户、角色、权限体系 |
| 单机使用非常方便 | 更适合多客户端、集中式服务 |
| 并发写入能力有限 | 更适合高并发写入 |
一句话:
SQLite 是嵌入式文件型数据库,MySQL 是服务器型数据库。
3. SQLite 支持哪些数据类型?
严格来说,SQLite 有 5 种 Storage Class(存储类):
NULL
INTEGER
REAL
TEXT
BLOB
其中:
NULL:空值INTEGER:整数REAL:浮点数TEXT:文本BLOB:二进制数据
4. 什么是 SQLite 动态类型?
SQLite 的一个重要特点是:
列的声明类型不是绝对限制,实际数据有自己的存储类型。
sql
CREATE TABLE test (
value INTEGER
) STRICT;
STRICT 表可以进行更严格的类型检查
5. SQLite 自增主键怎么写?
推荐:
sql
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT
);
你没有提供 ID,SQLite 会给这一行分配一个 ROWID。
如果写:
id INTEGER PRIMARY KEY AUTOINCREMENT
则会使用 AUTOINCREMENT 机制,避免重用已经删除的 ROWID。
重要:
"给我一个这个表历史上从没用过的更大的 ROWID。
6. SQLite 怎么查看所有表?
sql
SELECT name
FROM sqlite_schema
WHERE type = 'table';
也可以使用:
sql
SELECT name
FROM sqlite_master
WHERE type = 'table';
sqlite_master 是经典写法,sqlite_schema 是更推荐的现代名称。
7. SQLite 怎么查看表结构?
PRAGMA table_info(users);
如果需要查看更多信息,可以了解:
PRAGMA table_xinfo(users);
8.sqlite 左右连接全连接及关键字
- 常用关键字 :
SELECT查询、INSERT插入、UPDATE修改、DELETE删除;WHERE筛选、ORDER BY排序、GROUP BY分组、HAVING分组筛选、LIMIT限制数量、DISTINCT去重。
WHERE 筛选分组前的数据,HAVING 筛选分组后的数据。

-
JOIN 表连接:
-
INNER JOIN只保留两表匹配的数据; -
LEFT JOIN保留左表全部数据,右表匹配不到则为NULL; -
RIGHT JOIN保留右表全部数据; -
FULL OUTER JOIN保留两表全部数据,匹配不到的一方为NULL。