序文最も一般的な方法は、フィールドに主キーまたは一意のインデックスを設定することです。重複データを挿入するとエラーがスローされ、プログラムが終了しますが、これは後続の処理に支障をきたします。そのため、挿入ステートメントには、例外をできるだけ回避または無視するための特別な処理が必要です。以下に簡単に紹介します。興味のある方は試してみてください。 デモンストレーションの便宜上、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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析
>>: メタタグのビューポートはデバイス画面のCSSを制御します
目次範囲グローバルスコープ関数のスコープもし、スイッチ、のために、その間ブロックスコープスコープチェ...
目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...
1. はじめにMySQL にログインすると、次のような警告が表示されることがよくあります。警告: コ...
序文私たちの日常の開発プロセスでは、ソートが頻繁に使用され、そのような要求がある場合もあります。たと...
Awk は、ソートを含む他の一般的なユーティリティによって実行できるいくつかのタスクを実行できる強...
requireJS には、baseURL というプロパティがあります。baseURL を設定すること...
目次パーサーとプリプロセッサクエリオプティマイザーMySQL クエリの最適化には、解析、前処理、最適...
*ページを作成する: 2つの入力ボックスとボタン*コードと手順/* 1. 入力行と列の値を取得する2...
各データベース内の各テーブルのサイズをカウントすることは、データ ガバナンスの最も単純な要件の 1 ...
目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...
Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...
いわゆるスライディングドアテクノロジーとは、さまざまな長さのテキストに合わせてボックスの背景を自動的...
目次再帰とは何ですか?また、どのように機能しますか? 1. 合計(1)デジタル加算(2)配列の和2....
2 台のテスト マシンを見つけます。 [root@docker1 centos_zabbix]# d...
序文前回の面接では、実行計画について質問されたとき、多くの人がそれが何なのか知りませんでした。実行計...