SQLite Insert 语句

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 NULLUNIQUE)会报错,除非使用 OR IGNORE / OR REPLACE

需要针对特定表结构生成 INSERT 语句吗?欢迎提供表定义!

文章已创建 2305

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部