命令行

命令行都是由’.‘开始,’;‘结束。

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)
字段含义
typetable对象类型
nameadmin对象名称
tbl_nameadmin所属表名称
rootpage2B树根页号
sqlCREATE TABLE admin(…)创建语句