Skip to content

SQLite

基本数据类型

SQLite 使用 动态类型 系统,字段类型只在语义上提供约束,其核心存储类型只有以下几种:

类型说明
INTEGER整数类型(1~8 字节)
REAL浮点数(8 字节 IEEE)
TEXT文本,使用 UTF-8/UTF-16
BLOB二进制数据
NULL空值

注意:字段类型可以写成 VARCHAR(255),但 SQLite 实际还是按上述存储类型处理。

DDL - 数据库

创建/打开数据库

bash
sqlite3 stu_info.db
  • 文件不存在则自动创建
  • .db 扩展名不是必须,但建议加上便于识别

退出 SQLite 命令行

bash
.quit
# 或
.exit

DDL - 表操作

创建表

sql
CREATE TABLE users (
  id INTEGER PRIMARY KEY, -- 自动增长
  name TEXT,
  addr TEXT
);

SQLite 的 INTEGER PRIMARY KEY 会自动变为 rowid,如果你想自增主键,这是推荐写法。

修改表

sql
-- 重命名表
ALTER TABLE old_table_name RENAME TO new_table_name;

-- 重命名列(SQLite 3.25+)
ALTER TABLE table_name RENAME COLUMN old_col TO new_col;

-- 添加新列
ALTER TABLE table_name ADD COLUMN age INTEGER;

-- 删除列(SQLite 3.35+,2021 发布)
ALTER TABLE users DROP COLUMN addr;

删除表

sql
DROP TABLE IF EXISTS users;

建议使用 IF EXISTS 避免错误。

查看表列表

sql
.tables

查看表结构(SQL 定义)

sql
.schema users

查看所有表结构

sql
.schema

DML

插入数据

sql
-- 指定列插入
INSERT INTO users (name, addr) VALUES ('Tom', 'Beijing');
-- 批量插入
INSERT INTO users (name, addr) VALUES
  ('Alice', 'Shanghai'),
  ('Bob', 'Guangzhou'),
  ('Charlie', 'Shenzhen');

-- 全列插入(不推荐,顺序需一致,易出错)
INSERT INTO users VALUES (1, 'Tom', 'Beijing');

更新数据

sql
UPDATE users SET addr = 'Shanghai' WHERE name = 'Tom';

删除数据

sql
DELETE FROM users WHERE name = 'Tom';

DQL

查询数据

sql
SELECT * FROM users;
SELECT name, addr FROM users WHERE id > 5 ORDER BY id DESC;

辅助命令

sql
SELECT sqlite_version();
.headers on      -- 显示列名
.mode column     -- 列对齐格式
.nullvalue NULL  -- 设置 null 显示值
.timer on        -- 显示每条 SQL 执行时间

基于 MIT 许可发布