MySQL 制約の種類と例

MySQL 制約の種類と例

制約

  • 制約によりデータの整合性と一貫性が確保される
  • 制約はテーブルレベルの制約と列レベルの制約に分けられます
  • 制約タイプには、NOT NULL (空でない制約)、PRIMARY KEY (主キー制約)、UNIQUE KEY (一意制約)、DEFAULT (デフォルト制約)、FOREIGN (外部キー制約) などがあります。

1. 主キー制約

  • 主キー
  • 各データテーブルには主キーを1つだけ設定できます
  • 主キーはレコードの一意性を保証し、主キーの値は重複しません。
  • 主キーは自動的にNOT NULLになります

たとえば、学生テーブルを作成し、学生番号を主キーとして設定します。テーブルを作成したら、SHWO COLUMNS FROM studentでテーブル構造を表示します。

学生テーブルを作成(
id int 主キー、
stu_name varchar(20)
);

2. ユニーク制約

  • ユニークキー
  • ユニーク制約はレコードのユニーク性を保証することができる
  • 一意制約フィールドにはヌル値(NULL)を設定できます。
  • 各データテーブルには複数の一意の制約を設定できます

たとえば、自動インクリメントの id フィールドと一意の tea_name フィールドを持つ teacher テーブルを作成します。

教師テーブルの作成(
id int AUTO_INCREMENT 主キー、
tea_name varchar(20) NOT NULL 一意キー
);

3. デフォルトの制約

  • デフォルト
  • レコードを挿入するときに、フィールドに値が明示的に割り当てられていない場合は、デフォルト値が自動的に割り当てられます。

たとえば、デフォルトの授業時間が 40 分であるコース テーブルを作成します。

CREATE TABLEコース(
id int AUTO_INCREMENT 主キー、
cou_name varchar(20) NOT NULL UNIQUE KEY、
時間 int デフォルト 40
);
Course(cou_name) に値('Chinese') を挿入します。

4. 非NULL制約

  • NULLではない
  • 列に NULL 値を指定できないように強制し、制約によってフィールドに常に値が含まれるように強制します。
  • つまり、フィールドに値を追加せずに新しいレコードを挿入したり、レコードを更新したりすることはできません。

たとえば、「Persons」テーブルを作成する場合は、Id 列と name 列に NOT NULL 制約を作成します。

テーブルPersonsを作成する(
id int NULLではない、
p_name varchar(20) NULLではない、 
部門varchar(20)、
アドレスvarchar(20)、
電話番号varchar(20)
)
DESC 人物;

5. 外部キー制約

  • 外部キー
  • データの一貫性と整合性を維持する
  • 1対1または1対nの関係を実装する

1. 親テーブルと子テーブルは同じストレージ エンジンを使用する必要があり、一時テーブルは禁止されています。
2. データテーブルのストレージエンジンはInnoDBのみ
3. 外部キー列と参照列のデータ型は類似している必要があります。数字の長さと符号ビットの有無は同じである必要がありますが、文字の長さは異なっていてもかまいません。
4. 外部キー列と参照列に対してインデックスを作成する必要があります。外部キー列にインデックスが存在しない場合は、MySQL によって自動的にインデックスが作成されます。

テーブル学校を作成(
id int AUTO_INCREMENT 主キー、
sname varchar(20) NULLではない
);
テーブル学生2を作成します(
id int AUTO_INCREMENT 主キー、
sid int、
外部キー (sid) 参照 school(id)
);

外部キー制約の参照操作

  • CASCADE : 親テーブルから削除または更新し、子テーブル内の一致する行を自動的に削除または更新します。
  • 親テーブルの参照列からデータが削除されると、対応するデータを含む行が子テーブルから削除されます。
テーブルstudent3を作成します(
id int AUTO_INCREMENT 主キー、
sid int、
外部キー (sid) 参照 school(id) ON DELETE CASCADE
);
  • SET NULL: 親テーブルから行を削除または更新し、子テーブルの外部キー列を NULL に設定します。このオプションを使用する場合は、子テーブルの列に NOT NULL が指定されていないことを確認する必要があります。
  • 親テーブルからデータを削除し、子テーブルの参照をNULLに設定します。
  • RESTRICT: 親テーブルに対する削除または更新操作を拒否します
  • NO ACTION: MySQL の RESTRICT に相当する標準 SQL キーワード。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQL 整合性制約の例の詳細な説明
  • MySQL 制約の超詳細な説明
  • MySQL の 6 つの一般的な制約タイプの詳細な説明
  • MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介
  • MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

<<:  Linux での umask の使用に関する詳細な説明

>>:  Vue3 でマークダウン エディター コンポーネントを使用する方法

推薦する

MySQLの通常インデックスとユニークインデックスの違いの詳しい説明

目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...

SSH経由でリモートLinuxシステムでコマンドを実行する方法

場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

nginx 設定の場所の概要の場所の通常の書き込みと書き換えルールの書き込み

1. 場所の正規表現例を見てみましょう: 場所 = / { # 完全一致 / 、ホスト名の後に文字列...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

Dockerはプライベートライブラリイメージを完全に削除します

まず、インターネット上の一般的な慣行を見てみましょうデフォルトでは、プライベート ライブラリはイメー...

VUEはFlappy Birdゲームのサンプルコードを実装します

Flappy Bird は、誰もがアプリでプレイしたことがある非常にシンプルな小さなゲームです。ここ...

Windows Server のインストール後にワイヤレスとオーディオが機能しない問題を解決する

1. ワイヤレスPowerShell を実行し、次のコマンドを入力します。 install-wind...

Linuxは数字当てゲームのソースコードを実装する

シンプルな Linux 推測ゲームのソースコードゲームのルール:数字当てゲームは通常 2 人でプレイ...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

Windows 8 での MySQL Community Server 5.6 のインストールと設定のチュートリアル

この記事では、Windows 8 での MySQL5.6 のインストールと設定のチュートリアルを記録...

きちんとしたHTMLマークアップを使用してページを構築します

インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...

Vue2.x の応答性の簡単な説明と例

1. Vue レスポンシブの使用法を確認する​ Vue の応答性は、私たち全員がよく知っています。 ...

grpc のリバース プロキシとして nginx を使用する場合の落とし穴の概要

背景ご存知のとおり、nginx は高性能な Web サーバーであり、負荷分散やリバース プロキシによ...

JSはタイムラインの自動再生を実現する

最近、次のような効果を実装しました。再生ボタンをクリックするとタイムラインの再生が開始され、一時停止...