插入数据是最基础的数据写入操作。MySQL 中通常使用 INSERT 语句把一条或多条记录写入数据表。
最常见的 INSERT 语法如下:
INSERT INTO 表名 (字段1, 字段2, 字段3, ...)
VALUES (值1, 值2, 值3, ...);
也可以写成:
INSERT INTO 表名
VALUES (值1, 值2, 值3, ...);
但第二种写法要求值的顺序必须与表结构中的字段顺序完全一致,因此实际业务中通常更推荐显式指定字段名。
如果一条记录需要给所有字段赋值,可以直接插入完整值列表。
例如:
INSERT INTO user
VALUES (18, '王小二', 0, '12322224');
这种写法简单直接,但风险在于:
因此只在字段顺序非常明确的场景下使用。
更常见的写法是只插入需要的字段:
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 则适合基于查询结果进行写入。