mysql 的 insert(插入数据)详解
在 mysql 中,insert 语句用于向数据库表中添加新的记录。insert 语句非常灵活,支持多种语法形式,可以根据具体需求选择合适的用法。以下是 insert 语句的详细语法和使用示例。
1. 插入单行数据
1.1 指定列名和值
这是最常见的 insert 语法,适用于插入单行数据。你需要指定列名和对应的值。
insert into table_name (column1, column2, column3, ...) values (value1, value2, value3, ...);
示例:
假设我们有一个名为 users 的表,包含 id, username, email, birthdate, is_active 字段。我们想插入一条新记录:
insert into users (username, email, birthdate, is_active)
values ('test', 'test@runoob.com', '1990-01-01', true);
1.2 省略列名
如果你要插入的值涵盖了表中的所有列,可以省略列名部分。但请注意,值的顺序必须与表中列的顺序相同。
insert into table_name values (value1, value2, value3, ...);
示例:
假设 users 表的列顺序是 id, username, email, birthdate, is_active,并且 id 是自增列:
insert into users values (null, 'test', 'test@runoob.com', '1990-01-01', true);
2. 插入多行数据
2.1 使用多个 values 子句
你可以在 values 子句中指定多组值,从而一次性插入多行数据。
insert into table_name (column1, column2, column3, ...)
values (value1, value2, value3, ...),
(value1, value2, value3, ...),
(value1, value2, value3, ...);
示例:
insert into users (username, email, birthdate, is_active)
values ('test1', 'test1@runoob.com', '1985-07-10', true),
('test2', 'test2@runoob.com', '1988-11-25', false),
('test3', 'test3@runoob.com', '1993-05-03', true);
3. 使用 select 语句插入数据
3.1 插入查询结果
你可以使用 select 语句从其他表中选择数据并插入到目标表中。这对于数据迁移和归档非常有用。
insert into target_table (column1, column2, column3, ...) select column1, column2, column3, ... from source_table where condition;
示例:
假设我们有两个表 employees 和 senior_employees,我们想将 employees 表中年龄大于 30 的员工信息插入到 senior_employees 表中:
insert into senior_employees (id, name, age) select id, name, age from employees where age > 30;
4. 条件插入
4.1 使用 insert ignore
如果你希望在插入数据时忽略已经存在的记录(即不抛出错误),可以使用 insert ignore。
insert ignore into table_name (column1, column2, column3, ...) values (value1, value2, value3, ...);
示例:
insert ignore into users (username, email, birthdate, is_active)
values ('test', 'test@runoob.com', '1990-01-01', true);
4.2 使用 on duplicate key update
如果你希望在插入数据时遇到主键或唯一键冲突时更新现有记录,可以使用 on duplicate key update。
insert into table_name (column1, column2, column3, ...) values (value1, value2, value3, ...) on duplicate key update column1 = values(column1), column2 = values(column2), column3 = values(column3);
示例:
insert into users (id, username, email, birthdate, is_active) values (1, 'test', 'test@runoob.com', '1990-01-01', true) on duplicate key update username = values(username), email = values(email), birthdate = values(birthdate), is_active = values(is_active);
5. 使用 set 语法插入数据
5.1 插入部分列的值
你可以使用 set 语法来插入数据,这种方式更适用于需要明确指定列名和值的场景。
insert into table_name
set column1 = value1,
column2 = value2,
column3 = value3;
示例:
insert into users
set username = 'test',
email = 'test@runoob.com',
birthdate = '1990-01-01',
is_active = true;
6. 高级用法
6.1 使用 low_priority 修饰符
low_priority 修饰符会使 insert 语句延迟执行,直到没有其他客户端从表中读取数据。
insert low_priority into table_name (column1, column2, column3, ...) values (value1, value2, value3, ...);
6.2 使用 delayed 修饰符
delayed 修饰符适用于 myisam, memory 和 archive 表,使得 insert 语句立即返回,但实际插入操作可能稍后执行。
insert delayed into table_name (column1, column2, column3, ...) values (value1, value2, value3, ...);
注意事项
- 数据类型匹配:确保插入的数据类型与列定义一致,否则可能会导致错误。
- 唯一约束冲突:插入的数据如果违反了唯一约束,可以使用
insert ignore或on duplicate key update来处理。 - 性能优化:对于大量数据的插入,可以采用批量插入的方式,并适当调整 mysql 的配置参数,如
bulk_insert_buffer_size,以提高性能。
通过以上详细的介绍和示例,基本上能够熟练地使用 insert 语句在 mysql 中插入数据。无论是基础的单行插入,还是高级的插入否则更新和数据迁移。
到此这篇关于mysql 的 insert插入数据的方法的文章就介绍到这了,更多相关mysql insert插入数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论