MySQL 高级语句:冲突处理、表操作与数据导入导出
在日常数据库操作中,除了基础的增删改查,还会遇到主键冲突处理、表备份、数据迁移等场景。MySQL 提供了一系列高级语句来简化这些操作,本文详细解析常用高级语句的用法与场景。
主键 / 唯一键冲突处理语句
当插入数据时遇到主键(PRIMARY KEY)或唯一键(UNIQUE)冲突,MySQL 提供了三种处理方式,避免直接报错。
1. INSERT IGNORE INTO:冲突时忽略插入
- 作用:若插入的数据与现有主键 / 唯一键冲突,则忽略当前插入操作(不报错,也不修改数据)。
- 适用场景:希望保留旧数据,跳过重复插入的场景(如批量导入时去重)。
示例:
1 | -- 表结构(id为主键) |
2. INSERT ... ON DUPLICATE KEY UPDATE:冲突时更新
- 作用:若插入冲突,则执行
UPDATE语句更新指定字段(保留旧数据的部分字段,更新其他字段)。 - 适用场景:需要用新数据更新旧数据的场景(如用户信息更新)。
示例: