Mysql の主キーと一意キーの違いのまとめ

Mysql の主キーと一意キーの違いのまとめ

主キーとは何ですか?

主キーは、テーブル内の各タプル (行) を一意に識別するテーブル内の列です。主キーはテーブルに整合性制約を適用します。テーブル内で許可される主キーは 1 つだけです。主キーは重複値や null 値を受け入れません。テーブル内の主キーの値はほとんど変更されないため、主キーを選択する際には注意し、ほとんど変更されないものを選択する必要があります。あるテーブルの主キーは、別のテーブルの外部キーによって参照できます。

主キーをよりよく理解するために、roll_number、name、batch、phone_number、citizen_id などの属性を持つ Student というテーブルを作成しましょう。

上記の例では、各大学に在籍する学生には固有の Roll_number があるため、roll_number 属性が同じ NULL 値を持つことは決してありません。したがって、2 人の学生が同じ Roll_number を持つことはできず、テーブル内の各行は学生の roll_number 属性によって一意に識別できます。したがって、この場合は、Roll_number 属性を主キーとして設定できます。

ユニークキーとは何ですか?

一意キー制約は、リレーションまたはテーブル内の単一のタプルを一意に識別します。主キーとは異なり、テーブルには複数の一意のキーを設定できます。一意キー制約は、列に対して 1 つの NULL 値のみを受け入れることができます。一意制約は、別のテーブルの外部キーによっても参照されます。主キーではない列および列のグループに一意の制約を適用する場合に使用できます。

一意のキーをよりよく理解するために、Roll_number、Name、Batch、Phone_number、Citizen_ID 属性を持つ Student テーブルを使用します。Roll_number 属性には主キーが指定されています。

この例では、国のすべての国民が固有の識別番号を持つ必要があるため、Citizen_ID 列の各エントリは一意で重複しない必要があるという一意の制約を Citizen_ID に割り当てることができます。ただし、学生が別の国から移住した場合、その学生には Citizen_ID がなく、一意の制約で NULL が 1 つ許可されるため、エントリには NULL 値が含まれる可能性があります。

主キーと一意キーの主な違い:

1. 属性が主キーとして宣言されている場合、NULL 値は受け入れられません。一方、プロパティが Unique として宣言されている場合は、 NULL 値を受け入れることができます。

2. テーブルには主キーを 1 つしか設定できませんが、一意のキーは複数設定できます。

3. 主キーを定義するときにクラスター化インデックスを自動的に作成します。対照的に、一意キーは非クラスター化インデックスを生成します。

以上がMysqlの主キーとユニークキーの違いについての説明です。123WORDPRESS.COMをご利用いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL の自動増分主キーが使い果たされた場合の対処方法
  • MySQL の自動増分 ID (主キー) が不足した場合の解決策
  • MySQL が uuid または snowflake id を主キーとして使用することを推奨しない理由の詳細な分析
  • MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明
  • Prometheus を使用して、MySQL の自動増分主キーの残りの使用可能パーセンテージをカウントします。
  • Python3はMySQLを操作してデータを挿入し、主キーIDの例を返します
  • MySQL の非主キー自己増分使用例の分析
  • MySQL で主キーと ROWID を使用する際の落とし穴の概要
  • Spring Boot は、MySQL を使用して主キー UUID を実装するために、mybatis を統合します。
  • MySQL主キー命名戦略関連

<<:  vue-router 履歴モード サーバー側設定プロセス記録

>>:  LinuxにPHP7をインストールする方法の詳細な説明

推薦する

WeChatミニプログラムでトークンの有効期限を処理する方法

目次まず結論から質問解決Promiseを使用してコールバック関数をカプセル化する要約するまず結論から...

Vueのv-onパラメータの問題についてお話しましょう

Vue での v-on:clock の使用現在、vue.js フレームワークを学習しています。後で参...

CSS ですべての子要素を選択し、スタイルを追加する方法

方法:実際のプロジェクトを例に挙げてみましょう。 .lk-ツールバー{ .el-入力{ 幅: 169...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

nginx ip ブラックリストの動的禁止の例

ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...

Nginx で Angular プロジェクトを展開する際の落とし穴

コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...

JavaScript の組み込み Date オブジェクトの詳細な説明

目次日付オブジェクト日付オブジェクトの作成新しい日付()日付を取得する()取得日()月を取得する()...

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

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

Centos7にnginxをインストールする方法

必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...

Nginx ソースコード調査における nginx 電流制限モジュールの詳細な説明

目次1. 電流制限アルゴリズム2. nginxの基礎知識4. 実戦要約する高並行性システムには、キャ...

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

FTP環境設定ソリューション(vsftpd)の詳細な説明

1. vsftpdコンポーネントをインストールするインストールコマンド: [root@ink4t ~...

Vue3.xはコンポーネント通信にmitt.jsを使用します

目次クイックスタート使い方基本原則Vue2.x はコンポーネント通信に EventBus を使用しま...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...