MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

1. 制約の概念と分類

1.1 制約の概念:

データの正確性、有効性、整合性を確保するために、テーブル内のデータを制限します。

1.2 制約の分類

  • 1. 主キー制約(主キー): フィールドが空でなく、一意であることを確認します。テーブルには、テーブル内のフィールドの一意の識別子である主キーを 1 つだけ設定できます。
  • 2. 非ヌル制約( nullではない): フィールドが空にならないようにする
  • 3. ユニーク制約( unique): フィールドが一意であるが、null になる可能性があることを確認します。
  • 4. 外部キー制約(外部キー): あるテーブル内に存在する別のテーブルの主キーまたは一意キーを、このテーブルの外部キーと呼びます。
  • 5. デフォルトの制約(デフォルト+デフォルト値): フィールドにデフォルト値(引用符で囲む)があることを確認するために使用されます。

2. 5つの制約の追加と削除

2.1 制約を追加する6つの方法

1. テーブルを作成するときに空でない制約を追加します(列レベルの制約として追加されました)

テーブルを作成 + テーブル名(
列名データ型 + 制約名

2. テーブルを作成するときに非NULL制約を追加します(テーブルレベルの制約として追加されました)

テーブルテーブル名を作成(
列名データ型、
...
列名データ型、
(制約 + エイリアス (追加した制約に名前を付けるだけ)) 制約名 (対応するフィールド名)

3. 列名を変更する場合

テーブルの変更 + テーブル名 + 変更 (列) + 古い列名 新しい列名 新しい列名のタイプ + 制約

4. 列のデータ型を変更する場合

alter table + テーブル名 + 変更 + (列) + 列名と列タイプの制約

5. 新しい列を追加するときに制約を追加できます

alter table + テーブル名 + add + (列) + 新しい列名 + 新しい列名タイプ + 制約

6. 外部キー固有

alter table + テーブル名 + 制約の追加 外部キー名 (外部キーには任意の名前を付けることができます) + 外部キー (外部キー フィールド名) は、メイン テーブル名 (メイン テーブルに関連付けられるフィールド) を参照します。

2.2 制約を削除する3つの方法

1. 列名を変更する際の制約はありません

alter table + テーブル名 + change (列) + 古い列名 新しい列名 新しい列名のタイプ

2. 列のデータ型を変更する際の制約はありません

alter table + テーブル名 + 変更 + (列) + 列名と列タイプ

3. 特定の制約を削除するにはdropを使用します

テーブルの変更 + テーブル名 + インデックス/外部キー/主キーの削除 + 制約名

注: 表内の制約の名前を確認します。

テーブル名からインデックスを表示

2.3 5つの主要な制約に対応するメソッドを追加および削除します(シリアル番号は2.1と2.2に対応します)

1. 非ヌル制約( NULLではない)

  • 対応する加算方法: 1 3 4 5
  • 対応する削除方法: 1 2

2. ユニーク制約(個性的)

  • 対応する加算方法: 1 2 3 4 5
  • 対応する削除方法: 1 2 3 (3番目のインデックスオプションに対応)

3. デフォルトの制約(デフォルト)

  • 対応する加算方法: 1 3 4 5
  • 対応する削除方法: 1 2

4. 主キー(主キー

  • 対応する加算方法: 1 2 3 4 5
  • 対応する削除方法: 3 (テーブルには主キーが 1 つしか存在できないため、制約のない名前が 3 番目のタイプの主キー オプションの後に追加されることに注意してください)

5. 外部キー(外部キー)

  • 対応する追加方法: 2 6
  • 対応する削除方法: 3 (3 番目の外部キー オプションに対応)

従業員テーブルを見てみましょう (フィールドは従業員番号、名前、年齢、部門、部門所在地です)。

ここに画像の説明を挿入

冗長な部分があることがわかります。つまり、R&D 部門は広州に対応し、営業部門は深センに対応しています。それらを何度も記述する必要はありません。実際には、冗長性を防ぐために 2 つのテーブルに分割できます。最初のテーブルには従業員情報が保存され、他のテーブルには部門情報テーブル 1 (従業員テーブル従業員) が格納されます。

ここに画像の説明を挿入

表2(部門表):

ここに画像の説明を挿入

ここでは両方のテーブルのIDが主キーです

しかし、ここで問題があります。つまり、id=1 の行など、部門テーブル内の任意の行を削除できるということです。削除されると、テーブル 1 の dep_id=1 の従業員は自分の部門情報を見つけることができなくなります。そのため、外部キーを使用してこの問題を解決できます。

テーブルを作成するときにdep_idを外部キーとして指定し、それを部門の主キーidに関連付けることができます。

ステートメントの形式 (これは 2 番目の方法、つまりテーブル レベルの制約を持つ外部キーを追加する方法ですが、構文は異なります)。

テーブルテーブル名を作成(
列名データ型、
...
列名データ型、
(制約 + エイリアス (追加した制約に名前を付けるだけ)) + 外部キー (フィールド名) + 参照 + メイン テーブル (メイン テーブルの対応するフィールド)

この例では、次のように記述できます。

従業員テーブルを作成する(
id int 主キー、
sname varchar(5)、
年齢 int、
dep_id int,
制約 aaa 外部キー(dep_id) は department(id) を参照します

外部キーを追加した後は、部門テーブルの行を削除することはできません。また、従業員に新しい従業員情報を追加するときに、dep_id に 1 または 2 以外の番号を入力することはできません。

2.4 制約作成のまとめ

テーブルを作成するときに、列レベルの制約を追加すると、デフォルト、空でない、主キー、一意のみがサポートされます。テーブルレベルの制約を追加すると、主キー、一意、外部キーのみがサポートされます。

2.5 主キーとユニークキーの違い

最大で 1 つの主キーと複数の一意のキーが存在できます。 2 つの列で主キーと一意のキーを形成できます。

3. 列の自動増加

3.1 コンセプト

列が数値型の場合、auto_increment を使用して自動値増加を実現します (通常は主キーとともに使用されます)

3.2 テーブル作成時に主キー制約を追加し、主キーの自己増分の例を完了する

形式:

テーブルテーブル名を作成(
列名 データ型 主キー + auto_increment

例えば:
学生 ID と名前を含む学生テーブルを作成し、学生 ID に基づいてステートメントを作成します。

テーブル学生を作成(
id int 主キー auto_increment,
sname char(4)

この時点でテーブルにデータがある場合;

ここに画像の説明を挿入

データを再度挿入するときに、学生番号は付与されません。

学生の値に挿入(null、"Li Si")

テーブルを再度確認すると、自動増分値に基づいて学生番号がテーブルに自動的に追加されていました。

ここに画像の説明を挿入

3.3 自己成長の追加と削除

1.追加(上記作成時の追加は一種類です)

テーブルの変更 + テーブル名 + 列の変更 + 列名タイプ制約 + AUTO_INCREMENT

2. 削除

テーブルの変更 + テーブル名 + 列の変更 列名 タイプ

3.4 自動増分ステップサイズの設定

自動増分の開始値は1で、ステップ長の開始値は1です。
開始値は変更できませんが、show VARIABLES LIKE "%auto_increment%" を使用してステップ サイズを変更できます。
対応するステップの名前を確認し、set stepを使用して名前=設定するステップを表します。

以上が、初心者向けのMySQLデータベーステーブルの5大制約の学習の詳細な内容です。MySQLの5大制約の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL で外部キー制約を作成および削除する方法
  • MySQL に外部キー制約を追加する具体的な方法
  • MySQL データベースの制約とデータ テーブルの設計原則
  • MySQLデータベースで外部キー制約を使用する必要があるかどうかの詳細な説明
  • MySQL の 6 つの一般的な制約タイプの詳細な説明
  • MYSQLの主キー制約とユニーク制約の違いについて簡単に説明します。
  • MySQL 制約の超詳細な説明
  • MySQL の null 制約のケースの説明
  • MySQLデータベースのテーブルに制約を設定する方法

<<:  HTML要素にフォーカスを設定する方法

>>:  Layui は複数条件クエリのサンプルコードを実装します

推薦する

経験者のHTMLの書き方と理由の分析

1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...

MySQL スローログ実践のまとめ

遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...

ネイティブ CSS で無限テキストカルーセルを実装する一般的な方法

テキストカルーセルは私たちの日常生活で非常に一般的です。スーパーマーケットや実店舗の入り口には、テキ...

Vue3 コンパイルプロセス - ソースコード分析

序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...

Linux でスレッドを作成するための pthread_create の具体的な使用法

pthread_create関数機能紹介pthread_createはUNIX環境のスレッド作成関数...

JavaScriptはボタンをクリックして4桁のランダムな検証コードを生成します

この記事の例では、ボタンをクリックすることで4桁のランダムな検証コードを生成するjsの具体的なコード...

Linux mysql-5.6 でルート パスワードをリセットする方法

1. MySQL サービスが起動しているかどうかを確認します。起動している場合は、MySQL サービ...

Mysql5.7.17 winx64.zip 解凍バージョンのインストールと設定のグラフィックチュートリアル

1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...

Tomcatにデプロイされたアプリケーションがフロントエンドページにアクセスできない問題について

最近、実践的なトレーニング プロジェクトを実行する際に ssm フレームワークを使用しました。プロジ...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

uni-app を使用して上部のナビゲーション バーにボタンと検索ボックスを表示する方法

最近、会社でアプリを開発する準備をしており、最終的に開発には uni-app フレームワークを使用す...

MySQLコマンドプロンプトで入力エラーが発生したときに前のコマンドを修正する方法

目次現在の問題解決プロセス具体的な手順解決した事件現在の問題MySQL コマンド プロンプトに複数行...

vue-cli で stimulsoft.reports.js を使用する詳細なチュートリアル

vue-cli は stimulsoft.reports.js を使用します (ナニーレベルのチュー...

Nginx で https をアップグレードする方法

購入証明書Alibaba CloudのCloud Shield証明書サービスから購入できます。証明書...

MySQL マスタースレーブスイッチチャネルの問題の解決策

VIP を設定した後、アクティブ/スタンバイの切り替え中に表示されるエラー メッセージは次のとおりで...