以下内容是引用
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数据库管理中,处理重复数据是一项常见的任务,特别是在关系型数据库中,数据的一致性和唯一性至关重要。本文主要探讨了在MySQL中如何查找并删除重复行,这对于维护数据库的整洁性和提高查询效率有着重要的...
这不仅有助于简化数据库管理,还可以在插入新记录时自动防止数据重复。例如,"username"列通常需要唯一索引,因为每个用户都应该有唯一的用户名。如同普通索引,唯一索引也是基于B树实现,其查询效率同样为O(log n)...
基本的SQL操作包括SELECT(查询数据)、INSERT(插入数据)、UPDATE(更新数据)和DELETE(删除数据)。例如,`SELECT * FROM table_name`将返回表中的所有数据。 在进行查询时,我们经常需要使用WHERE子句来过滤...
- 删除记录并重启MySQL后,插入新记录的ID将是18,因为自增ID不会回退。 7. CHAR_LENGTH与LENGTH的区别: - CHAR_LENGTH计算字符数,不考虑字符编码。 - LENGTH计算字节数,受字符编码影响,例如在Unicode中会有...
MySQL 面试题知识点总结 在数据库领域中,MySQL 是一...本文总结了一些常见的 MySQL 面试题和解决方案,包括创建表、插入数据、查询数据、解决连接数问题、解决锁定问题、部署服务器、防止重复投票和删除重复记录等。
复合索引适用于多条件查询,而唯一索引可以避免重复数据,提高数据一致性。 3. **查询优化**:避免在WHERE子句中使用不等运算符和函数,这可能导致无法使用索引。尽量减少子查询,利用JOIN操作替代,优化SQL语句...
- **限制数据类型**:指定列的数据类型。 - **检查约束**:确保列满足特定条件。 - **外键约束**:确保一个表中的数据与其他表中的数据保持一致。 - **默认值**:如果没有指定值,则使用默认值。 - **非空约束**:...
连接成功后,可以执行SQL语句,如创建表、插入数据、查询数据等。 5. **表单提交与验证** 在HTML页面上创建一个表单,包含用户名和留言内容的输入框,以及一个提交按钮。使用PHP处理表单提交,对用户输入进行验证...
2. **确保数据唯一性:**创建唯一索引可以防止重复数据的插入,保持数据的唯一性。 3. **加速表连接:**在进行表与表之间的连接时,索引可以提高连接速度。 4. **优化排序和分组:**在进行排序和分组操作时,索引...
数据库备份是防止数据丢失的重要步骤,MySQL提供了mysqldump工具进行备份。恢复则涉及LOAD DATA INFILE、RESTORE TABLE等命令,理解如何进行增量备份和差异备份也是必要的。 10. **性能优化**: 通过EXPLAIN分析...
主键索引是唯一且非空的,而普通索引允许重复值。`EXPLAIN`命令可用于分析查询的执行计划,查看是否有效地利用了索引。 4. **事务处理**:MySQL支持ACID(原子性、一致性、隔离性和持久性)特性,保证了数据的可靠...
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. **...
这些约束在数据插入、更新或删除时自动执行,防止违反预定义的完整性规则。 7. **触发器**:这是一种特殊的数据库对象,可以在数据修改(INSERT、UPDATE或DELETE)时自动执行。触发器可以用来强制执行更复杂的业务...
学习SQL是掌握MySQL的关键,包括SELECT语句(查询数据)、INSERT(插入数据)、UPDATE(更新数据)和DELETE(删除数据)等基本操作。 二、安装与配置 在使用MySQL之前,你需要安装MySQL服务器,并进行必要的配置,...
2. **后端验证**:PHP接收前端数据后,再次验证,防止SQL注入等安全问题,并处理注册时的唯一性冲突(如用户名重复)。 3. **密码处理**:密码通常需要在客户端进行哈希加密,然后在服务器端存储加密后的值。登录时...
这有助于防止重复数据的插入。 ### 12. 提交事务 - **COMMIT**:提交当前事务,使所有更改永久保存在数据库中。例如,`COMMIT;` 会提交当前事务。 ### 13. 查找非空值 - **WHERE ... IS NOT NULL**:用于筛选出某...
18. **使用唯一索引**:避免重复数据,提高查询效率。 19. **定期清理无用数据**:删除不再需要的记录,以保持数据库整洁,减少无谓的查询。 20. **使用合适的数据复制策略**:主从复制可以提高可用性和读取性能,...
8. **事务隔离级别**:MySQL支持四种隔离级别:READ UNCOMMITTED(读未提交)、READ COMMITTED(读已提交,防止脏读)、REPEATABLE READ(可重读,防止不可重复读)、SERIALIZABLE(串行化,防止幻读)。 9. **ENUM...
- INSERT INTO:向表中插入新的数据记录。 - UPDATE:更新已存在的数据记录。 - DELETE FROM:删除表中的数据记录。 - CREATE DATABASE:创建新的数据库。 - CREATE TABLE:创建新的表结构。 - ALTER TABLE:...