目次
要件の背景
これは簡単ではないと考える友人もいるかもしれません。 たった5つのデータだけど、こんな感じでできるんじゃないの?
UPDATE
UPDATE
#ORDER BY
次の SQL
UPDATE であっても
ホームページ データベース mysql チュートリアル MySQL での UPDATE の使用法の詳細を詳しく調べる

MySQL での UPDATE の使用法の詳細を詳しく調べる

Oct 11, 2022 pm 07:32 PM
mysql update

MySQL では、UPDATE ステートメントを使用して 1 つ以上のテーブルのデータを変更および更新できます。次の記事は、MySQL での UPDATE の使用方法の詳細を調べるのに役立ちます。

MySQL での UPDATE の使用法の詳細を詳しく調べる

要件の背景

最近、古いシステムのデータを新しいシステムに移行するためのデータ移行要件を受けました。旧システムでは移行できませんでした。業務データを再度追加し、新システムで業務を実行します。

移行による影響を軽減するため、データを一括で移行します。新しいシステムは一定期間並行して実行されます。

データは分割されます。バッチは ID 範囲に従って分割されません。つまり、データの各バッチの ID は不規則です。

さらに, 新旧システムのデータの対応を確実にするため、新システムのIDはできる限り旧システムのIDを使用します。古いシステムと新しいシステムでは、移行中に、次のように古いシステムの ID が新しいシステムで占有される可能性があります。

#要件の説明

データを移行するときは、できる限り古いシステムの ID を使用し、競合する ID はバッチで調整する必要があります。

このバッチを調整する方法ID の競合## はまさに私が今達成したいことです# 私の実装では、ビジネス データの増加と現在の新しいシステムの最大 ID に基づいて ID を事前に設定します。開始 ID

この

SQL はどうやって書くのでしょうか?

要件の実現

これは簡単ではないと考える友人もいるかもしれません。 たった5つのデータだけど、こんな感じでできるんじゃないの?

すごくシンプルだけど、伏線がたくさんあって、先生、やり方を知っていますか?

投稿者は突然気づきました: 友人、あなたはとても素晴らしいです

しかし、競合するデータが多数 (数百または数千) ある場合、あなたも一つ一つ変えるの?

あなたが本当にこれを行うなら、私はあなたを本当に尊敬します

もちろん、もっと賢明な友人がいるでしょう

MySQL での UPDATE の使用法の詳細を詳しく調べる それで、私は何をすべきでしょうか?達成?

投稿者はあまり面倒なことはしたくありません。これを実現するには、ローカル変数

UPDATE

を使用し、SQL ## に直接アクセスします。 # 実際のケースを見てみましょう

テーブル tbl_batch_update

# データは次のとおりです。次のように

実行効果は次のとおりです

## アップデート後

## もっと厳密に

それを達成するにはどうすればよいでしょうか?

UPDATE

ORDER

BY もサポートしますか? 以下に示すように、実際にサポートされています。

元の投稿者は通常 UPDATE を使用しますが、それを ORDER BY と組み合わせることはほとんどありません。 LIMIT

と組み合わせたこの試みにより、作成者は UPDATE に慣れていないように感じました。完全な構文はどのようなものになるでしょうか?ゆっくり読んでいきましょう

UPDATE

以下はすべて MySQL 8.0 の公式ドキュメントに基づいています。 UPDATE ステートメント がコンパイルされているため、公式ドキュメントに直接アクセスすることをお勧めします

単一テーブル構文

たくさんの質問がありますか:

##複数のテーブルの構文

##単一テーブル構文と比較すると、Table は単純に見えますが、

ORDER BY および LIMIT

をサポートしていません。 LOW_PRIORITY

UPDATE の修飾子の 1 つで、SQL の優先度を下げるために使用されます。

LOW_PRIORITY

その後、UPDATE の実行は、他のクライアントがテーブルからデータを読み取らなくなるまで遅延されます ただし、テーブル レベルのみです。ロック ストレージ エンジンは

LOW_PRIORITY

のみをサポートします。テーブル レベルのロックのストレージ エンジンには、MyISAMMEMORYMERGE が含まれます。一般的に使用される InnoDB はサポートされていません # 使用シナリオはほとんどありませんが、見慣れたものだけです

#IGNORE

UPDATE

の修飾子の 1 つで、SQL が実行中にエラーを処理する方法を宣言するために使用されます IGNORE が使用されない場合、

UPDATE 実行中にエラーが発生した場合は、以下に示すように中止されます

9002

更新

9003 が生成されると、主キーが競合し、UPDATE 全体が中止され、9000 が更新されます。成功した 9001 はロールバックされます、9003 ~ 9005 はまだ更新されていません。 IGNORE を使用するとどうなりますか?

UPDATE

実行中にエラーが発生しても実行は完了し、影響を受ける行数は最終的にはゼロになります。戻ってきた###

上記で返された影響を受ける行は 2 です。どの 2 つの行が変更されたのか教えていただけますか?

IGNORE の詳細については、次を参照してください。 IGNORE がステートメントの実行に及ぼす影響

使用シナリオ、新旧システム間の並列処理について, データ移行を行うときに使用される可能性があります。主キーまたは一意キーが競合する場合は、

UDPATE に興味がある場合は、

#ORDER BY

を無視してください。 実行プロセスを理解すると理解しやすくなります

UPDATE 実際には 2 つのステージがあります: Check stage更新ステージ

行ごとに処理し、行が

WHERE 句を満たす場合、行を更新します

したがって、ここでの

ORDER BY は、SELECT# の ORDER BY## と同じです。 同じ効果です # 使用シナリオに関しては、前述した需要の背景に戻って確認できます。

IGNORE

ケース 1 実際には、ORDER BY

LIMIT## を使用することもできます。

#LIMIT row_count

句は行一致の制限です。

WHERE 句を満たす row_count 行が見つかると、行が実際に変更されたかどうかに関係なく、ステートメントは すぐに停止します。つまり、 LIMIT

Check フェーズ に限定されており、Update フェーズ

とは何の関係もありません。

##: # の構文には LIMIT との違いがあることに注意してください。 ##SELECT

値 DEFAULT

##UPDATE

SET 句の value は式です。この DEFAULT# が何を意味するのか理解できます。 ## 平均? まずはそのような問題を見てみましょう。列が NOT NULL

と宣言されているが、この列を

# に更新するとします。 ##NULL 何が起こるか##​​#

SQL_MODE を見て、SELECT @@sql_mode; を実行して結果を取得しましょう

STRICT_TRANS_TABLES は、INSERT および UPDATE## に対して厳密モードが有効であることを示します。 # ステートメント value 制御がより厳密になります # 厳密モードをオフにして実行結果を見てみると

#name

フィールド宣言

NOT NULL になります。非厳密 SQL モードでは、name を次のように設定します。 NULL は成功しましたが、変更された値は NULL ではなく、タイプ VARCHAR# のデフォルト値です。 ## : 空の文字列 ('') 概要

1. 厳密な SQL モードでは、 NOT

NULL フィールド設定が NULL の場合、エラーが直接報告され、更新は失敗します。 2. 非 厳密 SQL モードで、NOT

NULL のフィールド設定が NULL の場合、フィールド値はフィールド タイプに設定されます。対応するデフォルト値 フィールド タイプのデフォルト値については、以下を表示できます。 データ タイプのデフォルト値

sql_mode

では、以下を表示できます: サーバー SQL モード

通常、生成環境 MySQL は通常、厳密モードであるため、このモードがあることを誰もが知っていれば十分です

value

DEFAULT SET フィールドの順序

次の SQL

#誰もが非常に明確だと思います

ただし、次の SQL

## の

name

列の値はどうなりますか?

# 結果を見てみましょう

name

の値は少し異なりますか?期待される?

単一テーブル

UPDATE

SET は左から右に実行されますが、複数のテーブル UPDATE ただし、複数のテーブル UPDATE が特定の順序で処理されるとは限りません。概要 1.

UPDATE であっても

DELETE であっても、最初に確認してから処理するというプロセスがあります。見つかった各行

2. 構文 LOW_PRIORITYUPDATE はほとんど使用されず、IGNORE は時々使用され、ORDER BYLIMIT はより頻繁に使用され、どれも見慣れたものです

3. sql_mode の方が重要です 知識ポイントは誰でもマスターすることをお勧めします。運用環境では、厳密モードをオンにすることを強くお勧めします。

元のアドレス: https://www.cnblogs.com/youzhibing/p/16719474.html

著者: Qingshi Lu

[関連する推奨事項: mysql ビデオ チュートリアル ]

以上がMySQL での UPDATE の使用法の詳細を詳しく調べるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

phpmyadminを開く方法 phpmyadminを開く方法 Apr 10, 2025 pm 10:51 PM

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLおよびSQL:開発者にとって不可欠なスキル MySQLおよびSQL:開発者にとって不可欠なスキル Apr 10, 2025 am 09:30 AM

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

Navicatは、データベースエラーコードとソリューションに接続します Navicatは、データベースエラーコードとソリューションに接続します Apr 08, 2025 pm 11:06 PM

データベースに接続するときの一般的なエラーとソリューション:ユーザー名またはパスワード(エラー1045)ファイアウォールブロック接続(エラー2003)接続タイムアウト(エラー10060)ソケット接続を使用できません(エラー1042)SSL接続エラー(エラー10055)接続の試みが多すぎると、ホストがブロックされます(エラー1129)データベースは存在しません(エラー1049)

See all articles