MySQL实现数据插入当不存在时则添加mysql不存在则添加

向MySQL插入数据时,注意不要插入重复的数据。
只需使用唯一键或主键。

例如,如果有一个Users表,则创建该表如下: SQL 创建表用户( ID INT(1 1 ) 零自动递增, 用户名 VARCHAR(5 0) NOT NULL, 电子邮件 VARCHAR(5 0) NOT NULL, 主键(id), 唯一关键电子邮件(电子邮件) ) engine=InnoDB default charset=utf8 ;
这里ID是自增主键,email是唯一的。

照常输入数据: SQL INSERT INTO user(username, email) VALUES ('Tom', 'tom@example.com');
如果电子邮件已存在,则会报告错误。

只需使用插入忽略即可。
不管有没有错误,插入: SQL INSERT INTO USER (用户名, 电子邮件) VALUES ('tom', 'tom@example.com') IGNORE;
电子邮件已存在,不执行任何操作。

如果您想更新现有记录,请使用 ON DUPLICATE KEY UPDATE: SQL INSERT INTO DUPLICATE KEY USER(用户名,电子邮件) VALUES('tom','tom@example.com') UPDATE username=value(用户名);
电子邮件已存在,请将用户名更新为新值。

或者先检查是否有: SQL SELECT count() FROM user WHERE email='tom@example.com';
如果 count 为 0,则表示没有这样的电子邮件,然后插入: SQL INSERT INTO user(username, email) VALUES ('Tom', 'tom@example.com');
这样做的缺点是要检查两次,速度很慢。

简而言之,使用UNIQUE或PRIMARY KEY来保证唯一性,然后使用INSERT IGNORE或ON DUPLICATE KEY UPDATE。
仔细检查后会很慢,所以要小心。

mysql如何向表中添加数据 insert插入数据的多种写法

基本INSERT:插入一列,简单直接,如INSERT INTO user(name) VALUES('Alice')。
多行INSERT:提高效率,减少语句,如INSERT INTO user(name,age) VALUES('Bob', 3 0), ('Charlie', 2 8 )。
LOADDATA:导入大文件,例如 LOAD DATA LOCAL INFILE '/tmp/users.csv' INTO TABLE user fields TERMINATED BY ',' LINES TERMINATED BY '\n'(姓名、年龄、电子邮件)。
返回ID:MySQL8 .0+,直接返回自增ID,如INSERT INTO user(name, email) VALUES('Dave', 'dave@example.com') RETURNING id。
处理重复键:更新数据,如 INSERT INTO user(id, name, email) VALUES(1 , 'Eve', 'eve@example.com') ON DUPLICATE KEY UPDATE name=VALUES(name), email=VALUES(email)。
事务批量:保证原子性,如START TRANSACTION;插入订单(user_id, Product_id) VALUES(1 , 1 01 ), (2 , 1 02 );做;。
推荐选择:单行使用basic,多行使用basic,多行使用LOADDATA,使用LAST_INSERT_ID()返回ID,使用UPDATE KEY ON DUPLICATE重复键和高效的批量事务。