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を制御します

推薦する

Dockerfile をベースに Zabbix 監視システムのコード例を作成する

forループを使用してZabbixイメージをコンテナにインポートします。 n を `ls *.tar...

CSS3の3D効果を使って立方体を作成する

CSS3 の 3D 効果を使用して立方体を作成する方法を学ぶと、3D シーンの回転と変位のプロパティ...

MySQL 文字列分割の例 (区切り文字なしの文字列抽出)

区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...

CentOS 7 はネットワークカードを変更した後、インターネットにアクセスできません

不明なドメイン名 www.baidu.com を Ping するホストのIPアドレスを変更する右クリ...

CentOS 7 での Nginx ログタイミング分割の実装手順の詳細説明

1. 分割スクリプト (splitNginxLog.sh) を作成します。 * この例では、ログ分割...

Linux に起動方法を追加する (サービス/スクリプト)

システムの起動時に読み込む必要がある設定ファイル/etc/profile、/root/.bash_p...

ByteDance インタビュー: JS を使用して Ajax 同時リクエスト制御を実装する方法

序文正直に言うと、最近とても混乱していると感じています。テクノロジーと人生について。また、将来の発展...

Docker マイクロサービス用の ETCD クラスターの構築に関する詳細なチュートリアル

目次etcdの機能etcdが独自の高可用性クラスタを構築するには、主に3つの形式があります。今回構築...

HTML コマンドラインインターフェースの実装

HTML部分コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

ウェブページでグレーまたはブラックモードを実現するための CSS3 フィルターコード

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

Docker で Confluence をデプロイするための完全な手順

Confluence は有料ですが、クラックして使用できます (購入が推奨され、正規版がサポートされ...

トークン生成と検証を実装するミニプログラム

目次プロセスデモミニプログラムバックエンドインターフェースプロセス各リクエストインターフェースは検証...

マークアップ言語 -

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)

1. 問題Docker コンテナのログにより、ホストのディスク領域がいっぱいになりました。 doc...

MySQLカスタム関数とストアドプロシージャの詳細な説明

序文この記事では主にMySQLのカスタム関数とストアドプロシージャに関する関連コンテンツを紹介し、皆...