普通的 INSERT INTO 插入:
1
2
3
|
INSERT INTO card(cardno, cardnum) VALUES ( '1111' , '100' );
INSERT INTO card(cardno, cardnum) VALUES ( '2222' , '200' );
... |
对于普通的 INSERT 插入,如果想要保证不插入重复记录,我们只有对某个字段创建唯一约束实现(比如:cardno卡号不能重复);
那有没有不创建唯一约束,仅通过 INSERT INTO 一条语句实现的方案呢?
答案:有的, INSERT INTO IF EXISTS 具体语法如下:
1
|
INSERT INTO table (field1, field2, fieldn) SELECT 'field1' , 'field2' , 'fieldn' FROM DUAL WHERE NOT EXISTS( SELECT field FROM table WHERE field = ?)
|
其中的 DUAL 是一个临时表,不需要物理创建,这么用即可。
针对上面的card示例的改造如下:
1
2
|
INSERT INTO card(cardno, cardnum) SELECT '111' , '100' FROM DUAL WHERE NOT EXISTS( SELECT cardno FROM card WHERE cardno = '111' );
INSERT INTO card(cardno, cardnum) SELECT '222' , '200' FROM DUAL WHERE NOT EXISTS( SELECT cardno FROM card WHERE cardno = '222' );
|
搞定!
相关推荐
MySQL设置独写分离,在代码中按照如下写法,可能会出现问题 ...补充知识:MySQL INSERT插入条件判断:如果不存在则插入 我们经常需要进行sql的批量插入,要求:该条记录不存在则插入,存在则不插入。如果使用一条IN
在MySQL数据库中,如果你需要执行一个操作,即当数据存在时进行更新,如果不存在则进行插入,你可以使用`INSERT INTO...ON DUPLICATE KEY UPDATE`语句。这个功能强大的语句结合了`INSERT`和`UPDATE`操作,允许你在...
当向表中插入新记录时,如果该记录的ID字段未指定值,则系统会自动分配一个唯一的递增ID。 - **MyISAM与InnoDB的区别**: - **MyISAM**:使用独立于数据行的文件来存储自动增长的ID值。这意味着即使在MySQL服务...
可以插入前进行判断要插入的数据是否存在业务代码如下 : INSERT INTO t_topic_vistor(user_id,topic_code) SELECT '218', 'XQ33019920170811142528217' FROM DUAL WHERE NOT EXISTS(SELECT * FROM t_topic_vistor ...
综上所述,利用MyBatis结合MySQL实现批量插入不仅可以大幅提高数据处理效率,还能有效降低系统资源消耗,是数据库操作中不可或缺的一项技能。通过上述详细讲解,相信读者已经对如何实现批量插入有了清晰的理解。
监控大型 MySQL 插入/导入的进度 介绍 如果您曾经导入过大型 mysql 表,您就会知道等待是多么令人沮丧。 这个小型 bash 脚本允许您跟踪大型 mysql 插入/导入的进度(以 % 为单位)。 用法 ./track-progress.sh ...
在MySQL数据库中,INSERT语句是用于向表中插入新数据的基本操作。本文将分享三个关于MySQL INSERT操作的小技巧,帮助你更高效地处理数据。 ### 技巧1:从其他表中插入数据 当你需要将一个表中的部分数据复制到另一...
MySQL的Insert锁机制是数据库管理系统中确保数据一致性和并发控制的重要组成部分。在MySQL的InnoDB存储引擎中,插入操作不仅涉及到行级锁,还可能涉及Gap锁和Next-Key Locks,这些锁机制的设计是为了防止幻读...
### 一、MySQL 查询与插入操作的基础概念 #### 1. 查询语句(SELECT) 查询语句是用于从数据库中检索数据的一种方式。基本语法如下: ``` SELECT column1, column2, ... FROM table_name; ``` 在本案例中,查询...
mysql合并插入性能测试测试数据Mysql合并插入可以带来*10的吞吐提升,而事务提交没有明显的收益。下面是在一台普通MYSQL机型下的TPS实测数据:[root@10-9-136-206 mysql-bulk-insert]# ...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
在Python3中操作MySQL数据库并插入一条数据,然后获取并返回这条数据的主键id是数据库编程中常见的需求。这一过程可以分为几个关键步骤:数据库连接、执行插入操作、获取主键id以及事务提交。下面详细说明每个步骤...
MySQL 数据库提供了一种高效的方法来处理“如果数据不存在,则插入新数据,否则更新”的场景,这主要通过 `INSERT ... ON DUPLICATE KEY UPDATE` 语句实现。此语句允许我们在尝试插入数据时,如果遇到主键或唯一键...
如果不存在,则执行插入操作。 ##### 示例 2:向权限表插入组权限数据 ```sql INSERT INTO permission (type, obj_id, value) SELECT 101, id, 7 FROM groups WHERE NOT EXISTS ( SELECT * FROM permission ...
- 尽管这不在文档中直接提及,但提升磁盘I/O性能对于提高MySQL插入速度同样重要。这包括优化文件系统、使用更快的磁盘或者使用SSD等措施。 9. 使用第三方工具监控和管理: - 使用如Unix的top、Windows的任务管理...
在index.jsp页面输入数据,提交到mysql——insert.jsp页面进行插入数据库的操作。 index.jsp页面代码如下: 代码如下: <%@ page language=”java” pageEncoding=”utf-8″%> <%@ page contentType=”...
在MySQL中,有时候我们需要在确保记录不存在的情况下插入新数据,如果记录已经存在,则需要更新已有数据。这种操作通常被称为“Upsert”或者“Insert...On Duplicate Key Update”。MySQL提供了这样的功能,但要注意...
4. 利用MySQL的INSERT INTO...VALUES语法的多行插入:这是一种更高效的批量插入方式,允许在一个INSERT语句中插入多行数据。例如,`INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, ...
如果尝试插入的记录中`ID`字段与已有记录相同,MySQL会识别出这是一个重复的值,并且在`IGNORE`关键字的作用下,不执行插入操作,从而避免了错误的发生。 创建表的结构可能是这样的: ```sql CREATE TABLE `my_...