MySQL中REPLACE INTO和INSERT INTO的区别分析
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。[separator]
所有列的值均取自在REPLACE语句中被指定的值。所有缺失的列被设置为各自的默认值,这和INSERT一样。您不能从当前行中引用值,也不能在新行中使用值。如果您使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
为了能够使用REPLACE,您必须同时拥有表的INSERT和DELETE权限。
REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。
受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。
如果您正在使用C API,则可以使用mysql_affected_rows()函数获得受影响的行数。
目前,您不能在一个子查询中,向一个表中更换,同时从同一个表中选择。
下文时算法的详细说明(此算法也用于LOAD DATA…REPLACE):
1. 尝试把新行插入到表中
2. 当因为对于主键或唯一关键字出现重复关键字错误而造成插入失败时:
a. 从表中删除含有重复关键字值的冲突行
b. 再次尝试把新行插入到表中
使用格式如下:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},…),(…),…
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, …
或:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT …

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









insertignore、insert、replace 命令がすでに存在するかどうかの違い 挿入エラーの例 Insertintonames(name,age)values("Xiao Ming", 23); insertignore は insertignoreintonames(name, age)values("Xiao Ming", 24); replace 置換して挿入 replaceintonames(name,age)values("Xiao Ming", 25); テーブル要件: PrimaryKey、または一意のインデックス結果: テーブル ID は自動的にインクリメントされます。テスト コードはテーブルを作成します。

MySQL は、データを処理および操作するためのさまざまな機能を提供する、一般的に使用されるリレーショナル データベース管理システムです。このうち、REPLACE関数は文字列の指定した部分を置き換える関数です。この記事では、MySQL で文字列を置換するための REPLACE 関数の使用方法を紹介し、コード例を通してその使用法を示します。まず、REPLACE 関数の構文を見てみましょう: REPLACE(str,search_str,replace_str)。

指定した位置に文字列を挿入するには、Java の StringBuilder.insert() 関数を使用します。StringBuilder は、可変文字列を処理するために使用される Java のクラスです。文字列を操作するためのさまざまなメソッドが提供されます。insert() 関数は、文字列を次の位置に挿入するために使用されます。指定された位置. 文字列を位置的に挿入する一般的な方法の 1 つ。この記事では、insert()関数を使用して指定した位置に文字列を挿入する方法と、対応するコード例を紹介します。入れる()

Python での文字列検索と置換のテクニックは何ですか? (具体的なコード例) Python では文字列が一般的なデータ型であり、日常のプログラミングでは文字列の検索や置換操作によく遭遇します。この記事では、一般的な文字列の検索と置換のテクニックを、具体的なコード例とともに紹介します。文字列内の特定の部分文字列を検索するには、文字列の find() メソッドまたは Index() メソッドを使用できます。 find() メソッドは、文字列内で最初に出現した部分文字列のインデックスを返します。

今日の Web 開発時代では、特にデータ量の多い Web アプリケーションを扱う場合、効果的かつ効率的なテーブル管理が非常に重要になっています。テーブルの行を動的に追加、編集、削除できる機能により、ユーザー エクスペリエンスが大幅に向上し、アプリケーションがよりインタラクティブになります。これを達成する効果的な方法は、jQuery の機能を活用することです。 jQuery は、開発者が操作を実行するのに役立つ多くの機能を提供します。テーブルの行 テーブルの行は、相互に関連するデータのコレクションであり、HTML の要素で表されます。これは、テーブル内のセル (要素で表される) をグループ化するために使用されます。各要素はテーブル内の行を定義するために使用され、複数属性テーブルの場合、通常は 1 つ以上の要素が含まれます。構文$(セレクター).append(co

Insert ステートメントの基本構文は、「INSERT INTO テーブル名 (列 1、列 2、列 3、...)、VALUES (値 1、値 2、値 3、...);」、「テーブル名」です。挿入されるデータテーブルの名前。「列 1」、「列 2」、「列 3」などは、データが挿入されるテーブルの列の名前です。「値 1」、「 「値 2」、「値 3」などは、挿入される列の名前です。データ値。

Java では、StringBuilder クラスの insert() メソッドを使用して、指定した場所に文字列を挿入します。Java では、既存の文字列を挿入する必要がある場合、StringBuilder クラスの insert() メソッドを使用できます。 StringBuilder は、文字列を変更および操作するための一連のメソッドを提供する可変文字シーケンスです。 insert() メソッドを使用すると、元の文字列の指定した位置に文字列を挿入できます。

Java では、StringBuilder クラスの replace() メソッドを使用して、文字列内のコンテンツの一部を置き換えます。Java プログラミングでは、文字列は非常に重要なデータ型であり、多くの場合、文字列を処理して操作する必要があります。また、ニーズを満たすために文字列の一部を置き換える必要がある場合もあります。 Java では、StringBuilder クラスの replace() メソッドを使用して文字列置換操作を実装できます。 StringBuilder は、
