主题
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 执行时间