首页 / 服务器测评 / 正文
MySQL的插入语句详解

Time:2025年01月06日 Read:16 评论:42 作者:y21dr45

在数据库操作中,数据的插入是一个基本且常见的操作,MySQL作为一种广泛使用的关系型数据库管理系统,其插入语句具有多种用法和灵活的操作方式,本文将详细介绍MySQL插入语句的各种语法及其使用方法。

MySQL的插入语句详解

一、INSERT...VALUES 语句

1. 基本语法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

2. 示例

假设我们有一个名为users 的表,包含以下列:idusernameemailbirthdate,我们可以使用以下 SQL 语句向该表中插入一条新记录:

INSERT INTO users (username, email, birthdate)
VALUES ('test', 'test@runoob.com', '1990-01-01');

在这个例子中,我们只指定了部分列名(usernameemailbirthdate),因此其他列(如id)必须允许为空或有默认值。

3. 同时插入多行数据

可以在单个 INSERT 语句中插入多行数据,只需用圆括号括起每组值:

INSERT INTO users (username, email, birthdate)
VALUES 
    ('test1', 'test1@runoob.com', '1985-07-10'),
    ('test2', 'test2@runoob.com', '1988-11-25'),
    ('test3', 'test3@runoob.com', '1993-05-03');

二、INSERT...SET 语句

1. 基本语法

INSERT INTO table_name
SET column1 = value1, column2 = value2, ...;

2. 示例

与上一个users 表的例子相同,使用 SET 语法插入数据如下:

INSERT INTO users
SET username = 'test', email = 'test@runoob.com', birthdate = '1990-01-01';

需要注意的是,如果某些列未被指定,则这些列的值将为表结构定义中的默认值。

3. 同时插入多行数据

虽然标准的 SQL 不允许在单条 INSERT...SET 语句中插入多行,但可以通过重复编写多条 INSERT...SET 语句来实现:

INSERT INTO users SET username = 'test1', email = 'test1@runoob.com', birthdate = '1985-07-10';
INSERT INTO users SET username = 'test2', email = 'test2@runoob.com', birthdate = '1988-11-25';
INSERT INTO users SET username = 'test3', email = 'test3@runoob.com', birthdate = '1993-05-03';

三、INSERT...SELECT 语句

1. 基本语法

INSERT INTO target_table (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM source_table
WHERE condition;

2. 示例

假设有两个表employeessenior_employees,我们希望将年龄大于30岁的员工信息从employees 表插入到senior_employees 表中:

INSERT INTO senior_employees (id, name, age)
SELECT id, name, age FROM employees WHERE age > 30;

这种方式常用于数据迁移和归档。

四、条件插入

1. 使用 INSERT IGNORE

如果希望在插入数据时忽略已经存在的记录(即不抛出错误),可以使用INSERT IGNORE

INSERT IGNORE INTO users (username, email, birthdate)
VALUES ('test', 'test@runoob.com', '1990-01-01');

这样,当插入一条记录导致唯一键冲突时,MySQL将忽略这条记录而不是抛出错误。

2. 使用 ON DUPLICATE KEY UPDATE

如果希望在插入数据时遇到主键或唯一键冲突时更新现有记录,可以使用ON DUPLICATE KEY UPDATE

INSERT INTO users (id, username, email, birthdate)
VALUES (1, 'test', 'test@runoob.com', '1990-01-01')
ON DUPLICATE KEY UPDATE
username = VALUES(username), email = VALUES(email), birthdate = VALUES(birthdate);

在这个例子中,如果id 为 1 的记录已存在,则会更新该记录的usernameemailbirthdate 字段。

五、高级用法

1. 使用 LOW_PRIORITY 修饰符

LOW_PRIORITY 修饰符会使插入语句延迟执行,直到没有其他客户端从表中读取数据:

INSERT LOW_PRIORITY INTO users (username, email, birthdate)
VALUES ('test', 'test@runoob.com', '1990-01-01');

这在高并发环境下非常有用,可以防止插入操作对读操作造成阻塞。

2. 使用 DELAYED 修饰符

DELAYED 修饰符适用于 MyISAM 存储引擎,它会将插入操作延迟到系统负载较低时再执行:

INSERT DELAYED INTO users (username, email, birthdate)
VALUES ('test', 'test@runoob.com', '1990-01-01');

这种修饰符有助于在低峰期批量处理插入操作,提升系统性能。

MySQL的插入语句功能强大且灵活,能够满足各种数据插入需求,无论是简单的单行插入,还是复杂的多行插入、条件插入和高级选项,MySQL都提供了丰富的语法支持,掌握这些插入语句的用法,可以有效地提高数据库操作的效率和可靠性。

标签: mysql的插入语句 
排行榜
关于我们
「好主机」服务器测评网专注于为用户提供专业、真实的服务器评测与高性价比推荐。我们通过硬核性能测试、稳定性追踪及用户真实评价,帮助企业和个人用户快速找到最适合的服务器解决方案。无论是云服务器、物理服务器还是企业级服务器,好主机都是您值得信赖的选购指南!
快捷菜单1
服务器测评
VPS测评
VPS测评
服务器资讯
服务器资讯
扫码关注
鲁ICP备2022041413号-1