`
LiYunpeng
  • 浏览: 952238 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

MySQL防止重复插入唯一限制的数据

阅读更多
以下内容是引用
http://www.2cto.com/database/201108/99073.html

逐一分析
1.insert ignore into
当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:
INSERT IGNORE INTO books (name) VALUES ('MySQL Manual')
这种方法很简便,但是有一种可能,就是加入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~

2.on duplicate key update
当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但错误不会被忽略掉。例如,为了实现name重复的数据插入不报错,可使用一下语句:
INSERT INTO books (name) VALUES ('MySQL Manual') ON duplicate KEY UPDATE id = id
这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束。

3.insert … select … where not exist
根据select的条件判断是否插入,可以不光通过primary 和unique来判断,也可通过其它条件。例如:
INSERT INTO books (name) SELECT 'MySQL Manual' FROM dual WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)
这种方法貌似写这很繁琐~

4.replace into
如果存在primary or unique相同的记录,则先删除掉。再插入新记录。
REPLACE INTO books SELECT 1, 'MySQL Manual' FROM books
这种方法就是不管原来有没有相同的记录,都会先删除掉然后再插入

4种方法各有利弊,根据自己情况而定
分享到:
评论

相关推荐

    谈MySQL中重复行的查找删除.pdf

    在MySQL数据库管理中,处理重复数据是一项常见的任务,特别是在关系型数据库中,数据的一致性和唯一性至关重要。本文主要探讨了在MySQL中如何查找并删除重复行,这对于维护数据库的整洁性和提高查询效率有着重要的...

    mysql下普通索引和唯一索引的效率对比

    这不仅有助于简化数据库管理,还可以在插入新记录时自动防止数据重复。例如,"username"列通常需要唯一索引,因为每个用户都应该有唯一的用户名。如同普通索引,唯一索引也是基于B树实现,其查询效率同样为O(log n)...

    MySQL必备知识手册

    基本的SQL操作包括SELECT(查询数据)、INSERT(插入数据)、UPDATE(更新数据)和DELETE(删除数据)。例如,`SELECT * FROM table_name`将返回表中的所有数据。 在进行查询时,我们经常需要使用WHERE子句来过滤...

    MySQL面试题(含答案).pdf

    - 删除记录并重启MySQL后,插入新记录的ID将是18,因为自增ID不会回退。 7. CHAR_LENGTH与LENGTH的区别: - CHAR_LENGTH计算字符数,不考虑字符编码。 - LENGTH计算字节数,受字符编码影响,例如在Unicode中会有...

    mysql笔试题

    MySQL 面试题知识点总结 在数据库领域中,MySQL 是一...本文总结了一些常见的 MySQL 面试题和解决方案,包括创建表、插入数据、查询数据、解决连接数问题、解决锁定问题、部署服务器、防止重复投票和删除重复记录等。

    MySQL大表性能优化方案 和 MySQL高性能表设计规范

    复合索引适用于多条件查询,而唯一索引可以避免重复数据,提高数据一致性。 3. **查询优化**:避免在WHERE子句中使用不等运算符和函数,这可能导致无法使用索引。尽量减少子查询,利用JOIN操作替代,优化SQL语句...

    MYSQL数据库操作入门教程

    - **限制数据类型**:指定列的数据类型。 - **检查约束**:确保列满足特定条件。 - **外键约束**:确保一个表中的数据与其他表中的数据保持一致。 - **默认值**:如果没有指定值,则使用默认值。 - **非空约束**:...

    php+MySQL一个简单的留言板

    连接成功后,可以执行SQL语句,如创建表、插入数据、查询数据等。 5. **表单提交与验证** 在HTML页面上创建一个表单,包含用户名和留言内容的输入框,以及一个提交按钮。使用PHP处理表单提交,对用户输入进行验证...

    mysql作业第2天,mysql-day02.rar

    数据库备份是防止数据丢失的重要步骤,MySQL提供了mysqldump工具进行备份。恢复则涉及LOAD DATA INFILE、RESTORE TABLE等命令,理解如何进行增量备份和差异备份也是必要的。 10. **性能优化**: 通过EXPLAIN分析...

    mysql markdon 笔记

    主键索引是唯一且非空的,而普通索引允许重复值。`EXPLAIN`命令可用于分析查询的执行计划,查看是否有效地利用了索引。 4. **事务处理**:MySQL支持ACID(原子性、一致性、隔离性和持久性)特性,保证了数据的可靠...

    常用的mysql命令

    16. **创建索引**:`ALTER TABLE table1 ADD INDEX ind_id (id)`或`CREATE INDEX ind_id ON table1 (id)`可以为表创建索引,`CREATE UNIQUE INDEX ind_id ON table1 (id)`创建唯一性索引,防止重复数据。 17. **...

    SQL数据完整性

    这些约束在数据插入、更新或删除时自动执行,防止违反预定义的完整性规则。 7. **触发器**:这是一种特殊的数据库对象,可以在数据修改(INSERT、UPDATE或DELETE)时自动执行。触发器可以用来强制执行更复杂的业务...

    MySQL从入门到精通.rar

    学习SQL是掌握MySQL的关键,包括SELECT语句(查询数据)、INSERT(插入数据)、UPDATE(更新数据)和DELETE(删除数据)等基本操作。 二、安装与配置 在使用MySQL之前,你需要安装MySQL服务器,并进行必要的配置,...

    php+mysql+js的登陆注册代码

    2. **后端验证**:PHP接收前端数据后,再次验证,防止SQL注入等安全问题,并处理注册时的唯一性冲突(如用户名重复)。 3. **密码处理**:密码通常需要在客户端进行哈希加密,然后在服务器端存储加密后的值。登录时...

    MySQL数据库笔试试题及答案(全)

    这有助于防止重复数据的插入。 ### 12. 提交事务 - **COMMIT**:提交当前事务,使所有更改永久保存在数据库中。例如,`COMMIT;` 会提交当前事务。 ### 13. 查找非空值 - **WHERE ... IS NOT NULL**:用于筛选出某...

    MySQL性能优化的21个最佳实践.zip

    18. **使用唯一索引**:避免重复数据,提高查询效率。 19. **定期清理无用数据**:删除不再需要的记录,以保持数据库整洁,减少无谓的查询。 20. **使用合适的数据复制策略**:主从复制可以提高可用性和读取性能,...

    常见MySQL面试题汇总

    8. **事务隔离级别**:MySQL支持四种隔离级别:READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交,防止脏读)、REPEATABLE READ(可重读,防止不可重复读)、SERIALIZABLE(串行化,防止幻读)。 9. **ENUM...

    关于MySQL的学习.zip

    - INSERT INTO:向表中插入新的数据记录。 - UPDATE:更新已存在的数据记录。 - DELETE FROM:删除表中的数据记录。 - CREATE DATABASE:创建新的数据库。 - CREATE TABLE:创建新的表结构。 - ALTER TABLE:...

Global site tag (gtag.js) - Google Analytics