整合性制約 整合性制約はテーブル データの正確性を保つためのものです。データが正しくない場合は、そもそもテーブルに追加できません。 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で連打技術を実現
目次トリガーとは何かトリガーを作成する複数の実行ステートメントを持つトリガーの作成制限と考慮事項要約...
OS X 環境で MySQL を起動すると、エラー メッセージが表示されます。 016-03-03T...
CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...
最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...
MySQL 文字列の連結、インターセプト、置換、および検索位置。よく使用される文字列関数:関数例示す...
複雑な表を作成するには HTML を使用します。複雑なテーブルでは通常、td の rowspan 属...
IE8には複数の互換モードがあります。 IE プラットフォームの設計者である Chris Wilso...
1. 引き続き PHP スクリプトを使用して実行します。コマンドラインに入力: php /home/...
序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...
Docker は 2013 年のリリース以来、広く注目され、ソフトウェア業界を変える可能性を秘めてい...
1. スタートアップメニューでは、カーソルを最初の行に移動します - eを押します 2. UTF-8...
Node の研究と応用を通じて、NodeJS はシングルスレッド、イベント駆動型、非ブロッキング I...
質問1件会社のサーバーはApacheを使用しており、バックエンドはPHP、サーバーはLinux C/...
タッチコマンドこれには 2 つの機能があります。1 つは、既存のファイルの時間タグを現在のシステム時...
概要Docker 自体の現在のデフォルト ネットワークについては、単一ホスト上の異なる Docker...