SQL语法——REPLACE语句

这篇具有很好参考价值的文章主要介绍了SQL语法——REPLACE语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

REPLACE

MySQL REPLACE语句是标准SQL的MySQL扩展。MySQL REPLACE语句的工作原理如下:

  1. 如果新行已不存在,则MySQL REPLACE 语句将插入新行。
  2. 如果新行已存在,则 REPLACE 语句首先删除旧行,然后插入新行。在某些情况下,REPLACE语句仅更新现有行。

注意:要确定表中是否已存在新行,MySQL使用PRIMARY KEY或UNIQUE KEY 索引。如果表没有这些索引之一,则REPLACE语句等同于INSERT语句。

示例

CREATE TABLE cities (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    population INT NOT NULL
); 

INSERT INTO cities(name,population)
VALUES('New York',8008278),
   ('Los Angeles',3694825),
   ('San Diego',1223405); 

SQL语法——REPLACE语句
使用REPLACE语句更新洛杉矶城市的人口3696820

REPLACE INTO cities(id, population)
VALUES(2,3696820);

SQL语法——REPLACE语句

REPLACE工作原理如下:

  1. REPLACE语句首先使用列表提供的信息将新行插入cities表中。插入失败,因为cities表中已存在id为2的行,因此,MySQL会引发重复键错误。
  2. 然后REPLACE语句将更新具有id列值中指定的键的行。在正常过程中,它将首先删除具有冲突ID的旧行,然后插入新行。

MySQL REPLACE和INSERT
REPLACE语句的第一种形式类似于INSERT语句,除了关键字INSERT被关键字替换REPLACE如下:

REPLACE INTO table_name(column_list)
VALUES(value_list); 

例如,如果要在cities表中插入新行

REPLACE INTO cities(name,population)
VALUES('Phoenix',1321523); 

SQL语法——REPLACE语句

注意:未出现在REPLACE语句中的列的默认值将插入到相应的列中。如果列具有NOT NULL属性且没有默认值,并且您未在REPLACE语句中指定值,则MySQL将引发错误。这是REPLACE和INSERT语句之间的区别。

REPLACE INTO cities(name)
VALUES('Houston'); 

SQL语法——REPLACE语句

MySQL REPLACE和UPDATE
第二种形式的 REPLACE 陈述类似于以下UPDATE陈述:

REPLACE INTO table
SET column1 = value1,
    column2 = value2; 

例如,如果要更新Phoenix城市的人口1768980,请使用以下REPLACE语句:

REPLACE INTO cities
SET id = 4,
    name = 'Phoenix',
    population = 1768980; 

SQL语法——REPLACE语句

注意:与UPDATE语句不同,如果未在SET子句中指定列的值,则REPLACE语句将使用列的默认值

MySQL REPLACE INTO和SELECT
第三种形式的 REPLACE 语句类似于INSERT INTO SELECT语句:

REPLACE INTO table_1(column_list)
SELECT column_list
FROM table_2
WHERE where_condition;

假设要复制id值为1的城市,请将REPLACE INTO SELECT语句用作以下查询:

REPLACE INTO cities(name,population)
SELECT name,population FROM cities 
WHERE id = 1; 

SQL语法——REPLACE语句

注意

  1. 如果开发的应用程序不仅支持MySQL数据库,还支持其他关系数据库管理系统(RDBMS),则应避免使用REPLACE语句,因为其他RDBMS可能不支持它。相反,您可以在事务中使用DELETE 和 INSERT语句的组合 。
  2. 如果使用的是REPLACE在具有TABLE语句触发器和重复键错误发生的删除,触发器将按照以下顺序被解雇:BEFORE INSERT BEFORE DELETE,AFTER DELETE,AFTER INSERT 万一REPLACE语句删除当前行并插入新行。如果REPLACE语句更新当前行,则会触发BEFORE UPDATE和AFTER UPDATE触发器。

sql文章来源地址https://www.toymoban.com/news/detail-405189.html

到了这里,关于SQL语法——REPLACE语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL语句通过腾讯云数据库智能管家的性能与语法优化

    最近公司项目迁移至腾讯云,用的腾讯云MySQL服务器,MySQL负载一直很高,借助云管家优化了一部分SQL语句,提升了部分性能和释放了部分,MySQL内存占用      

    2024年02月15日
    浏览(59)
  • [MySQL]SQL优化之sql语句优化

    🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 回顾: 📕索引分类: 📕索引失效: 📕设计原则: 📕SQL性能分析 二、SQL优化 语句优化 📕 insert语句: 📕 主键优化: 📕 order by优化: 📕 group by优化: 📕 limit 优化 📕 count 优化 📕 update 优化  📕索引分类: 一般分类:主

    2024年02月04日
    浏览(42)
  • SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

    SQL DELETE 语句用于删除表中的现有记录。 注意 :在删除表中的记录时要小心!请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句,将会删除表中的所有记录! 以下是示例中使用的 Customers 表的一部分: CustomerID CustomerName ContactName Address City Postal

    2024年02月05日
    浏览(81)
  • MySQL~SQL语句

    1.什么是SQL? Structured Query Language:结构化查询语言 每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL 数据库的 SQL 语句不区分大小写,建议使用大写 3 种注

    2024年02月15日
    浏览(42)
  • mysql(二)SQL语句

    目录 一、SQL语句类型 二、数据库操作  三、数据类型  四、创建  五、查看  六、更改  七、增、删、改、查  八、查询数据 SQL语句类型:     DDL         DDL(Data Definition Language,数据定义语言):用于定义数据库中的各种对象,包括数据库、表、视图、触发器等,常

    2024年02月16日
    浏览(52)
  • mysql--sql常用语句

    通过profile命令来查看当前最主要的耗费时间的步骤。 mysql select state,sum(duration) as total_r , round(100*sum(duration)/(select sum(duration) from information_schema.profiling where query_id=6),2) as pct_r,count(*) as calls,sum(duration)/count(*) as \\\'R/Call\\\' from information_schema.profiling where query_id group by 

    2024年04月17日
    浏览(53)
  • MySQL- sql语句基础

    报错:You can’t specify target table ‘Person’ for update in FROM clause 原因:mysql不能在同一语句中先select出同一表中的某些值,然后对这个表做修改 错误写法 解决方法:添加临时表 正确写法 我们可以使用函数 GROUP_CONCAT() 将多行中的多个值组合成一个字符串。下面显示了 GROUP_CONC

    2024年02月12日
    浏览(37)
  • MySQL sql语句

    用户管理: 1、新建用户: CREATE USER name IDENTIFIED BY \\\'ssapdrow\\\'; 2、更改密码: SET PASSWORD FOR name=PASSWORD(\\\'fdddfd\\\'); 3、权限管理 SHOW GRANTS FOR name;    //查看name用户权限 GRANT SELECT ON db_name.* TO name; //给name用户db_name数据库的所有权限 REVOKE SELECT ON db_name.* TO name; //GRANT的反操作,去除权限

    2023年04月15日
    浏览(47)
  • [MySQL]不允许你不会SQL语句之查询语句

    🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集! 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长,值得我们全力奔赴更美好的生活✨ ------------------❤️分割线❤️------------------------- —————————

    2024年02月08日
    浏览(88)
  • [MySQL]不就是SQL语句

      本期主要的学习目标是SQl语句中的DDL和DML实现对数据库的操作和增删改功能,学习完本章节之后需要对SQL语句手到擒来。 SQL (Structured Query Language)是一种用于管理 关系型数据库 的编程语言。它允许用户在数据库中存储、修改和检索数据,并与关系型数据库进行交互。S

    2024年02月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包