目录MySQL 的 INSERT(插入数据)详解
1. 插入单行数据
1.1 指定列名和值1.2 省略列名
2. 插入多行数据
2.1 使用多个 VALUES 子句3. 使用 SELECT 语句插入数据3.1 插入查询结果
4. 条件插入
4.1 使用 INSERT IGNORE 4.2 使用 ON DUPLICATE KEY UPDATE 5. 使用 SET 语法插入数据5.1 插入部分列的值
6. 高级用法
6.1 使用 LOW_PRIORITY 修饰符6.2 使用 DELAYED 修饰符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插入数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:MySQL关联表插入数据方式(insert into select语法) Mysql插入数据方式(insert into 、replace into解析) mysql使用insert into select插入查出的数据MySQL插入数据insert ignore语法重复数据自动忽略MySQL表操作插入数据insert语句学习(小白入门篇)
mysql插入数据INSERT INTO SET的优势mysql 数据插入优化方法之concurrent_insert Mysql使用insert插入多条记录 批量新增数据
