Skip to content

Latest commit

 

History

History
105 lines (70 loc) · 2.3 KB

File metadata and controls

105 lines (70 loc) · 2.3 KB

插入数据

插入数据是最基础的数据写入操作。MySQL 中通常使用 INSERT 语句把一条或多条记录写入数据表。

INSERT语句的语法

最常见的 INSERT 语法如下:

INSERT INTO 表名 (字段1, 字段2, 字段3, ...)
VALUES (值1, 值2, 值3, ...);

也可以写成:

INSERT INTO 表名
VALUES (值1, 值2, 值3, ...);

但第二种写法要求值的顺序必须与表结构中的字段顺序完全一致,因此实际业务中通常更推荐显式指定字段名。

为表的所有字段插入数据

如果一条记录需要给所有字段赋值,可以直接插入完整值列表。

例如:

INSERT INTO user
VALUES (18, '王小二', 0, '12322224');

这种写法简单直接,但风险在于:

  1. 必须了解表中字段顺序
  2. 如果表结构调整,原 SQL 可能失效
  3. 某些自增字段可能不适合手动指定值

因此只在字段顺序非常明确的场景下使用。

为表的指定字段插入数据

更常见的写法是只插入需要的字段:

INSERT INTO user (name, sex, mobile)
VALUES ('张三', 1, '13811772277');

也可以使用 SET 语法:

INSERT INTO meeting
SET a = 1, b = 2;

这种方式适合:

  • 某些字段有默认值
  • 自增主键无需手动指定
  • 只想插入部分业务字段

同时插入多条记录

INSERT 也支持一次插入多条数据:

INSERT INTO user (name, sex, mobile)
VALUES
  ('张三', 1, '13800000001'),
  ('李四', 0, '13800000002'),
  ('王五', 1, '13800000003');

相比一条一条插入,这种方式通常效率更高,也更适合批量初始化数据。

将查询结果插入到表中

有时需要把一张表查询出来的结果直接插入到另一张表,这时可以使用 INSERT ... SELECT

例如:

INSERT INTO orders (user_account_id, title)
SELECT m.user_id, m.title
FROM meeting AS m
WHERE m.id = 1;

这表示:

  • 先从 meeting 表查询数据
  • 再把结果插入到 orders 表中

这种写法适合:

  • 数据迁移
  • 历史数据归档
  • 由已有数据生成新表记录

小结

插入数据最常用的是 INSERT INTO ... VALUES ...。单条插入适合日常写入,多条插入适合批量数据,INSERT ... SELECT 则适合基于查询结果进行写入。