SQLite 常用命令

  • 所有以点(.)开头的命令是SQLite特有的命令,不是SQL语句
  • SQL语句必须以分号(;)结尾
  • 按上下箭头可以查看历史命令
  • 使用Ctrl+C可以中断长时间运行的查询

创建/打开数据库

sqlite3 数据库文件名.db
  • 如果数据库不存在,SQLite会自动创建它。

退出SQLite命令行

.quit
# 或
.exit

表操作

# 创建表
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);

# 查看所有表
.tables

# 查看表结构
.schema 表名

数据操作

# 插入数据
INSERT INTO users (name, age) VALUES ('Alice', 30);

# 查询数据
SELECT * FROM users;
SELECT name, age FROM users WHERE age > 25;

# 更新数据
UPDATE users SET age = 31 WHERE name = 'Alice';

# 删除数据
DELETE FROM users WHERE id = 1;

导入导出

# 从CSV导入数据
.mode csv
.import 文件名.csv 表名

# 导出到CSV
.headers on
.mode csv
.output 文件名.csv
SELECT * FROM 表名;
.output stdout

# 执行SQL脚本
.read 脚本文件名.sql

执行 sql 脚本时的错误处理

# 无数据
sqlite> select * from projects;

# 当 sql 语句中创建的表已存在时
sqlite> .read 1.sql
Parse error near line 2: table departments already exists
  CREATE TABLE departments (     department_id INT PRIMARY KEY,     department_n
               ^--- error here
Parse error near line 15: table employees already exists
  CREATE TABLE employees (     employee_id INT PRIMARY KEY,     first_name VARCH
               ^--- error here
Parse error near line 34: table salaries already exists
  CREATE TABLE salaries (     salary_id INT PRIMARY KEY,     employee_id INT,   
               ^--- error here
Parse error near line 53: table projects already exists
  CREATE TABLE projects (     project_id INT PRIMARY KEY,     project_name VARCH
               ^--- error here
Parse error near line 67: table employee_projects already exists
  CREATE TABLE employee_projects (     employee_id INT,     project_id INT,     
               ^--- error here

# 不影响 INSERT INTO 插入数据
sqlite> select * from projects;
1|Project Apollo|2021-01-01|2021-12-31
2|Project Zephyr|2022-03-01|
3|Project Orion|2020-06-01|2021-06-30

实用命令

# 显示列标题
.headers on

# 更改输出格式
.mode column
.mode list
.mode html

# 显示查询执行时间
.timer on

# 查看所有SQLite命令
.help

高级功能

# 事务处理
BEGIN TRANSACTION;
-- 执行多个SQL语句
COMMIT;
-- 或 ROLLBACK; 回滚

# 创建索引
CREATE INDEX idx_name ON users(name);

# 使用视图
CREATE VIEW adult_users AS SELECT * FROM users WHERE age >= 18;

# 备份数据库
.backup 备份文件名.db

# 恢复数据库
.restore 备份文件名.db