mysql若不存在则插入写法

最开始想到的办法是先SELECT * FROM table WHERE f1=‘d1‘,然后判断之后插入

优化方法 * 可以改为随便一个数字 比如1,然后因为f1不是唯一字段,所以最后在家LIMIT 1

后来听说可以用NOT EXIST来判断,当然了不能直接用INSERT INTO … NOT EXIST (SELECT * FROM table WHERE f1=‘d1‘)这样写,参考下面:

INSERT INTO `table` (value1, value2)
    SELECT ‘stuff for value1‘, ‘stuff for value2‘ FROM DUAL
    WHERE NOT EXISTS (SELECT * FROM `table` WHERE value1=‘stuff for value1‘ AND value2=‘stuff for value2‘)

因为EXIST只判断存在不存在,用*还是什么以及LIMIT 1,MYSQL都会无视的,直接按最佳优化执行的。

再后来才知道INSERT IGNORE INTO代替INSERT INTO

时间: 2024-11-09 00:30:02

mysql若不存在则插入写法的相关文章

mySQL教程 第5章 插入 更新与删除数据

第5章 插入 更新与删除数据 使用SQL Manager管理工具连接到schoolDB.由于三张表都设置了主键,因此,以下练习中插入的记录,主键不能重. 插入数据 1. 练习:为表的所有字段插入数据 为表中所有字段插入数据,可以不用指定列 其中的into可以省去 insert into TStudent values ('00008','白安','男','132302197604044565','19760404', '[email protected]','JAVA','20120803')

Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据

Title:Linux C 调用MYSQL API 函数mysql_escape_string()转义插入数据 --2013-10-11 11:57 #include <stdio.h> #include <string.h> #include <stdlib.h> #include "mysql.h" int main(int argc, char *argv[]) { MYSQL my_connection; int res; mysql_ini

MYSQL开发性能研究&mdash;&mdash;批量插入的优化措施

一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1);   很显然,在MYSQL中,这样的方式也是可行的.但是当我们需要批量插入数据的时候,这样的语句却会出现性能问题.例如说,如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真的插入工作. 正是由于性能的瓶颈问题,MYSQL官方文档也就提到了使

MySQL数据库表的数据插入、修改、删除操作及实例应用

1.MySQL数据库表的数据插入.修改.删除操作SQL语法格式: 1 CREATE DATABASE db0504; 2 3 USE db0504; 4 5 CREATE TABLE student ( 6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY, 7 sname VARCHAR (20) NOT NULL, 8 ssex enum ('男', '女') NOT NULL DEFAULT '男', 9 sbirth date, 10 sclass

MySQL 记录不存在时插入 记录存在则更新的实现方法

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; INSERT 中 ON DUPLICATE KEY UPDATE的使用  如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE.例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:mysql> INSERT INTO ta

MySQL 大数据量快速插入方法和语句优化

MySQL大数据量快速插入方法和语句优化是本文我们主要要介绍的内容,接下来我们就来一一介绍,希望能够让您有所收获! INSERT语句的速度 插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例: 连接:(3) 发送查询给服务器:(2) 分析查询:(2) 插入记录:(1x记录大小) 插入索引:(1x索引) 关闭:(1) 这不考虑打开表的初始开销,每个并发运行的查询打开. 表的大小以logN (B树)的速度减慢索引的插入. 加快插入的一些方法 如果同时从同一个客户端插入很多行,使用含多个VA

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

mysql下通过shell脚本插入数据

一.创建数据库及表 建立数据库 create database dic character set utf8; 建表 CREATE TABLE `dic` (   `id` int(22) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',   `principal` varchar(213) CHARACTER SET utf8 NOT NULL COMMENT '负责人',   `use` varchar(222) CHARACTER SET utf

mysql 以数组的形式插入更新表

在项目中用php+mysql,需要插入数据,但是数据库表字段又很长,如果用常规的insert into table (c) values ('dd')的话,将是很长的sql语句,而且一不小心,就弄错了. 所以一般都用数组来操作,好多框架都有专门的功能,例如thinkphp的表映射,可用 $result= $model->add($post) //$post为和表字段对应的数组 但是原生的怎么做,下面是我总结的,虽然看似繁琐了一点,但绝对比原来有效率:代码如下: <?php //a,b,c,d为