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 



  • 相关阅读:
    组合数据类型练习,英文词频统计实例
    条件、循环、函数定义等练习
    大数据应用实例
    实验二-模拟在CPU中的优先级调度
    实验二——模拟在CPU中的进程调度(改稿)
    实验二——模拟在CPU中的进程调度(初稿)
    回答前文问题
    13.14.15.16.17&《一个程序猿的生命周期》读后感
    10,11,12读书有感
    读书三章8,9,10
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4487553.html
Copyright © 2011-2022 走看看