zoukankan      html  css  js  c++  java
  • Mysql 语句 insert into 与 replace into 区别

    【】insert into 与 replace into 区别

    replace into 的运行与insert into 很相似。不同点:

    若表中的一个旧记录与一个用于PRIMARY KEY 或 一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。

    尤其注意:

    除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE INTO 语句没有意义。

    因为没有索引被用于确定是否新行复制了其它行。

    实例如下:

    (1)创建表

    -- [1]drop
    DROP TABLE `students`;
    
    -- [2]create
    CREATE TABLE `students` (
      `id` INT AUTO_INCREMENT PRIMARY KEY,
      `sName` VARCHAR (10) NOT NULL,
      `sAge` INT (2) UNSIGNED ZEROFILL NOT NULL,
      `sAddr` VARCHAR (20) DEFAULT NULL,
      `sGrade` INT (2) DEFAULT NULL,
      `sStuId` INT (8) DEFAULT NULL,
      `sSex` INT (1) UNSIGNED DEFAULT NULL
    ) ENGINE = INNODB;

    (2)插入insert into

    SQL语句:

    INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex) 
    VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0);

    执行结果:

    查询数据:

    (3)插入replace into

    SQL语句:

    REPLACE INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex) 
    VALUES (1, 'suntao', 9, 'weinan', 3, 1803110, 1);

    执行结果:

    注意:共2行受影响,一行被删除,一行被添加。同时具有delete、insert操作。

    查询数据:

    (4)insert into on duplicate key update

    SQL语句:

    INSERT INTO students(id, sName, sAge, sAddr, sGrade, sStuId, sSex) 
    VALUES (1, 'wangchao', 8, 'heyang', 1, 1801111, 0)
    ON DUPLICATE KEY UPDATE 
    sName = 'wangchao',
    sAge = 8,
    sAddr = 'heyang',
    sGrade = 1,
    sStuId = 1801111,
    sSex = 0;

    执行结果:

    注意:共2行受影响,原来行被删除,新的一行被添加。但是主键值id为1保持不变。

    查询数据:

    Good Good Study,Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    linux 命令——19 find (转)
    linux 命令——18 locate (转)
    linux 命令——17 whereis(转)
    linux 命令——16 which(转)
    linux 命令——15 tail (转)
    linux 命令——14 head (转)
    Java for LeetCode 038 Count and Say
    Java for LeetCode 037 Sudoku Solver
    Java for LeetCode 036 Valid Sudoku
    Java for LeetCode 035 Search Insert Position
  • 原文地址:https://www.cnblogs.com/Braveliu/p/9877884.html
Copyright © 2011-2022 走看看