命令行
命令行都是由’.‘开始,’;‘结束。
SQLite 中「新建数据库」和「打开数据库」是同一个命令(文件不存在则创建,存在则打开):
# 方式1:创建/打开名为 test.db 的数据库(文件会生成在当前目录)
sqlite3 test.db
# 方式2:打开后查看当前数据库文件路径(验证)
sqlite> .database # 输入点命令,显示当前连接的数据库文件
核心点命令
| 命令 | 作用 |
|---|---|
.database | 查看当前连接的数据库文件 |
.tables | 查看当前数据库中有哪些表 |
.schema | 查看表的创建语句 |
.header on | 查询结果显示列名(默认 off) |
.mode column | 结果按列对齐显示(还有 box / csv / json / list) |
.dump | 把整个库导出成 SQL 文本(备份/迁移用) |
.read init.sql | 执行一个 .sql 脚本文件里的所有语句 |
.quit / .exit | 退出 |
推荐每次进去先设置好显示格式:
sqlite> .headers on
sqlite> .mode column
SQL语句
创建表
CREATE TABLE [IF NOT EXISTS] 表名 (
列名1 数据类型 [约束],
列名2 数据类型 [约束],
...
);
数据类型
INTEGER:整数(int);TEXT:字符串(varchar);REAL:浮点数(double);DATETIME:日期时间;BLOB:二进制数据(如图片)。
常用约束
PRIMARY KEY:主键(唯一标识行);AUTOINCREMENT:自增(仅 INTEGER 主键可用);NOT NULL:非空;UNIQUE:唯一;DEFAULT:默认值
系统表
每一个 SQLite 数据库都有一个对应的 SQLITE_MASTER 表, 它定义了数据库的模式。你不能对它使用UPDATE、INSERT 或 DELETE。
CREATE TABLE sqlite_master(
type text,
name text,
tbl_name text,
rootpage integer,
sql text
);
sqlite> create table admin(username text,age integer);
sqlite> insert into admin values("ppp",20);
sqlite> .schema
CREATE TABLE admin(username text,age integer);
sqlite> .table
admin
sqlite> SELECT * FROM sqlite_master;
table|admin|admin|2|CREATE TABLE admin(username text,age integer)
| 字段 | 值 | 含义 |
|---|---|---|
| type | table | 对象类型 |
| name | admin | 对象名称 |
| tbl_name | admin | 所属表名称 |
| rootpage | 2 | B树根页号 |
| sql | CREATE TABLE admin(…) | 创建语句 |