ホームページ >データベース >mysql チュートリアル >mysqlで主キーと外部キーの制約を記述する方法は?
MySQL の主キー制約は次のように記述されます: "CREATE TABLE テーブル名 (フィールド名 データ型 PRIMARY KEY)"; MySQL 外部キー制約は次のように記述されます: "CREATE TABLE テーブル名 (FOREIGN KEY フィールド名 REFERENCES メイン テーブル)名前主キー列) )」。
(推奨チュートリアル: mysql ビデオ チュートリアル)
mysql 主キー制約
主キー (PRIMARY KEY) の正式名称は「主キー制約」で、MySQL で最も頻繁に使用される制約です。通常の状況では、DBMS がテーブル内のレコードをより速く検索できるようにするために、テーブルに主キーが設定されます。
1. テーブルの作成時に主キー制約を設定する
CREATE TABLE ステートメントで、PRIMARY KEY キーワードを使用して主キーを指定します。
フィールドを定義するときに主キーを指定します。構文形式は次のとおりです:
<字段名> <数据类型> PRIMARY KEY [默认值]
例 1
tb_emp3 データ テーブルをtest_db データベースとその主キー id の SQL ステートメントと実行結果は次のとおりです。
mysql> CREATE TABLE tb_emp3 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp3; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
または、すべてのフィールドを定義した後に主キーを指定します。構文形式は次のとおりです:
[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
例 2
test_db データベース id を主キーとするテーブル、SQL 文と実行結果は以下のとおりです。
mysql> CREATE TABLE tb_emp4 -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(id) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp4; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
2. テーブル変更時に主キー制約を追加する
主キー制約は、テーブルの作成時だけでなく、追加されたテーブルを変更するとき。ただし、主キー制約として設定されたフィールドでは null 値は許可されないことに注意してください。
データ テーブルを変更するときに主キー制約を追加するための構文形式は次のとおりです:
ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
tb_emp2 データ テーブルのテーブル構造を表示します。SQL ステートメントと実行結果は次のとおりです。
mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)
例 3
データ テーブル tb_emp2 を変更し、フィールド ID を主キーとして設定する SQL ステートメントと実行結果は次のとおりです。
mysql> ALTER TABLE tb_emp2 -> ADD PRIMARY KEY(id); Query OK, 0 rows affected (0.94 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.12 sec)
通常、テーブルを変更するときにテーブル内のフィールドの主キー制約を設定する場合は、主キー制約として設定されたフィールドの値が重複できないことを確認する必要があります。空であってはなりません。そうしないと、主キー制約を設定できません。
mysql 外部キー制約
MySQL 外部キー制約 (FOREIGN KEY) はテーブルの特別なフィールドであり、主キーと一緒によく使用されます。制約。関連付けられた 2 つのテーブルの場合、関連付けられたフィールドの主キーが配置されているテーブルが主テーブル (親テーブル) となり、外部キーが配置されているテーブルが副テーブル (子テーブル) になります。
外部キーは、マスター テーブルとスレーブ テーブル間の関連付けを確立し、2 つのテーブルのデータの接続を確立し、2 つのテーブルのデータの一貫性と整合性を制約するために使用されます。たとえば、果物の屋台には、リンゴ、桃、プラム、スイカの 4 種類の果物しかありません。すると、果物を買いに果物屋に来たとき、選択できるのはリンゴ、桃、プラム、スイカだけです。は購入できません。
外部キーを定義するときは、次の規則に従う必要があります:
メイン テーブルはデータベースにすでに存在しているか、データベース内に存在している必要があります。現在作成中のテーブル。後者の場合、マスターテーブルとスレーブテーブルは同一のテーブルとなり、このようなテーブルを自己参照テーブルと呼び、この構造を自己参照整合性と呼びます。
メインテーブルには主キーを定義する必要があります。
主キーには null 値を含めることはできませんが、外部キーでは null 値が許可されます。つまり、外部キーのすべての非 null 値が指定された主キーに出現する限り、外部キーの内容は正しいことになります。
メインテーブルのテーブル名の後に列名または列名の組み合わせを指定します。この列または列の組み合わせは、メイン テーブルの主キーまたは候補キーである必要があります。
外部キーの列数は、メイン テーブルの主キーの列数と同じである必要があります。
外部キーの列のデータ型は、メイン テーブルの主キーの対応する列のデータ型と同じである必要があります。
#1. テーブルの作成時に外部キー制約を設定します。
CREATE TABLE ステートメントで、FOREIGN を渡します。外部キーを指定する KEY キー文字。具体的な構文形式は次のとおりです:
[CONSTRAINT <外键名>] FOREIGN KEY 字段名 [,字段名2,…] REFERENCES <主表名> 主键列1 [,主键列2,…]
例 4
テーブル間の外部キー関係を示すために、この例ではは test_db データベース内にあり、 に部門テーブル tb_dept1 を作成し、テーブル構造は次の表のようになります。
データ型 | 備考 | |
---|---|---|
# #INT(11) | 部門番号 | |
VARCHAR(22) | 部門名 | |
VARCHAR(22) | 部門の場所 |
以上がmysqlで主キーと外部キーの制約を記述する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。