近期才发现mysql的插入语句竟然有如此多的使用方法,这里拿来分享一下.

①关于insert into :

insert into table_name values();

insert into table_name (column) values ();

insert into table_name values(select (column) from table_name2);

这里的插入仅仅须要注意一点的就是:

假设发生主键冲突,(也就是插入的主键已经在表中存在时),系统报错.

②replace into :

replace into 跟 insert into 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 假设发现表中已经有此行数据(依据主键或者唯一索引推断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现反复的数据。

③insert ignore into

insert ignore into 与 insert into 的主要差别在于当发生主键冲突的时候,系统不会报错,直接跳过该条记录的插入.

感觉是不是非常有意思呢...

以下我们来做个实验.

create table test (

`id`  int(11) not null  auto_increment comment '主键',

`name` varchar(20) not null comment '姓名',

primary key (`id`)

)ENGINE=InnoDB DEFAULT CHARSET utf8 comment='測试表';

然后我们插入几条数据进去.

insert into test (name) values ('vein');

insert into test (name) values ('vein1');

insert into test (name) values ('vein2');

当运行以下这条语句时:

insert into test (id,name) values (1,'vein11');

系统会报错,说主键冲突.

假设运行以下的语句时:

insert ignore into test (id,name) values (1,'vein11');

系统不会报错,直接忽略.

replace into test(id,name) values(1,'vein11');

系统插入成功,而且改动表中记录为

1, vein11.

Edited by VeinQueen

mysql 数据库插入语句之insert into,replace into ,insert ignore的更多相关文章

  1. (转载)常用的Mysql数据库操作语句大全

    打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...

  2. MySQL 数据库SQL语句——高阶版本1

    MySQL 数据库SQL语句--高阶版本 实验准备,数据表配置 mysql -uroot -p show databases; create database train_ticket; use tr ...

  3. mysql数据库插入数据获取自增主键的三种方式(jdbc PreparedStatement方式、mybatis useGeneratedKeys方式、mybatis selectKey方式)

    通常来说对于mysql数据库插入数据获取主键的方法是采用selectKey的方式,特别是当你持久层使用mybatis框架的时候. 本文除此之外介绍其它两种获取主键的方式. 为了方便描述我们先建一张my ...

  4. 解决Python向MySQL数据库插入中文数据时出现乱码

    解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...

  5. Oracle、Db2、SqlServer、MySQL 数据库插入当前系统时间

    做易买网项目,由于对数据库插入系统时间不了解,常常遇到的问题: 1.java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配.原因:由于获取系统时间类型不对,应为sy ...

  6. MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx

    MySQL数据库插入数据出现ERROR 1526 (HY000): Table has no partition for value xxx工作的时候发现无法插入数据,报错:ERROR 1526 (H ...

  7. MySQL 数据库SQL语句——高阶版本2

    MySQL 数据库SQL语句--高阶版本2 实验准备 数据库表配置: mysql -uroot -p show databases; create database train_ticket; use ...

  8. 第二百八十七节,MySQL数据库-条件语句、循环语句、动态执行SQL语句

    MySQL数据库-条件语句.循环语句.动态执行SQL语句 1.if条件语句 delimiter \\ CREATE PROCEDURE proc_if () BEGIN ; THEN ; ELSEIF ...

  9. 160304-01、mysql数据库插入速度和读取速度的调整记录

    需求:由于项目变态,需要在一个比较短时间段急剧增加数据库记录(两三天内,由于0增加至5亿).在整个过程调优过程非常艰辛 思路: (1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data Fil ...

随机推荐

  1. 谈论json - json经常使用的功能

    json经常使用的功能有JSON.parse().JSON.stringify(),供json对象和字符串之间的相互转换. 1.JSON.parse() 将 JavaScript 对象符号 (JSON ...

  2. Google API快速生成QR二维码

    Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报 ...

  3. RH033读书笔记(14)-Lab 15 Switching Users and Setting a Umask

    Lab 15 Switching Users and Setting a Umask Goal: Become familiar with the use of several essential c ...

  4. 文章之间的基本总结:Activity生命周期

    孔子:温故而知新.它可以作为一个教师.<论语> 同样的学习技巧.对于技术文件或书籍的经典技术,期待再次看到它完全掌握,这基本上是不可能的,所以,我们常常回来几次,然后仔细研究,为了理解作者 ...

  5. 怎样用C#代码管理SharePoint解决方式

    怎样用C#代码管理SharePoint解决方式         本文我们将了解怎样用代码管理SharePoint解决方式.我们使用server端对象模型抽取解决方式.         SharePoi ...

  6. .net RPC框架选型(一)

    近期开始研究分布式架构,会涉及到一个最核心的组件:RPC(Remote Procedure Call Protocol).这个东西的稳定性与性能,直接决定了分布式架构系统的好坏.RPC技术,我们的产品 ...

  7. FlowLayoutPanel 内的控件怎么调换顺序?

    lowLayoutPanel1.Controls.SetChildIndex("flowLayoutPanel中的控件",顺序索引)

  8. 【转】tomcat 访问软连接文件夹下的网页出现404错误,description The requested resource (/xxx.html) is not available.

    在 tomcat/webapps/ROOT/ 下建立一个软连接文件ln -s /home/ubuntu/report report   再到report软连接目录里建立个 report.html通过浏 ...

  9. Mac下一个svn提交.a文件

    Mac在版本控制工具Versions非常方便.一些库有.a文件必须提交svn,commit它发现被忽略的,不能提交没有这个文件.然后通过设置.VEIW->SHOW IGNORED ITEMS选, ...

  10. table在 点击线条颜色

    效果图: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...