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 の書き換え正規マッチング書き換え方法の例

推薦する

MySQLのスケジュールタスクが正常に実行できない原因の分析と解決

目次序文原因分析と解決策スケジュールされたタスクを迅速に実行する要約する序文データベースのスケジュー...

MySQL の計画タスクとイベント スケジュール例の分析

この記事では、例を使用して、MySQL の計画されたタスクとイベントのスケジュールについて説明します...

mysql データはどこに保存されますか?

MySQLデータベースの保存場所: 1. MySQLがMyISAMストレージエンジンを使用する場合...

ウェブページサイズに関する調査

<br />統計によると、Web ページの平均サイズは 2003 年以降 3 倍に増加し...

Linux でバックグラウンドで実行中のプログラムを表示して終了する方法

1. .shファイルを実行する./sh ファイルを使用して直接実行することもできますが、現在のターミ...

JavaScriptのループの違いについての詳細な説明

目次序文列挙可能なプロパティ反復可能なオブジェクトforEachメソッドとmapメソッドチェーン呼び...

非常に優れた CSS スキル 10 選のコレクションと共有

ここでは、CSS テクニックを巧みに使用することで、HTML を変更せずにブログやテンプレートの外観...

MySQL で null を置き換える IFNULL() および COALESCE() 関数の詳細な説明

MySQLではisnull()関数をnull値の代わりとして使用することはできません。次のように:ま...

vmware workstation12 インストール CentOS プロンプト VMware Player と Device/Credential Guard に互換性がない、理由と解決策

最新バージョンの WIN10 では、Microsoft は仮想化コンテナに基づくセキュリティ メカニ...

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

Vue でクラスとスタイルを使用して v-bind バインディングを使用するいくつかの方法

要素にクラスを追加/削除することは、プロジェクト開発では非常に一般的な動作です。たとえば、Web サ...

CentOS 上での MySQL 5.6 のコンパイルとインストール、および複数の MySQL インスタンスのインストールの詳細な説明

--1. mysql用の新しいグループとユーザーを作成する # ユーザー追加 -M -s /sbin...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

Dockerイメージの読み込み原理

目次Docker イメージ鏡とは何ですか? Dockerイメージの読み込み原理コミットミラーDock...