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

推薦する

Zabbix が MySQL のマスター/スレーブ状態を監視する方法の詳細な説明

MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

CSSスタイルの記述順序と命名規則と注意事項

書き順の重要性ブラウザのリフローを減らし、ブラウザのDOMレンダリングパフォーマンスを向上させる①:...

Net Core実装プロセス分析のDoc​​kerインストールと展開

1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...

Vue プロジェクトを実行するときに `--fix` オプションで修正できる可能性のある警告のエラー問題を解決します。

問題: vue-cil3 は、`--fix` オプションで修正できる可能性のある警告とともに実行され...

JavaScript キャンバスで動的な点と線の効果を実現

この記事では、動的な点と線の効果を実現するためのJavaScriptキャンバスの具体的なコードを参考...

Windows での MySQL データベースのマスター/スレーブ構成チュートリアル

WindowsでMySQLデータベースのマスターとスレーブを構成する詳細なプロセスは次のとおりです。...

node.js グローバル変数の具体的な使用法

グローバルオブジェクトすべてのモジュールは呼び出すことができますglobal: ブラウザの wind...

Linux サーバー上で nvidia-docker 環境を設定するプロセスの詳細な説明

Docker はコンテナに相当し、必要な動作環境に応じて対応する動作環境を構築できます。このとき、各...

Win10 の組み込み Linux システムを使用して Spring Boot プロジェクトを開始する方法

1. Windows10の組み込みLinuxサブシステムをインストールする1.1. Linuxサブシ...

HTML テーブルタグチュートリアル (7): 背景色属性 BGCOLOR

テーブルの背景色は、BGCOLOR 属性を通じて設定できます。基本的な構文<テーブル BGCO...

HTMLでキーワードを強調表示するのに最適なソリューション

最近、プロジェクトに取り組んでいるときに、Web ページ上のキーワードを強調表示する機能に遭遇しまし...

IIS 7.5では、HTMLはSHTMLのようなinclude関数(モジュールマッピングの追加)をサポートします。

最初はたくさんのエラーを見つけましたが、実際には非常に簡単です。shtm の元の設定を参照するだけで...

カルーセルアニメーションを実現するVueコンポーネント

この記事では、カルーセルアニメーションを実現するためのVueコンポーネントの具体的なコードを例として...

Linux sshのデフォルトのリモートポート番号を変更する6つの手順

Linux のデフォルトの ssh リモート ポートは 22 です。デフォルトのポートは、悪意のある...