MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文

この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために共有します。詳しい紹介を見てみましょう。

主キーのないテーブルの設計は次のとおりです。

id 位置に 0 が複数ある場合: 主キーを設定して自動的にソートすると、0 は 1 から増加します。

id = 0 のデータを挿入すると、データは実際の行数から増加します。これは、0 から変更する場合とは異なります。

これで主キーに 0 がなくなりました。ID を 0 に変更しても、0 は変更されません。直接ソートされます。

id=0 の別のものを挿入し、以前と同様に行数に直接関連していることを確認します。

この 0 が変化するかどうかを確認するには、自動ソートを再度リセットします。まず自動ソートをキャンセルします。

自己ソートを追加すると、予想どおり、0 が 1 になりそうになり、エラー メッセージには主キーに重複した 1 があるため、自己ソートは許可されないと表示されました。

修正後、実際に動作し、0が1になり、

まとめ

これらは唯一のケースだと思います。署名のないケースも同じはずです。他に私が考慮していないことがあれば、メッセージを残してご意見をお聞かせください。私も知りたいです。それでは、私の要約と考えを書き留めます。

私にとって、データベース内の 0 は特別なものです。

制限を使用して指定した範囲のデータを表示する場合、テーブルは 0 から下へソートされます。ただし、データ行を挿入する場合は行数に関係します。このとき、1 から下へソートされます。主キー自己ソート制約を使用する前にテーブルに 0 があった場合、主キー自己ソート制約を設定した後、すべての 0 は行数に従ってソートされるのではなく、1 から上から下に直接ソートされます。テーブル内の主キーの番号を 0 に変更すると、直接ソートされ、正の数の前に配置されます。つまり、主キーの自己ソートにより、0 の存在が許可されます。では、既存の 0 を 1 から始まる昇順に変更する必要があるのはなぜでしょうか。主キーのセルフソートを追加する前に 0 が 1 つしかなかったとしても、主キーのセルフソートを追加した後は 1 になります。

最初は 0 から始まり、主キーの自己順序制約が追加されると、0 は 1、2、3、4 などになります。

先頭に0はありません。主キーの自己順序制約を追加します。主キーが0の新しく追加された行は、行数に応じて自動的に変更されます。これは新しく追加された行であり、挿入が使用されていることに注意してください。

先頭に 0 はありません。主キーの番号を 0 に変更すると、ソート後のテーブルにこの 0 が直接表示されます。

簡単に言えば、主キーの自己ランキング制約を追加した後は次のようになります。

主キーの値: 0 に変更されましたが、ソートのためだけに存在できます。

新しく追加された 0 は存在が許可されず、行番号に応じて変更する必要があります。

既存の 0 は存在できず、変更は 1 から始まり、段階的に増加する必要があります。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL 外部キー制約の一般的な操作の例 [表示、追加、変更、削除]
  • 外部キー制約を持つテーブルデータを削除する MySQL メソッドの紹介
  • MySQL におけるユニーク制約と NULL の詳細な説明
  • MySQL の外部キー制約の詳細な説明
  • MySQL は、テーブルの列や制約などを追加、変更、削除します。
  • mysqlはBitmap_Join_Indexesに制約とインデックスを作成します
  • MySQLの基本操作を詳しく解説(第2部)

<<:  VUE+CanvasはシンプルなGobangゲームの全プロセスを実現します

>>:  Linux システムの busybox に mkfs.vfat コマンドを移植する

推薦する

デジタルテーブル特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたデジタル時計エフェクトを紹介します。エフェクトは次のとお...

HTML のセルパディングとセルスペース属性を図で説明します

セル - 表の内容 セルの余白 (表の余白) (cellpadding) - セルの外側の距離を表し...

MySQL の pid とソケットの詳細な説明

目次1. pidファイルの紹介2.ソケットファイルの紹介要約:ソケット ファイル: Unix ドメイ...

Ubuntu 18.04 で apt-get ソースを変更する方法

apt-get を使用してインストールすると、非常に遅くなります。国内のソースを変更すると、この問題...

曇り空のアイコン効果を実現する純粋な CSS

効果効果は以下のとおりです​実装のアイデアbox-shadow プロパティを使用して、複数の灰色の円...

TypeScript とは何ですか?

目次1. JavaScriptの問題2. TypeScriptの利点3. TypeScriptの欠点...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

Docker を使用して Go Web アプリケーションをデプロイする方法

目次なぜ Docker が必要なのでしょうか? Docker デプロイメントの例コードの準備Dock...

進捗バー効果を実現するJavaScript

この記事では、プログレスバー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL インデックスのパフォーマンス最適化の問題に対する解決策

MySQL によって作成される最適化はインデックスを追加することですが、インデックスを追加しても目的...

コンテンツの位置をランダムにドラッグするHTMLを実装する2つの方法

テスト: Chrome v80.0.3987.122 は正常です方法は2つあります。通常のラベルの位...

Vue+element はローカル検索機能付きのドロップダウン メニューを実装します

必要:バックエンドは配列オブジェクトを返し、それがフロントエンドで配列に結合されます。配列は名前に従...

MySQLで日付を比較する方法の詳細な説明

データ型が datetime であるフィールド add_time を持つテーブル product が...

K3s 入門ガイド - Docker で K3s を実行するための詳細なチュートリアル

k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...