1.INSERT INTO

  最常用简单的插入语句,可以有以下两种用法

  1>  INSERT INTO tb_user(id, name, age) VALUES (100022, 'Tom', 25); // 只给指定的列赋值

  2>  INSERT INTO tb_user VALUES (100022, 'Tom', 25);  // 必须 给所有列赋值

  注: INTO关键字可以省略

2. INSERT INTO  ... SELECT

  可以将查询结果插入表中

  insert into t2same(name,age) select name, age from t2;

  insert into t2same select id, name, age from t2;

  注:1> 查询不能包含一个ORDER BY子句

    2> INSERT语句的目的表不能出现在SELECT查询部分的FROM子句

3. INSERT IGNORE INTO

  当插入数据时,如出现错误时(如重复数据)将不返回错误,只以警告形式返回。通常这也是我们使用IGNORE的目的,避免插入重复数据。

但是当有SQL语句语法错误时也不返回错误,所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。

  重复数据的判断依据:主键列相同或者唯一索引列相同。

  例: 

CREATE TABLE tb_user (
id int(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
id_no VARCHAR(20) NOT NULL UNIQUE,
age int(3)
)
INSERT INTO tb_user VALUES(1, 'Tom', 25);
-- 下方两句既不会插入数据也不会报错
INSERT IGNORE INTO tb_user VALUES(1, 'Lucy', 18);
INSERT IGNORE INTO tb_user VALUES(2, 'Tom', 18);

4. REPLACE INTO

  表示插入替换数据,目的表中有Primary Key,或者UNIQUE索引,如果表中已经存在数据,则用新数据替换,如果没有数据则效果同INSERT INTO.

  在表中已存在和要插入相同数据时,REPLACE INTO 和 INSERT IGNORE INTO 二者作用正好相反。

5. ON DUPLICATE KEY UPDATE

  当PRIMARY或者UNIQUE重复时,则执行UPDATE语句,在原有记录基础上,更新指定字段内容,其它字段内容保留。如UPDATE后为无用语句,如id=id,则同3功能相同。

  例如,为了实现name重复的数据插入不报错,可使用一下语句:

  INSERT INTO tb_user (name) VALUES ('Tom') ON DUPLICATE KEY UPDATE id = id

MySQL插入语句解析的更多相关文章

  1. mysql 插入语句

    mysql 插入语句 什么时候用单引号,什么时候不用? 1.先创建一个表 create table user(username varchar(255),age int,marry boolean,b ...

  2. Springboot接口简单实现生成MySQL插入语句

    Springboot接口简单实现调用接口生成MySQL插入语句 在实际测试中,有这样一个需求场景,比如:在性能压力测试中,可能需要我们事先插入数据库中一些相关联的数据. 我们在实际测试中,遇到问题,需 ...

  3. mysql select语句解析

    select语句用于从一个或多个数据表选出特定行.特定列的交集 最简单的select语句的语法格式如下: select column1,column2 ........      (列) from 数 ...

  4. Mysql join语句解析

    1. 右连接(right join, right outer join) 解释:以右表(Sys_Employee)为准,而左表(Sys_Department)中的记录只有当其DepartmentId在 ...

  5. Mysql插入语句.txt

    INSERT INTO 目标表 SELECT * FROM 来源表;比如要将 articles 表插入到 newArticles 表中,则是:INSERT INTO newArticles SELEC ...

  6. Android之网络编程利用PHP操作MySql插入数据(四)

    因为最近在更新我的项目,就想着把自己在项目中用到的一些的简单的与网络交互的方法总结一下,所以最近Android网络编程方面的博文会比较多一些,我尽量以最简单的方法给大家分享,让大家明白易懂.如果有什么 ...

  7. Java 实现对Sql语句解析

    原文地址:http://www.cnblogs.com/zcftech/archive/2013/06/10/3131286.html 最近要实现一个简易的数据库系统,除了要考虑如何高效的存储和访问数 ...

  8. mysql 数据库插入语句之insert into,replace into ,insert ignore

    近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下. ①关于insert into : insert into table_name values(); insert into t ...

  9. mysql批量插入语句执行失败的话,是部分失败还是全部失败

    项目开发中,正好遇到这个问题. 将一批从外部第三方接口获取到的数据存储到本地mysql数据库,假设接口返回的数据类型为A,经过A到B的转换规则转换后, 要插入数据库的数据类型为B.那么在A获取到100 ...

随机推荐

  1. Cesium原理篇:4Web Workers剖析

    JavaScript是单线程的,又是异步的,而最新的HTML5中,通过Web Workers可以在JS中支持多线程开发.这是几个意思?异步还是单线程,这怎么理解?Web Workers又是什么原理?实 ...

  2. 原创:跳坑指南——微信小程序真机预览跟本地不同的问题

    微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考:本地看不到数据,就先让本地能看到数据,再看本帖.... 1:本 ...

  3. unity3D-iOS工程整合爬过的坑~

    unity3D-iOS工程整合爬过的坑~ 好久好久没有写博了~ 最近换了一份有意思的新工作,也是当下最热门的新技术,AR技术.笔者之前一直是做iOS开发的,接触了一门全新的技术,兴奋了好久好久,笔者也 ...

  4. GO语言面向对象

    当初开发go语言的时候就是因为C++的特性太过于繁杂,从而使得很多C++的开发者因为C++的特性而头疼,go语言成功的精简了C++的特性,使其很简洁,很少的特性,却可以完成很多的事情. go语言中并没 ...

  5. [Q&A] 在证书存储区中找不到清单签名证书

    方案1:右击项目属性->签名->为 ClickOnce 清单签名,将勾掉的选项去掉. 方案2:在签名中创建一个新的签名. 方案3:记事本打开相应的 csproj 文件,调整节点值.< ...

  6. ASP.NET5,MVC 6,Beta 7与VS 2015 RTM的兼容问题

    温馨提示:本文杂而乱,最终不知所云. Visual Studio 2015 RTM已经于2015年7月20号正式发布,我也在第一时间下载安装了起来. 虽然在5月份就开始使用RC版本,但是还是很期待正式 ...

  7. poj1228--稳定凸包

    题目大意:给你一个凸包上的某些点(可能在凸包内),询问是否能确定这个凸包. 思路:先求出题目给出的点的凸包,看看在凸包的每条边内(不包括端点)有没有点,若有,则这条边是确定的,若没有,则这条边不确定, ...

  8. Cats(4)- 叠加Free程序运算结果,Stacking monadic result types

    在前面的几篇关于Free编程的讨论示范中我们均使用了基础类型的运算结果.但在实际应用中因为需要考虑运算中出现异常的情况,常常会需要到更高阶复杂的运算结果类型如Option.Xor等.因为Monad无法 ...

  9. java Byte[] to String(hex)

    1. 字节数组转换成16进制字符展示 2.代码 package com.goodfan; public class ByteArrayToString { private static char[] ...

  10. PHP基本语法和输出语句方式