MySQL 是一种广泛使用的关系型数据库管理系统,它支持多种操作,其中添加记录是最基本的操作之一,在 MySQL 中,添加记录通常使用 INSERT 语句,本文将详细介绍 INSERT 语句的用法、语法结构以及常见场景,帮助您快速掌握如何向 MySQL 数据库中添加记录。

基础 INSERT 语句语法
INSERT 语句用于向表中插入新的数据行,其基本语法结构如下:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
table_name:要插入数据的表名。(column1, column2, ...):可选参数,指定要插入数据的列名,如果省略,则默认为表的所有列。(value1, value2, ...):对应列的值,值的顺序和数量必须与列名匹配。
示例:假设有一个名为 students 的表,包含 id、name 和 age 三个列,插入一条记录的语句如下:
INSERT INTO students (name, age)
VALUES ('张三', 20); 插入完整记录
如果需要为表中的所有列插入数据,可以省略列名列表,但必须确保值的顺序与表定义中列的顺序一致。
INSERT INTO students VALUES (1, '李四', 21);
注意事项:
- 如果某些列有
AUTO_INCREMENT属性(如自增主键),可以省略这些列的值,数据库会自动生成。 - 如果列允许
NULL值,可以显式插入NULL或使用DEFAULT关键字插入默认值。
插入多条记录
MySQL 支持一次性插入多条记录,语法如下:
INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ...;
示例:
INSERT INTO students (name, age)
VALUES
('王五', 22),
('赵六', 23),
('钱七', 24); 这种方式可以减少数据库的 I/O 操作,提高插入效率。
使用 INSERT … SELECT 批量插入
如果需要从其他表或查询结果中插入数据,可以使用 INSERT ... SELECT 语句:

INSERT INTO table1 (column1, column2) SELECT columnA, columnB FROM table2 WHERE condition;
示例:假设有一个 temp_students 表,需要将其数据插入到 students 表中:
INSERT INTO students (name, age) SELECT temp_name, temp_age FROM temp_students WHERE temp_age > 18;
处理自增主键和默认值
自增主键:如果表的自增主键列未在
INSERT语句中指定,MySQL 会自动生成一个唯一的值。INSERT INTO students (name, age) VALUES ('孙八', 25);默认值:如果列定义了
DEFAULT值,可以通过DEFAULT关键字显式插入默认值:INSERT INTO students (name, age, status) VALUES ('周九', 26, DEFAULT);
插入日期和时间数据
MySQL 支持多种日期和时间格式,插入时需要确保格式正确,常见方法包括:
使用
DATE、DATETIME或TIMESTAMP类型的字面量:INSERT INTO orders (order_date, customer_name) VALUES ('2025-10-01', '客户A');使用
NOW()函数插入当前时间:INSERT INTO logs (log_time, message) VALUES (NOW(), '系统启动');
插入字符串和转义字符
字符串需要用单引号或双引号括起来,如果字符串中包含单引号,可以使用反斜杠转义或双引号包裹:
INSERT INTO products (name, description)
VALUES ('MySQL\'s Guide', '一本关于MySQL的书'); 插入 NULL 值
如果列允许 NULL,可以直接插入 NULL:

INSERT INTO students (name, age, enrollment_date)
VALUES ('吴十', NULL, '2025-10-01'); 事务与批量插入
在批量插入大量数据时,建议使用事务(START TRANSACTION 和 COMMIT)来提高性能和一致性:
START TRANSACTION;
INSERT INTO students (name, age) VALUES ('郑十一', 27);
INSERT INTO students (name, age) VALUES ('王十二', 28);
COMMIT; 错误处理
如果插入操作违反约束(如唯一键冲突、外键约束等),MySQL 会返回错误,可以通过 INSERT IGNORE 或 ON DUPLICATE KEY UPDATE 处理冲突:
INSERT IGNORE:忽略错误,不插入重复数据:
INSERT IGNORE INTO students (name, age) VALUES ('张三', 20);ON DUPLICATE KEY UPDATE:更新已存在的记录:
INSERT INTO students (id, name, age) VALUES (1, '张三', 21) ON DUPLICATE KEY UPDATE age = VALUES(age);
相关问答 FAQs
Q1: 如何在插入数据时避免重复?
A1: 可以使用 INSERT IGNORE 忽略重复记录,或 ON DUPLICATE KEY UPDATE 更新已存在的记录。
INSERT INTO students (id, name, age) VALUES (1, '张三', 21) ON DUPLICATE KEY UPDATE age = VALUES(age);
Q2: 如何批量插入大量数据以提高性能?
A2: 可以使用 INSERT ... VALUES (...,), (...,), ... 一次性插入多条记录,或结合事务(START TRANSACTION 和 COMMIT)减少 I/O 开销。
START TRANSACTION;
INSERT INTO students (name, age) VALUES ('李四', 22), ('王五', 23);
COMMIT; 【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复