SQLite 的 INSERT 语句用于向表中插入新行。基本语法如下:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
示例
假设有一个表 users:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE,
age INTEGER,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
1. 插入完整数据
INSERT INTO users (name, email, age)
VALUES ('张三', 'zhangsan@example.com', 25);
2. 插入部分数据(未指定的列使用默认值或 NULL)
INSERT INTO users (name, age)
VALUES ('李四', 30);
3. 插入多行
INSERT INTO users (name, email, age)
VALUES
('王五', 'wangwu@example.com', 28),
('赵六', 'zhaoliu@example.com', 35);
4. 不指定列名(必须按表定义顺序提供所有值)
INSERT INTO users VALUES (NULL, '陈七', 'chenqi@example.com', 22, DATETIME('now'));
5. 使用 INSERT OR REPLACE(当主键或唯一约束冲突时替换)
INSERT OR REPLACE INTO users (id, name, email)
VALUES (1, '张三更新', 'newemail@example.com');
6. 使用 INSERT OR IGNORE(冲突时忽略)
INSERT OR IGNORE INTO users (email, name)
VALUES ('zhangsan@example.com', '重复邮箱用户');
7. 从查询结果插入(INSERT INTO ... SELECT)
INSERT INTO users_backup
SELECT * FROM users WHERE age > 25;
注意事项
AUTOINCREMENT只有在INTEGER PRIMARY KEY上有效。CURRENT_TIMESTAMP会自动填入当前时间。- 字符串用单引号,
NULL不加引号。 - 违反约束(如
NOT NULL、UNIQUE)会报错,除非使用OR IGNORE/OR REPLACE。
需要针对特定表结构生成 INSERT 语句吗?欢迎提供表定义!