纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

MySQL插入和批量语句 MySQL中几种插入和批量语句实例详解

胖先森   2021-09-13 我要评论
想了解MySQL中几种插入和批量语句实例详解的相关内容吗胖先森在本文为您仔细讲解MySQL插入和批量语句的相关知识和一些Code实例欢迎阅读和指正我们先划重点:mysql批量insert语句,mysql批量执行sql语句,mysql,insert语句下面大家一起来学习吧

前言

最常见的方式就是为字段设置主键或唯一索引当插入重复数据时抛出错误程序终止但这会给后续处理带来麻烦因此需要对插入语句做特殊处理尽量避开或忽略异常下面我简单介绍一下感兴趣的朋友可以尝试一下:

这里为了方便演示我新建了一个user测试表主要有idusernamesexaddress这4个字段其中主键为id(自增)同时对username字段设置了唯一索引(idx_username)

1.insert ignore into

即插入数据时如果数据存在则忽略此次插入前提条件是插入的数据字段设置了主键或唯一索引测试SQL语句如下当插入本条数据时MySQL数据库会首先检索已有数据(也就是idx_username索引)如果存在则忽略本次插入如果不存在则正常插入数据:

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

2.on duplicate key update

即插入数据时如果数据存在则执行更新操作前提条件同上也是插入的数据字段设置了主键或唯一索引测试SQL语句如下当插入本条记录时MySQL数据库会首先检索已有数据(idx_username索引)如果存在则执行update更新操作如果不存在则直接插入:

INSERT IGNORE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')
on duplicate key update
SEX='boy',address='HongKong'

3.replace into

即插入数据时如果数据存在则删除再插入前提条件同上插入的数据字段需要设置主键或唯一索引测试SQL语句如下当插入本条记录时MySQL数据库会首先检索已有数据(idx_username索引)如果存在则先删除旧数据然后再插入如果不存在则直接插入:

REPLACE INTO user (username,sex,address) VALUES ('hanpang','boy','HongKong')

4.insert if not exists

即 insert into … select … where not exist ... 这种方式适合于插入的数据字段没有设置主键或唯一索引当插入一条数据时首先判断MySQL数据库中是否存在这条数据如果不存在则正常插入如果存在则忽略:

INSERT  INTO user (username,sex,address) 
SELECT 'hanpang','boy','HongKong' FROM user
WHERE NOT EXISTS (SELECT username FROM user WHERE username='hanpang')

5.批量插入数据

上述的插入语句是可以使用批量插入语句表数据结构:

CREATE TABLE example (
    example_id INT NOT NULL,
    name VARCHAR( 50 ) NOT NULL,
    value VARCHAR( 50 ) NOT NULL,
    other_value VARCHAR( 50 ) NOT NULL
)

个人习惯使用这种批量操作方式进行SQL语句拼接但是当你的字符串太长(百万数据)的时候需要你对mysql设置指令:

INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

实际开发中我们更加喜欢使用通过程序代码进行批量添加操作(使用事务提交批量插入数据库)使用上述的方式在插入测试数据或者其他低要求时比较合适速度确实快

6.批量更新

(1)replace into 批量更新(记得要有主键或者索引)

INSERT INTO example
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');

(2)insert into ...on duplicate key update批量更新

使用INSERT的时候 有表T(id,A,B,C,D)

插入的时候希望通过A,B索引唯一记录 有重复的时候更新C,D

INSERT INTO T(A,B,C,D) VALUES (a,b,c,d) ON DUPLICATE KEY UPDATE C=C+1D=d 

(3)使用mysql 自带的语句构建批量更新

UPDATE yoiurtable
	SET dingdan = CASE id 
		WHEN 1 THEN 3 
		WHEN 2 THEN 4
		WHEN 3 THEN 5 
		END
WHERE id IN (1,2,3)

(4)创建临时表先更新临时表然后从临时表中update

create temporary table tmp(id int(4) primary key,dr varchar(50));
insert into tmp values  (0,'gone'), (1,'xx'),...(m,'yy');
update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

总结


相关文章

猜您喜欢

  • C语言内存函数 C语言的编程之美之内存函数

    想了解C语言的编程之美之内存函数的相关内容吗小码农UU在本文为您仔细讲解C语言内存函数的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C语言,C语言内存函数下面大家一起来学习吧..
  • Spring JdbcTemplate Spring框架的JdbcTemplate使用

    想了解Spring框架的JdbcTemplate使用的相关内容吗Hudie.在本文为您仔细讲解Spring JdbcTemplate的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Spring,JdbcTemplate下面大家一起来学习吧..

网友评论

Copyright 2020 www.sopisoft.net 【绿软下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式