MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行うと、DBMS は特定の制約に従ってデータを自動的に監視し、非準拠データがデータベースに入るのを防ぎ、データベースに保存されているデータが正確で有効かつ互換性があることを保証します。

#データ制約

#5 つの整合性制約:
#NOT NULL: NULL ではない制約。列が空にならないことを指定します。
#UNIQUE: 一意制約。列または列の組み合わせが繰り返されないことを指定します。#PRIMARY KEY: 主キー。この列の値によって、この列のレコードを一意に識別できることを指定します。#FOREIGN KEY: 外部キー。この行レコードがプライマリ テーブルのレコードに属していることを指定します。主に参照整合性に使用されます。#CHECK: チェック。対応する値が式を満たす必要があることを指定するブール式を指定します (mysql はチェック制約をサポートしていません)
#--------------------------------NOT NULL 空でない制約---------------------------
テーブル test4 を作成する
(
  #非null制約を作成する id int not null,
名前varchar(55) デフォルト 'ABCD' nullではない、
#デフォルト値はnullです
年齢 int null
);
#空でない制約をキャンセルする alter table test4
 名前を変更するvarchar(55) デフォルト 'ABCD' はnullではありません。
#空でない制約を追加する alter table test4
 年齢を変更する int は null ではありません。
#--------------------------------UNIQUE: 一意制約--------------------------------
#制約を作成するための列レベルの制約構文 create table test_unique
 (
 #行レベルの一意制約を作成する id int not null unique,
 年齢 int
 );
 #テーブルレベルの制約構文フォーマット create table unique_test3
 (
test6_id int が null ではない、
test6_name varchar(255)、
test6_pass varchar(255)、
#テーブルレベルの制約構文を使用して、test6_id列とtest6_name列の組み合わせが繰り返されないように指定する一意制約を作成します。constraint test6_unique unique(test6_id,test6_name)、
#テーブルレベルの制約構文を使用して、一意の制約を作成します。制約名は test6_unique_2 です。test6_pass は繰り返すことができません。constraint test6_unique_2 unique(test6_pass)
 );
 # 一意制約を追加するキーワードを追加 alter table test4
 unique(id,name,age)を追加します。
 #modify キーワードを削除または追加して一意制約を変更する alter table test4
 年齢を変更するvarchar(255)はnullではありません。
 テーブルを変更するテスト4
 年齢を変更するvarchar(255) nullではない一意;
 #ほとんどのデータベースでは、制約を削除するには、次のようにします: alter table table name drop constraint 制約名 #ただし、MySQL ではこの方法は使用されません。代わりに、次のようにします: alter table table name drop index 制約名 #--------------------------------PRIMARY KEY: 主キー制約--------------------------------
 #主キー制約は、非 NULL 制約および一意制約と同等です。
 #各テーブルには主キーを 1 つだけ持つことができますが、この主キーは複数のデータ列で構成でき、これらの列の組み合わせを繰り返すことはできません。#標準 SQL では主キーに自分で名前を付けることができますが、MySQL では独自の名前は効果がなく、デフォルトで常に PRIMARY という名前になります。
 primary_testテーブルを作成する
 (
#列レベルの構文を使用して主キー制約を作成します test_id int primary key,
テスト名 varchar(255)
 );
 #テーブルレベルの構文を使用して主キー制約を作成します。create table primary_test2
 (
test_id int が null ではない、
テスト名varchar(255)、
テストパスvarchar(255)、
#主キー制約名 test2_pk を指定します。これはほとんどのデータベースで有効ですが、mysql では有効ではありません。主キー制約名は PRIMARY のままです。
制約 test2_pk 主キー (test_id)
 );
 #複数の列を持つ主キーを作成する create table primary_test3
 (
テストID int,
テスト名varchar(255)、
主キー(test_id,test_name)
 );
 #列レベルの制約構文を使用する alter table primary_test3
 test_id int 主キーを変更します();
 #テーブルレベルの制約構文を使用する alter table primary_test3
 主キー(test_id、test_name)を追加します。
 #主キー制約を削除します: alter table table name drop primary key;
 #主キー列の自己増分機能: データ列の型が整数で、列が主キー列として使用されている場合、列に自己増分機能があることを指定できます。#MySQL は auto_increment を使用して自己増分を設定します。テーブルにレコードを挿入するときに、列の値を指定する必要はありません。システムが列の値を生成します。create table primary_test3
 (
//主キー制約を作成し、自動増分テストIDを設定 int auto_increment primary key、
テスト名 varchar(255)
 );
 #外部キー制約 FOREIGN KEY
 #MySQLでは、テーブルレベルの構文で作成された外部キー制約のみが有効になります。#参照マスターテーブルの存在を確認するには、まずマスターテーブルを作成します。create table teacher_tb
 (
t_id int 自動増分、
t_name varchar(255)、
主キー(t_id)
 );
 テーブルstudent_tbを作成する
 (
s_id int auto_increment 主キー、
s_name varchar(255) NULLではない、
t_java 整数、
外部キー(t_java)はteacher_tb(t_id)を参照します。
 );
#テーブルレベルの制約構文を使用する場合は、外部キーを使用してこのテーブルの外部キー列を指定する必要があります。外部キー制約を作成するときに制約名を指定しないと、
#MySQL は外部キー制約に table_name_ibfk_n という名前を付けます。ここで、table_name はテーブル名、n は 1 から始まる整数です。create table teacher_tb2
 (
t_id int 自動増分、
t_name varchar(255)、
主キー(t_id)
 );
 テーブルstudent_tb2を作成する
 (
s_id int auto_increment 主キー、
s_name varchar(255) NULLではない、
t_java 整数、
制約 student_teacher_fk 外部キー(t_java) は teacher_tb2(t_id) を参照します。
 );
 #複数列の複合外部キー制約を確立する create table teacher_tb5
 (
t_name varchar(255)、
t_pass varchar(255)、
主キー(t_name,t_pass)
 );
 テーブルstudent_tb5を作成する
 (
s_id int auto_increment 主キー、
s_name varchar(255) NULLではない、
t_java_pass varchar(255)、
t_java_name varchar(255)、
外部キー(t_java_name、t_java_pass) 
  teacher_tb5(t_name,t_pass)を参照します
 );
 #外部キー制約を削除する alter table student_tb2
 外部キー student_teacher_fk を削除します。
 #外部キー制約を追加する alter table student_tb2
 外部キー(t_java)参照をteacher_tb2(t_id)に追加します。
 #外部キー制約はそれ自体を参照します。自己制約 create table foreign_test9
 (
foreign_id int auto_increment 主キー、
外部名 varchar(255)、
参照ID int,
外部キー(refer_id)はforeign_test9(foreign_id)を参照します。
 );
 # マスター テーブル レコードが削除されると、スレーブ テーブル レコードも削除されることを定義します # 削除時にカスケード削除すると、マスター テーブル レコードを参照するすべてのスレーブ テーブル レコードが削除されます # 削除時に null 設定すると、マスター テーブル レコードを参照するスレーブ テーブル レコードが null に設定されます
 テーブルteacher_tb8を作成する
 (
t_id int 自動増分、
t_name varchar(255)、
主キー(t_id)
 );
 テーブルstudent_tb8を作成する
 (
s_id int auto_increment 主キー、
s_name varchar(255) NULLではない、
t_java 整数、
制約 student_teacher_fk 外部キー(t_java) は削除カスケードで teacher_tb8(t_id) を参照します
 );

要約する

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

以下もご興味があるかもしれません:
  • MySQLデータベースで外部キー制約を使用する必要があるかどうかの詳細な説明
  • MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します
  • MySQLデータベースのデータテーブルに関する詳細な基本操作
  • MySQLはデータテーブル内の既存のテーブルを分割します
  • MySQL データベースの制約とデータ テーブルの設計原則

<<:  react+antdプロジェクトをゼロから構築する方法を教えます

>>:  Nginx の書き換え正規マッチング書き換え方法の例

推薦する

Dockerデータ管理とネットワーク通信の使用

Docker をインストールし、Docker コアとインストールを通じて簡単な操作を実行できます。 ...

ミニプログラムの基本的な使用方法の知識ポイント(非常に包括的で、お勧めです!)

目次アプリを登録するときに何をすればよいですか?ページを登録するときに通常何をする必要がありますか?...

要素フォーム検証で検証プロンプトをクリアする方法

目次問題のシナリオ:解決: 1. フィールドを個別にチェックする2. フォームフィールドの下のフィー...

Linuxファイルの基本属性の知識ポイントのまとめ

Linux システムは典型的なマルチユーザー システムです。異なるユーザーは異なる立場にあり、異なる...

MySQL Community Server 5.7.16 のグリーン バージョンをインストールしてリモート ログインを実装する方法

1. MySQL Community Server 5.7.16をダウンロードしてインストールします...

JQuery を放棄すべきでしょうか?

目次序文jQuery 以外の場合は何を使うのでしょうか? DOMとイベントAJAX リクエスト要約す...

ブラウザは関連するHTTPヘッダーをキャッシュし、HTTPリクエストの数を最小限に抑えます。

最近、Yahoo の 34 の黄金律を読み、ウェブサイトのパフォーマンスを最適化する方法を学びました...

JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

オブジェクトがメソッドを呼び出す順序:インスタンス内にメソッドが存在しない場合は、インスタンス オブ...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

CentOs でノード バージョンを手動でアップグレードする方法

1. 対応するNode.jsパッケージを見つけます。https://nodejs.org/downl...

Vue3 ページ、メニュー、ルートの使用

目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...

MySQL マスタースレーブレプリケーションの実践の詳細説明 - ログポイントに基づくレプリケーション

ログポイントベースのレプリケーション1. マスターデータベースとスレーブデータベースに専用のレプリケ...

jQueryはフォントサイズ調整ケースを実装します

この記事では、フォントサイズを調整するためのjQueryの具体的なコードを参考までに紹介します。具体...

VMware ESXi 6.0 および仮想マシンのインストール チュートリアルの展開 (画像とテキスト)

社内には以前からアイドル状態だった、構成の整ったサーバーがあったので、EXSI 6.0 を使って複数...