ホームページ > データベース > mysql チュートリアル > mysqlに主キーを追加するにはどうすればよいですか?

mysqlに主キーを追加するにはどうすればよいですか?

青灯夜游
リリース: 2019-05-08 10:14:25
オリジナル
42254 人が閲覧しました

「PRIMARY KEY」の正式名称は「主キー制約」です。 MySQL の主キー制約は、その値がテーブル内の各行を一意に識別する列または列の組み合わせです。このような列はテーブルの主キーと呼ばれ、これによってテーブルのエンティティの整合性が強制されます。では、MySQL に主キー制約を追加するにはどうすればよいでしょうか?次の記事で紹介します。

mysqlに主キーを追加するにはどうすればよいですか?

#主キー制約は、テーブル内のデータの各行の識別子を一意に決定するためにテーブル内の主キーを定義します。主キーは、テーブル内の特定の列または複数の列の組み合わせにすることができ、複数の列で構成される主キーは複合主キーと呼ばれます。主キーは次の規則に従う必要があります。

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

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

# 列名は、複合主キー リストに 1 回だけ表示できます。

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

1. テーブルの作成時に主キー制約を追加する

CREATE TABLE ステートメントでは、主キーは PRIMARY KEY キーワードによって指定されます。

列を定義するときに主キーを指定します。構文規則は次のとおりです:

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

例: test_db データベースに tb_emp 1 データ テーブルを作成し、その主キーは id

mysql> CREATE TABLE tb_emp1
    -> (
    -> id INT(11) PRIMARY KEY,
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| 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 [字段名]
ログイン後にコピー

例: test_db データベースに tb_emp 2 データ テーブルを作成し、その主キーをkey は id

mysql> CREATE TABLE tb_emp2
    -> (
    -> 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_emp2;
+--------+-------------+------+-----+---------+-------+
| 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、テーブルの作成後に主キー制約を追加します

テーブルを作成した後、データ テーブルを変更するときに主キー制約を追加できます。構文規則は次のとおりです:

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

例: データ テーブル tb_emp3 を変更し、フィールドを変更します ID を主キーとして設定します

#

mysql> ALTER TABLE tb_emp3
    -> ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.94 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp3;
+--------+-------------+------+-----+---------+-------+
| 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)
ログイン後にコピー

3. 複合主キーを設定します

テーブルの作成時に複合主キーを追加することもできます。このとき、主キーは複数のフィールドを組み合わせて構成されます。文法規則は次のとおりです。

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

例: データ テーブル tb_emp4 を作成します。テーブルに主キー ID がないと仮定します。従業員を一意に識別するには、name と deptId を主キーとして組み合わせます

mysql> CREATE TABLE tb_emp4
    -> (
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT,
    -> PRIMARY KEY(id,deptId)
    -> );
Query OK, 0 rows affected (0.37 sec)
mysql> DESC tb_emp4;
+--------+-------------+------+-----+---------+-------+
| 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)
ログイン後にコピー

以上がmysqlに主キーを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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