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 



  • 相关阅读:
    代码:城市名称的联想下拉框。可按拼音搜索、按汉字搜索,是一种很简单的实现方式
    代码:拖拽
    插件:zTree
    代码:遍历
    学习笔记:Stage.js(又叫Cut.js)——2D canvas 开发库,游戏方面的
    前端模块化、构建工具
    二级联动下拉菜单
    thinkphp的目录结构设计经验总结
    tp 路径表示
    liunx 根目录介绍
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4487553.html
Copyright © 2011-2022 走看看