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

推薦する

CentOS 8 仮想マシンから Windows 10 ホスト フォルダーにアクセスする方法の簡単な分析

VMware Toolsをインストールすると、仮想マシンホスト間で①テキストをコピーして貼り付けるこ...

ドメイン名を指定されたポートに転送するようにNginxを設定する方法

/usr/local/nginx/conf と入力する sudo cd /usr/local/ngi...

MySQL、Oracle、SQL Server のページングクエリ例の分析

最近、Oracle、MySQL、SQL Server 2005 のデータ ページング クエリについて...

MySQL でのトランザクションの使用方法

基礎トランザクションは、SQL ステートメントのグループに対するアトミック操作です。つまり、グループ...

jQueryは記事の折りたたみと展開の機能を実装します

この記事の例では、記事の折りたたみと展開の機能を実現するためのjQueryの具体的なコードを参考まで...

MySQL 8.0.16 winx64 のインストールと設定方法のグラフィックチュートリアル

最近、データベースについて学び始めました。最初にやったことは、データベースとは何か、データベースとデ...

Vue3 ベースのフルスクリーン ドラッグ アップロード コンポーネント

この記事は主に、みんなで共有できるVue3ベースのフルスクリーンドラッグアップロードコンポーネントを...

HTMLページをクリックしてダウンロードファイルを実装する2つの方法

1. <a>タグを使用して完了します <a href="/user/te...

開発者にとって必須の Docker コマンドの概要

目次Docker入門Docker環境のインストールDockerイメージの共通コマンド検索ミラー画像を...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

Reactでコンポーネントロジックを共有する3つの方法

簡単に説明すると、これら 3 つの方法は、レンダリング プロップ、高階コンポーネント、カスタム フッ...

Winにmysqlをインストールする詳細な手順

この記事では、参考までにWinにmysqlをインストールする詳細な手順を紹介します。具体的な内容は次...

JavaScript での && および || 演算子の使用例

目次序文&& 演算子|| 演算子|| 演算子の簡単なデモ章の目的ケース演習(json...

CSS を使用して画像の色を変更する 100 の方法 (収集する価値あり)

序文「画像処理というと、PhotoShop などの画像処理ツールを思い浮かべることが多いです。フロン...

MySQLのロックについて理解しておくべきこと

1. はじめにMySQL ロックは、その範囲に応じて、グローバル ロック、テーブル ロック、行ロック...