整合性制約 整合性制約はテーブル データの正確性を保つためのものです。データが正しくない場合は、そもそもテーブルに追加できません。 1 主キー 列に主キー制約を追加すると、この列のデータは繰り返すことができなくなります。このように、各レコード行の主キー列の値は、その行の一意の識別子になります。たとえば、学生の ID 番号は一意の識別子として使用できますが、学生の名前は複数の学生が同じ名前を持つ可能性があるため、一意の識別子として使用できません。 主キー制約を指定するには、PRIMARY KEY キーワードを使用します。 テーブルを作成します。列を定義するときに主キーを指定します。 テーブルの作成( sid CHAR(6) 主キー、 sname VARCHAR(20)、 年齢 INT、 性別 VARCHAR(10) ); テーブルを作成します。列を定義してから、主キーを個別に指定します。 テーブルの作成( sid CHAR(6)、 sname VARCHAR(20)、 年齢 INT、 性別 VARCHAR(10)、 主キー(sid) ); テーブルを変更するときに主キーを指定します。 ALTER TABLE スタ 主キーを追加します(sid); 主キーを削除するには (主キー列ではなく、主キー制約のみを削除します)、次の手順を実行します。 ALTER TABLE stu DROP PRIMARY KEY; 2. 主キーの自動増分 MySQL は主キーの自動増加機能を提供します。主キーを自動増分に設定すると、主キー値が指定されていない場合、主キー値が自動的に生成され、最大の主キー値 + 1 になるため、主キーが重複する可能性がなくなります。 テーブルを作成するときに主キーを自動拡張するように設定します (自動拡張するには主キーが整数である必要があります)。 テーブルの作成( sid INT 主キー AUTO_INCREMENT、 sname VARCHAR(20)、 年齢 INT、 性別 VARCHAR(10) ); テーブルを変更するときに主キーの自動増分を設定します。 ALTER TABLE stu CHANGE sid sid INT AUTO_INCREMENT; テーブルを変更するときに主キーの自動増分を削除します。 ALTER TABLE stu を変更し、sid sid INT を変更します。 3 空ではない 空でない制約を指定する列には、値がないことはできません。つまり、レコードを挿入するときには、空でない制約が追加された列に値を指定する必要があります。レコードを変更するときは、空でない列の値を NULL に設定することはできません。 非 null 制約を指定します。 テーブルの作成( sid INT 主キー AUTO_INCREMENT、 sname VARCHAR(10) NOT NULL、 年齢 INT、 性別 VARCHAR(10) ); sname フィールドを空でない値として指定した後、レコードを stu テーブルに挿入するときに sname フィールドの値を指定する必要があります。そうしないと、エラーが報告されます。 stu(sid) VALUES(1)に挿入します。 挿入されたレコードには sname に指定された値がないため、エラーが報告されます。 4 ユニーク フィールドに一意の制約を指定することもできます。列に一意制約が指定されている場合、列内の値は一意である必要があります。これは主キーに似ています。たとえば、stu テーブルの sname フィールドに一意制約を指定するには、次のようにします。 テーブル tab_ab を作成します ( sid INT 主キー AUTO_INCREMENT、 sname VARCHAR(10) 一意 ); sname(sid, sname) に VALUES(1001, 'zs') を挿入します。 sname(sid, sname) に VALUES(1002, 'zs') を挿入します。 同じ名前を 2 回挿入すると、MySQL がエラーを出します。 5 外部キー 主キーと外部キーはテーブルを関連付ける唯一の方法です。 外部キーは別のテーブルの主キーです。たとえば、従業員テーブルと部門テーブルの間には関連関係があり、従業員テーブルの部門番号フィールドは外部キーであり、部門テーブルに対する外部キーです。 たとえば、t_section テーブルでは、sid 1 のレコードは、java というカテゴリがあることを示しており、モデレーターは t_user テーブルで uid 1 を持つユーザー、つまり zs です。 たとえば、t_topic テーブルでは、tid 2 のレコードは「Java is coffee」という名前の投稿で、これは Java セクションの投稿であり、その作成者は ww です。 外部キーは、この列の値を別のテーブルの主キー値に制限するために使用されます。 ! ! t_user テーブルを作成し、主キー列として uid を指定します。 テーブルt_userを作成します( uid INT 主キー AUTO_INCREMENT、 uname VARCHAR(20) 一意 NOT NULL ); t_section テーブルを作成し、 sid を主キー列として指定し、 u_id を t_user テーブルの uid 列の外部キーとして指定します。 テーブルt_sectionを作成します( sid INT 主キー AUTO_INCREMENT、 sname VARCHAR(30)、 u_id INT、 制約 fk_t_user 外部キー(u_id) 参照 t_user(uid) ); t_section テーブルを変更し、t_user テーブルの uid 列への外部キーとして u_id を指定します。 ALTER TABLE t_section 制約 fk_t_user を追加する 外部キー(u_id) 参照 t_user(uid); t_section テーブルを変更し、u_id の外部キー制約を削除します。 ALTER TABLE t_section 外部キー fk_t_user を削除します。 6 テーブル間の関係
以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux ソフトウェアのインストール場所を確認する簡単な方法
>>: jsで七夕告白連打の効果を実現、jQueryで連打技術を実現
1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...
目次1. テスト環境1.1 CentOS 7をインストールする1.2 Docker CE 19.03...
目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...
この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...
1. ASP.NET Web アプリケーションのテンプレートとは何ですか? それらの違いは何ですか?...
この記事から、MySQL を紹介し学習するための新しい一連の記事がスタートします。なぜ MySQL ...
目次1. Props 親コンポーネント ---> 子コンポーネント通信2. $emit 子コン...
序文WEB 開発では、クロスドメイン リクエストが頻繁に発生します。クロスドメインの問題を解決する方...
ご存知のとおり、私たちが毎日閲覧する Web ページ、Web サイト、または Web ページには独自...
1. はじめにロケーション命令は、http モジュールのコア構成です。事前に定義された URL マッ...
まず、Alipay サンドボックスから一連のものをダウンロードします。多くのブログで取り上げられてお...
目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....
Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...
Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...
目次mysql マスタースレーブレプリケーションMySQL マスタースレーブレプリケーション方式My...