MySQL では、主キーの完全な名前は「主キー制約」です。これは 1 つの列または複数の列の組み合わせです。その値はテーブル内の各行を一意に識別し、テーブルのエンティティ整合性; 主キー この機能はデータの一意性を判断することであり、主に他のテーブルとの外部キーの関連付けや、このレコードの変更と削除に使用されます。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
mysql の主キーとは何ですか?
主キー (PRIMARY KEY)、「主キー制約」とも呼ばれます。
MySQL の主キー制約は、テーブル内の各行を一意に識別できる値を持つ 1 つの列または複数の列の組み合わせです。このような列はテーブルの主キーと呼ばれ、これによってテーブルのエンティティの整合性が強制されます。主キーは主に、他のテーブルの外部キーの関連付けや、このレコードの変更や削除に使用されます。
PRIMARY KEY は、MySQL で最も頻繁に使用される制約です。通常の状況では、DBMS がテーブル内のレコードをより速く検索できるようにするために、テーブルに主キーが設定されます。
主キーを使用する場合は、次の点に注意する必要があります。
各テーブルには、主キーを 1 つだけ定義できます。
主キー値はテーブル内の各行を一意に識別する必要があり、NULL にすることはできません。つまり、テーブル内に同じ主キー値を持つデータ行が 2 つ存在することはできません。これが一意性の原則です。
テーブルの作成時に主キー制約を設定します。
データ テーブルの作成時に主キー制約を設定します。テーブルの場合は、テーブルのフィールドに主キーを設定するか、テーブルの複数のフィールドに結合主キーを設定します。ただし、どの方法を使用する場合でも、テーブル内に存在できる主キーは 1 つだけです。単一フィールドの主キーと複数フィールドの結合主キーの設定方法を説明します。1) 単一フィールドの主キーを設定する
CREATE TABLE ステートメントで、PRIMARY KEY キーワードを使用して主キーを指定します。 フィールドを定義するときに主キーを指定します。構文形式は次のとおりです:<字段名> <数据类型> PRIMARY KEY [默认值]
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 [字段名]
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) テーブル作成時に結合主キーを設定する
いわゆる結合主キーとは、主キーがテーブル内の複数のフィールドで構成されることを意味します。 。 たとえば、学生のコース選択データ テーブルを設定する場合、学生番号を主キーとして使用する必要がありますか、それともコース番号を主キーとして使用する必要がありますか?学生番号を主キーとして使用する場合、学生は 1 つのコースのみを選択できます。コース番号を主キーとして使用する場合、コースを選択できるのは 1 人の学生だけです。明らかに、これらの状況はどちらも非現実的です。 実際、学生のコース選択スケジュールを設計する際、学生は同じコースを 1 回しか選択できないという制限があります。したがって、学生番号とコース番号を主キーとしてまとめることができ、これが結合主キーになります。 主キーは複数のフィールドで構成されています。構文形式は次のとおりです:PRIMARY KEY [字段1,字段2,…,字段n]
mysql> CREATE TABLE tb_emp5 -> ( -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT, -> PRIMARY KEY(name,deptId) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp5; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(25) | NO | PRI | NULL | | | deptId | int(11) | NO | PRI | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.14 sec)
テーブル変更時に主キー制約を追加
主キー制約は、テーブルの作成時に作成できるだけでなく、テーブルを変更するときに追加されます。ただし、主キー制約として設定されたフィールドでは null 値は許可されないことに注意してください。 データ テーブルを変更するときに主キー制約を追加するための構文形式は次のとおりです:ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>);
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)
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)
主キー制約の削除
主キー制約がテーブルに不要な場合は、テーブルから削除する必要があります。主キー制約は、作成するよりも削除する方がはるかに簡単です。 主キー制約を削除するための構文形式は次のとおりです:ALTER TABLE <数据表名> DROP PRIMARY KEY;
mysql> ALTER TABLE tb_emp2 -> DROP PRIMARY KEY; Query OK, 0 rows affected (0.94 sec) Records: 0 Duplicates: 0 Warnings: 0
由于主键约束在一个表中只能有一个,因此不需要指定主键名就可以删除一个表中的主键约束。
【相关推荐:mysql视频教程】
以上がmysqlの主キーとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。