整合性制約整合性制約の定義挿入されたデータの正確性と合法性を保証するために、データ型の制約に加えて、テーブル内のフィールドに他の制約を追加します。 整合性制約の分類エンティティの整合性: レコード間で重複があってはなりません。
ドメイン整合性: データベース テーブルのフィールドは、特定のデータ型または制約に準拠する必要があります。
参照整合性: あるテーブル内のフィールドの値は、別のテーブル内の値を参照する必要があります。
主キー制約
主キー制約を追加するには、次の 3 つの方法があります。 方法 1: テーブルの作成時に主キー制約を追加します。 テーブル学生を作成( sid int 主キー、 sname varchar(20)、 年齢 int )文字セット=utf8; -- 主キー制約を追加した後、同じ sid を挿入するとエラーが発生します。 学生(sid,sname,age)に値(1,'张三',22)を挿入します。 学生(sid,sname,age)に値(1,'李四',33)を挿入します。 方法 2: テーブルの作成時に主キー制約を追加しますが、追加方法が異なります。 「主キーを追加するこの方法のみが複合主キーを追加できます」 テーブル学生を作成( sid int、 sname varchar(20)、 年齢 int、 主キー(sid) )文字セット=utf8; 方法 3: テーブルを作成した後、主キー制約を追加します。 テーブル学生を作成( sid int、 sname varchar(20)、 年齢 int )文字セット=utf8; テーブルstudentを変更し、主キー(sid)を追加します。 -- 制約は制約が追加されることを意味します。 -- pk_sid は制約の名前です。 単一の主キーと複合主キーの違い「単一の主キー」 テーブル内のフィールドを主キーとして設定し、このフィールドを使用してレコードを一意に識別します。 sid が一意であり空でない限り、各行は一意のレコードになります。 主キー(sid) sid sname 年齢 1 張三18 2 張三18 「共同主キー」 テーブル内の2つのフィールド(または複数のフィールド)を共同主キーとして設定し、これらの2つのフィールド(または複数のフィールド)を使用して、 レコードを一意に識別します。 これら 2 つのフィールドは、同時に繰り返されない限り、別々に繰り返すことができます。 主キー (sid、classid) sid クラスid sname 年齢 1 2 張三18 1 3 張三18 2 4 リチウムSi20 3 4 王武 30 -- 次の 2 つのレコードには同じフィールドがあるため、重複レコードとなり、挿入時にエラーが発生します。 5 5 李創25 5 5 王二24 主キーフィールドを選択するための原則
特別な注意: テーブル作成ステートメントのフィールドに主キー制限のみがあり、主キーauto_incrementを使用しない場合 ただし、上で述べたように、主キー フィールドは通常は変更されないため、積極的に値を指定しないでください。主キー フィールドには、システムによって既定値が割り当てられます。主キーの自動増分について学習すると、これが理解できるようになります。 覚えておいてください: 主キーと auto_increament は一緒に使用するのが最適です。 例えば: 主キー制約の削除テーブル student を変更し、主キーを削除します。 主キーの自動増分主キー自動増分の意味と特徴名前が示すように、これは主キーが自動的に値を追加するのに役立つ制約です。上で述べたように、主キー フィールドには変更を加えないことが最善です。もちろん、これには、主キー フィールドに値を挿入するときに主キーを手動で追加しないことも含まれます。代わりに、システムが主キー フィールドに値を自動的に割り当てるようにします。主キーの自動インクリメントには、次の 2 つの特性があります。
2 番目の機能の説明: 一意制約を追加するには、次の 2 つの方法があります。 方法 1: テーブルを作成するときに、主キーと主キーの自動増分を同時に追加します。 テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20)、 年齢 int、 idカードvarchar(18) )文字セット=utf8; -- データを挿入するときは、主キーと auto_increment を一緒に使用します。 -- 主キーフィールド sid に値を割り当てる必要はありません。 insert into student(sname,age) values ("张三",22),("李四",25); 方法 2: テーブルを作成した後、フィールドに「主キーと主キーの自動増分」を同時に追加します。 テーブル学生を作成( sid int、 sname varchar(20)、 年齢 int、 idカードvarchar(18) )文字セット=utf8; -- 次の 2 つの方法では、フィールドに「主キーと主キーの自動増分」を同時に追加できます。 テーブル student を変更し、 sid int 主キー auto_increment を変更します。 テーブル student を変更し、sid sid int 主キー auto_increment を変更します。 主キーの自動増分を削除する テーブル student を変更し、sid int 主キーを変更します。 一意制約ユニーク制約とは何を意味しますか?テーブルには主キーが 1 つしか存在できないためです。しかし、ID カード フィールドなどの一部のフィールドは一意である必要があります。それらを主キーとして設定することはできません (ID カード フィールドは意味のあるフィールドです)。では、それらの一意性をどのように保証すればよいでしょうか?これは次に説明する唯一の制約です。注: テーブルには複数の一意制約を設定できます。 一意制約を追加するには、次の 3 つの方法があります。 方法 1: テーブルの作成時に一意制約を追加します。 テーブル学生を作成( sid int 主キー キー auto_increment, sname varchar(20)、 年齢 int、 idcard varchar(18) ユニーク )文字セット=utf8; 方法 2: テーブルの作成時に、異なる方法で一意制約を追加します。 「主キーを追加するこの方法のみが複合主キーを追加できます」 学生テーブルを作成 ( sid int 主キー auto_increment, sname varchar(20)、 年齢 int、 idcard varchar(18)、 ユニーク(IDカード) )文字セット=utf8; 方法 3: テーブルを作成した後、一意制約を追加します。 学生テーブルを作成 ( sid int 主キー auto_increment, sname varchar(20)、 年齢 int、 idカードvarchar(18) )文字セット=utf8; テーブルstudentを変更し、unique(idcard)を追加します。 -- 一意制約が設定されたフィールドの場合、同じ値が挿入されるとエラーが報告されます。 insert into student(sname,age,idcard) values ("李四",18,"123456"); insert into student(sname,age,idcard) values ("王五",22,"123456"); ユニーク制約の削除一意制約を削除するには、使用するステートメントが若干異なります。 テーブルを変更して学生のキー ID カードをドロップします。 非NULL制約を追加する非NULL制約の追加非 null 制約とは、フィールドに非 null 制約を設定した後、フィールドに null 値を挿入するとエラーが報告されることを意味します。非 null 制約を追加するには、次の 2 つの方法があります。 方法 1: テーブルを作成するときに、フィールドに NOT NULL 制約を追加します。 テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20) が null ではない、 年齢 int、 idカードvarchar(18) )文字セット=utf8; 方法 2: テーブルを作成した後、フィールドに NOT NULL 制約を追加します。 テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20)、 年齢 int、 idカードvarchar(18) )文字セット=utf8; -- 追加方法は2つあります。 alter table student sname varchar(20) が null でないを変更します。 alter table student sname sname varchar(20) が null ではありません。 フィールドに非NULL制約を追加すると、次の特性を持つようになります。
「こうした細かい点に気づかないこともあるので、個別に説明します。」 1: フィールドに非 null 制約が設定されると、null 値を挿入できなくなります。 -- 次の挿入はエラーになります。 学生(sname,age)に値(null,22)を挿入します。 2: フィールドに非 null 制約が設定されると、null 値を挿入できなくなるだけでなく、値を挿入することもできなくなります。 -- 次の挿入でもエラーが報告されます。 学生(年齢、IDカード)に値(33、"123456789")を挿入します。 以下にいくつか例を挙げます。 デフォルト値制約を追加する(デフォルト)フィールドにデフォルト値が設定されている場合、フィールドに値を指定しないと、このデフォルト値が表示されます。 デフォルト値制約の追加方法 1: テーブルを作成するときに、フィールドにデフォルト値を追加します。 テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20)、 年齢 int デフォルト 0, idカードvarchar(18) )文字セット=utf8; 方法 2: テーブルを作成した後、フィールドにデフォルト値を追加します。 テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20)、 年齢 int、 idカードvarchar(18) )文字セット=utf8; 「さまざまな点に特別な注意が必要です」 -- alter を使用してデフォルト値を追加するコードは少し特殊です。 テーブルstudentを変更し、年齢を変更し、デフォルトを0に設定します。 デフォルト値を削除する テーブル student を変更し、列 age を変更し、デフォルトを削除します。 参照整合性参照整合性とは何ですか?参照整合性とは、あるテーブル内のフィールドの値が別のテーブル内のフィールドの値を参照する必要があることを意味します。ここで関係するのは外部キーです: 外部キー。一般的に、このテーブルのこのフィールドは外部キーとして設定されます。参照テーブル内のそのフィールドの値は、そのテーブルの主キーとして設定する必要があります。 理解を深めるために、次の図を参照してください。 特記事項: 学生テーブルの cid は、クラス テーブルの cid を参照します。ここでフィールド名がまったく同じであることがわかります。ただし、実際には、2 つのフィールド名は異なっていてもかまいませんが、2 つのフィールドのデータ型は同じである必要があります。 参照整合性を構成する条件は次のとおりです。
外部キー制約の追加覚えておかなければならないことの 1 つは、現在のテーブルに外部キー制約を追加する前に、まず参照先のテーブルを用意しておく必要があるということです。そうしないと、誰を参照することになるのでしょうか。 外部キー制約を追加するには、次の 2 つの方法があります。 方法 1: テーブルを作成するときに、フィールドに外部キー制約を追加します。 テーブル教室を作成( cid int 主キー auto_increment, cname varchar(20) が null ではない )文字セット=utf8; テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20) が null ではない、 年齢ビット(1) cid int、 制約 fk_cid 外部キー(cid) は、classroom(cid) を参照します。 )文字セット=utf8; 方法 2: テーブルを作成した後、フィールドに外部キー制約を追加します。 テーブル教室を作成( cid int 主キー、 cname varchar(20) が null ではない )文字セット=utf8; テーブル学生を作成( sid int 主キー auto_increment, sname varchar(20) が null ではない、 年齢ビット(1) cid 整数 )文字セット=utf8; テーブル student を変更し、制約 fk_cid 外部キー (cid) を追加します。 参照教室(cid); 「注意: 制約の後にエイリアスが続き、fk_cid はエイリアスと同等です。」 要約するこれで、MySQL 整合性制約に関するこの記事は終了です。MySQL 整合性制約の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Harborを使用してプライベートDockerリポジトリを構築する方法
>>: さまざまなネットワーク画像形式におけるPNGの利点の詳細な説明
目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...
国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...
目次0. モジュールとは何か1.モジュールの読み込み1.1 方法1 1.2 方法2 2. 輸出と輸入...
目次1. インストール2. videojsの紹介3. コンポーネントでのテストと使用1. 基本的な自...
最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...
1. left(name,4)は左の4文字をインターセプトしますリスト: SELECT LEFT(2...
目次1. ディレクトリを入力してプロジェクトを作成する2. 必要な設定項目を選択します2.1 Vue...
以下のコードをDreamweaverのコードエリアにコピーすると、プレビュー時に以下の画像が表示され...
今日、問題が発生しました: MySQL の insert into、update、delete ステ...
Docker が配置されているサーバーをしばらく稼働させたところ、サーバーのディスク ディレクトリの...
ブラウザ モジュールの主な機能は、http リクエスト ヘッダーの「User-Agent」の値とブラ...
「downloadlaod」を直接クリックしてもダウンロードできない場合は、ここからダウンロードす...
<br />おそらく、あなたは会社に入社したばかりで、その会社が「ユーザビリティ」に関す...
1. yumの紹介Yum (フルネームは Yellow dogUpdater、Modified) は...
目次1. 使用方法2. 準備3. 文法3.1 変数と代入3.2 入力および出力パラメータ3.3 プロ...