zoukankan      html  css  js  c++  java
  • mysql 数据库插入语句之insert into,replace into ,insert ignore

    近期才发现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 



  • 相关阅读:
    使用Apworks开发基于CQRS架构的应用程序(六):创建.NET WCF服务
    Microsoft NLayerApp案例理论与实践 项目简介与环境搭建
    使用Apworks开发基于CQRS架构的应用程序(七):配置数据库
    测试一下亚马逊联盟
    Revit参数族之DMD系列静电水处理器
    Revit参数族之ZP系列消声器
    第一个Ruby程序:Hello world!
    百度文库下载器冰点下载
    sketchup ruby编程之绘制梯段
    加西亚马尔克斯枯枝败叶
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4487553.html
Copyright © 2011-2022 走看看