mysqlの主キーとは何ですか?

青灯夜游
リリース: 2023-04-17 10:13:51
オリジナル
7315 人が閲覧しました

MySQL では、主キーの完全な名前は「主キー制約」です。これは 1 つの列または複数の列の組み合わせです。その値はテーブル内の各行を一意に識別し、テーブルのエンティティ整合性; 主キー この機能はデータの一意性を判断することであり、主に他のテーブルとの外部キーの関連付けや、このレコードの変更と削除に使用されます。

mysqlの主キーとは何ですか?

このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。

mysql の主キーとは何ですか?

主キー (PRIMARY KEY)、「主キー制約」とも呼ばれます。

MySQL の主キー制約は、テーブル内の各行を一意に識別できる値を持つ 1 つの列または複数の列の組み合わせです。このような列はテーブルの主キーと呼ばれ、これによってテーブルのエンティティの整合性が強制されます。主キーは主に、他のテーブルの外部キーの関連付けや、このレコードの変更や削除に使用されます。

PRIMARY KEY は、MySQL で最も頻繁に使用される制約です。通常の状況では、DBMS がテーブル内のレコードをより速く検索できるようにするために、テーブルに主キーが設定されます。

主キーを使用する場合は、次の点に注意する必要があります。

  • 各テーブルには、主キーを 1 つだけ定義できます。

  • 主キー値はテーブル内の各行を一意に識別する必要があり、NULL にすることはできません。つまり、テーブル内に同じ主キー値を持つデータ行が 2 つ存在することはできません。これが一意性の原則です。

  • #フィールド名は、結合主キー フィールド テーブルに 1 回だけ出現できます。

  • 結合主キーには、不必要な冗長フィールドを含めることはできません。結合主キーのフィールドが削除されたときに、残りのフィールドで構成される主キーがまだ一意性の原則を満たしている場合、結合主キーは正しくありません。これが最小化の原理です。

テーブルの作成時に主キー制約を設定します。

データ テーブルの作成時に主キー制約を設定します。テーブルの場合は、テーブルのフィールドに主キーを設定するか、テーブルの複数のフィールドに結合主キーを設定します。ただし、どの方法を使用する場合でも、テーブル内に存在できる主キーは 1 つだけです。単一フィールドの主キーと複数フィールドの結合主キーの設定方法を説明します。

1) 単一フィールドの主キーを設定する

CREATE TABLE ステートメントで、PRIMARY KEY キーワードを使用して主キーを指定します。

フィールドを定義するときに主キーを指定します。構文形式は次のとおりです:

<字段名> <数据类型> PRIMARY KEY [默认值]
ログイン後にコピー

例 1

test_db データベースに tb_emp3 データ テーブルを作成します。 is 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 データベースに tb_emp4 データ テーブルを作成し、主キーは 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) テーブル作成時に結合主キーを設定する

いわゆる結合主キーとは、主キーがテーブル内の複数のフィールドで構成されることを意味します。 。

たとえば、学生のコース選択データ テーブルを設定する場合、学生番号を主キーとして使用する必要がありますか、それともコース番号を主キーとして使用する必要がありますか?学生番号を主キーとして使用する場合、学生は 1 つのコースのみを選択できます。コース番号を主キーとして使用する場合、コースを選択できるのは 1 人の学生だけです。明らかに、これらの状況はどちらも非現実的です。

実際、学生のコース選択スケジュールを設計する際、学生は同じコースを 1 回しか選択できないという制限があります。したがって、学生番号とコース番号を主キーとしてまとめることができ、これが結合主キーになります。

主キーは複数のフィールドで構成されています。構文形式は次のとおりです:

PRIMARY KEY [字段1,字段2,…,字段n]
ログイン後にコピー

注: 主キーが複数のフィールドで構成されている場合、主キー制約を直後に宣言することはできません。フィールド名。

例 3

データ テーブル tb_emp5 を作成します。テーブルに主キー ID がないと仮定します。従業員を一意に識別するために、主キーとして name と deptId を組み合わせることができます。 . SQL文と実行結果は以下の通りです。

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(<字段名>);
ログイン後にコピー

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)
ログイン後にコピー

例 4

データ テーブル 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)
ログイン後にコピー

通常、テーブルを変更するときにテーブル内のフィールドの主キー制約を設定する場合は、主キー制約として設定されたフィールドの値が重複できないことを確認する必要があります。空であってはなりません。そうしないと、主キー制約を設定できません。

主キー制約の削除

主キー制約がテーブルに不要な場合は、テーブルから削除する必要があります。主キー制約は、作成するよりも削除する方がはるかに簡単です。

主キー制約を削除するための構文形式は次のとおりです:

ALTER TABLE <数据表名> DROP PRIMARY KEY;
ログイン後にコピー

例 5

tb_emp2 テーブルの主キー制約を削除します。SQL ステートメントと実行結果は次のとおりです。次のように。

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート