MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

PRIMARY KEYキーワードを使わずにMySQLテーブルの主キー列を定義する方法

MySQLでは、通常PRIMARY KEYキーワードを使って主キー列を定義しますが、実はこのキーワードを使用しなくても主キーを作成できることをご存じでしょうか。

主キーが成立する仕組み

主キー(PRIMARY KEY)列には次の2つの条件が求められます。

  • 値が重複しないこと(一意性があること)
  • NULL値を許容しないこと

つまり、ある列に対してUNIQUE制約NOT NULL制約の両方を定義すれば、その列は主キーと同じ条件を満たすことになります。この場合、MySQLは明示的な主キーが存在しなければ、その列を自動的に主キー(PRI)として認識します。

実際の例

以下の例では、テーブル「Student123」を作成する際、列「RollNo」にUNIQUE制約とNOT NULL制約の両方を指定しています。DESCRIBEコマンドでテーブル構造を確認すると、「RollNo」のKey列が「PRI」と表示され、主キーとして設定されていることがわかります。

mysql> Create table Student123(RollNo INT UNIQUE NOT NULL, Name varchar(20));
Query OK, 0 rows affected (0.25 sec)

mysql> DESCRIBE Student123;

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| RollNo | int(11)     | NO   | PRI | NULL    |       |
| Name   | varchar(20) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

補足ポイント

  • この方法は、テーブル内に明示的なPRIMARY KEYが定義されていない場合に有効です。すでに主キーが存在する場合は、UNIQUE+NOT NULLの列は通常の一意インデックスとして扱われます。
  • 複数の列がUNIQUE+NOT NULLの候補となる場合、MySQLは最初に見つかった列を主キーとして採用します。
  • 可読性や保守性の観点からは、意図的に主キーを定義する場合はPRIMARY KEYキーワードを明示的に使うことが推奨されます。
  1. MySQLで特定のテーブルの主キー(列名)を取得する方法

    MySQLでは、INFORMATION_SCHEMA.KEY_COLUMN_USAGE テーブルを参照することで、任意のテーブルに設定されている主キー(PRIMARY KEY)の列名を簡単に確認できます。この記事では、サンプルテーブルを作成し、主キーの列名を取得する具体的な手順を解説します。 1. 主キーを持つサンプルテーブルの作成 まず、「CustomerId」を主キーとしたサンプルテーブル「DemoTable」を作成します。 mysql> CREATE TABLE DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT,

  2. MySQLで主キー(プライマリーキー)を削除する方法をわかりやすく解説

    MySQLでテーブルから主キー(プライマリーキー)を削除するには、ALTER TABLE文を使用します。DROP PRIMARY KEY句を組み合わせることで、既存の主キーを簡単に削除できます。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを使って手順を確認していきましょう。 手順1:サンプルテーブルを作成する まず、主キーを持つテーブルを作成します。 mysql> CREATE TABLE DemoTable -> ( -> StudentId int NOT NULL, -