MySQL の挿入およびバッチ ステートメントのいくつかの例の詳細な説明

MySQL の挿入およびバッチ ステートメントのいくつかの例の詳細な説明

序文

最も一般的な方法は、フィールドに主キーまたは一意のインデックスを設定することです。重複データを挿入するとエラーがスローされ、プログラムが終了しますが、これは後続の処理に支障をきたします。そのため、挿入ステートメントには、例外をできるだけ回避または無視するための特別な処理が必要です。以下に簡単に紹介します。興味のある方は試してみてください。

デモンストレーションの便宜上、id、ユーザー名、性別、住所の 4 つのフィールドを持つ新しいユーザー テスト テーブルを作成しました。主キーは id (自動増分) で、ユーザー名フィールドには一意のインデックス (idx_username) が設定されています。

1.無視を挿入

つまり、データを挿入するときに、データが存在する場合、挿入は無視されます。前提条件は、挿入されるデータ フィールドに主キーまたは一意のインデックスが設定されていることです。テスト SQL ステートメントは次のとおりです。このデータを挿入するとき、MySQL データベースはまず既存のデータ (つまり、idx_username インデックス) を検索します。存在する場合、挿入は無視されます。存在しない場合、データは通常どおり挿入されます。

INSERT IGNORE INTO user (ユーザー名,性別,住所) VALUES ('hanpang','boy','HongKong') を挿入します

2. 重複キーの更新時

つまり、データを挿入するときに、データが存在する場合は更新操作が実行されます。前提条件は上記と同じで、挿入されたデータ フィールドにも主キーまたは一意のインデックスが設定されます。テスト SQL ステートメントは次のとおりです。このレコードを挿入すると、MySQL データベースはまず既存のデータ (idx_username インデックス) を取得します。存在する場合は更新操作が実行されます。存在しない場合は直接挿入されます。

INSERT IGNORE INTO user (ユーザー名,性別,住所) VALUES ('hanpang','boy','HongKong') を挿入します
重複キーの更新時
性別='男の子'、住所='香港'

3. を置き換える

つまり、データを挿入するときに、データが存在する場合はそれを削除してから挿入します。前提条件は上記と同じです。挿入されたデータ フィールドには、主キーまたは一意のインデックスを設定する必要があります。テスト SQL ステートメントは次のとおりです。このレコードを挿入すると、MySQL データベースはまず既存のデータ (idx_username インデックス) を取得します。存在する場合は、まず古いデータを削除してから挿入します。存在しない場合は、直接挿入します。

置換 INTO ユーザー (ユーザー名,性別,住所) 値 ('hanpang','boy','HongKong')

4.存在しない場合は挿入する

つまり、 insert into ... select ... where not existing ... です。この方法は、主キーまたは一意のインデックスを持たないデータ フィールドを挿入するのに適しています。データを挿入するときは、まずそのデータが MySQL データベースに存在するかどうかを判断します。存在しない場合は、通常どおり挿入します。存在する場合は無視します。

INSERT INTO ユーザ (ユーザ名、性別、住所) 
ユーザーから「hanpang」、「boy」、「HongKong」を選択
存在しない場所 (ユーザー名が 'hanpang' であるユーザーからユーザー名を選択)

5. データの一括挿入

上記の挿入ステートメントではバッチ挿入ステートメントを使用でき、テーブル データ構造は次のようになります。

CREATE TABLEの例(
    example_id INT NOT NULL、
    名前 VARCHAR( 50 ) NOT NULL,
    値 VARCHAR( 50 ) NOT NULL、
    その他の値 VARCHAR( 50 ) NOT NULL
)

私は、SQL ステートメントを連結するためにこのバッチ操作方法を使用することに慣れていますが、文字列が長すぎる場合 (数百万のデータ)、MySQL に指示を設定する必要があります。

INSERT INTO の例
価値観
(100, '名前 1', '値 1', 'その他 1'),
(101、「名前2」、「値2」、「その他2」)、
(102、「名前3」、「値3」、「その他3」)、
(103、「名前4」、「値4」、「その他4」);

実際の開発では、プログラム コードによるバッチ追加操作 (トランザクションの送信とデータベースへのバッチ挿入を使用) を使用することを好みます。上記の方法は、テスト データやその他の要件が低い挿入に適しており、速度も確かに高速です。

6. バッチ更新

(1)バッチ更新に置き換える(主キーまたはインデックスがあることを忘れないでください)

INSERT INTO の例
価値観
(100, '名前 1', '値 1', 'その他 1'),
(101、「名前2」、「値2」、「その他2」)、
(102、「名前3」、「値3」、「その他3」)、
(103、「名前4」、「値4」、「その他4」);

(2)重複キー更新時に...に挿入バッチ更新

INSERTを使用する場合、テーブルT(id、A、B、C、D)があります。

挿入するときは、A と B を使用して一意のレコードをインデックスし、重複がある場合は C と D を更新します。

T(A,B,C,D) に値 (a,b,c,d) を挿入し、重複キーを更新します。C=C+1、D=d 

(3)MySQLの組み込みステートメントを使用してバッチ更新を構築する

更新情報
	SET dingdan = CASE id 
		1のとき3 
		2のとき4
		3のとき5 
		終わり
id が (1,2,3) にある場合

(4)一時テーブルを作成し、まず一時テーブルを更新し、次に一時テーブルから更新する

一時テーブルtmp(id int(4) primary key,dr varchar(50))を作成します。
tmp に値 (0,'gone')、(1,'xx')、...(m,'yy') を挿入します。
test_tbl、tmp を更新します。test_tbl.dr=tmp.dr とし、test_tbl.id=tmp.id とします。

要約する

これで、MySQL のさまざまな挿入ステートメントと一括ステートメントに関するこの記事は終了です。MySQL の挿入ステートメントと一括ステートメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL に大量のデータを挿入する 4 つの方法の例
  • MYSQL バッチ挿入データ実装コード
  • MySQL でバッチ挿入を実装してパフォーマンスを最適化するチュートリアル
  • ユニークインデックスを使用したMySQLバッチ挿入を回避する方法
  • MySQL バッチデータ挿入スクリプト
  • MySQL バッチ SQL 挿入パフォーマンス最適化の詳細な説明
  • MySQL バッチ挿入とユニークインデックスの問題に対する解決策
  • MySQL に 1,000 万件のレコードを素早く挿入する方法

<<:  ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析

>>:  メタタグのビューポートはデバイス画面のCSSを制御します

推薦する

JavaScript の基礎: スコープ

目次範囲グローバルスコープ関数のスコープもし、スイッチ、のために、その間ブロックスコープスコープチェ...

Ember.js と Vue.js の詳細な比較

目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...

MySQL ログイン警告問題の解決策

1. はじめにMySQL にログインすると、次のような警告が表示されることがよくあります。警告: コ...

MySQL のソート関数 field() の詳細な例

序文私たちの日常の開発プロセスでは、ソートが頻繁に使用され、そのような要求がある場合もあります。たと...

テキスト ファイルの並べ替えに役立つ Awk コマンドラインまたはスクリプト (推奨)

Awk は、ソートを含む他の一般的なユーティリティによって実行できるいくつかのタスクを実行できる強...

HTML におけるベースタグの使用に関する詳細な説明

requireJS には、baseURL というプロパティがあります。baseURL を設定すること...

MySQLクエリ最適化プロセスを理解する

目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...

JavaScript を使用して動的に生成されるテーブルの詳細な説明

*ページを作成する: 2つの入力ボックスとボタン*コードと手順/* 1. 入力行と列の値を取得する2...

MySQL統計テーブルのサイズを説明する例

各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...

IDEA は Docker プラグインを使用します (初心者向けチュートリアル)

目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...

deepin 2014 システムに MySQL データベースをインストールする方法

Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...

スライドドアを実装するための CSS サンプルコード

いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...

古典的なJavaScriptの再帰ケースの質問の詳細な分析

目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....

Dockerはmacvlanをベースにホスト間コンテナ通信を実装する

2 台のテスト マシンを見つけます。 [root@docker1 centos_zabbix]# d...

MySQL実行計画の詳細な分析

序文前回の面接では、実行計画について質問されたとき、多くの人がそれが何なのか知りませんでした。実行計...