MySQLでテーブルの主キーを取得・確認する方法【SHOW INDEX活用】
MySQLでテーブルに設定された主キー(プライマリーキー)を確認したい場合は、SHOW INDEX コマンドを使用します。このコマンドを実行すると、テーブルに定義されたインデックスの一覧を取得でき、その中から主キーの情報だけを抽出することが可能です。
基本構文
主キーを取得するための基本的な構文は以下の通りです。
SHOW INDEX FROM データベース名.テーブル名 WHERE Key_name = 'PRIMARY';
ポイントは WHERE Key_name = 'PRIMARY' の条件です。これにより、インデックス一覧の中から主キーに関する行だけを取り出せます。
サンプル:複合主キーを持つテーブルを作成する
ここでは、「Id」と「RollNum」という2つのカラムを組み合わせた複合主キーを持つテーブルを例に説明します。まず、次のようにテーブルを作成しましょう。
mysql> CREATE TABLE TwoOrMorePrimary (
-> Id int,
-> Name varchar(200),
-> RollNum int,
-> PRIMARY KEY(Id, RollNum)
-> );
Query OK, 0 rows affected (0.85 sec)
PRIMARY KEY(Id, RollNum) と指定することで、2つのカラムの組み合わせに対して一意性が保証される複合主キーが定義されます。
主キー情報を取得するクエリを実行する
先ほどの構文に従って、作成したテーブルの主キーを取得してみます。
mysql> SHOW INDEX FROM business.TwoOrMorePrimary
-> WHERE Key_name = 'PRIMARY';
実行結果
+------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | +------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | twoormoreprimary | 0 | PRIMARY | 1 | Id | A | 0 | NULL | NULL | | BTREE | | | YES | NULL | | twoormoreprimary | 0 | PRIMARY | 2 | RollNum | A | 0 | NULL | NULL | | BTREE | | | YES | NULL | +------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ 2 rows in set (0.12 sec)
実行結果の見方
- Key_name:「PRIMARY」と表示されている行が主キーです。
- Seq_in_index:複合主キーにおけるカラムの順序を示します。この例では「Id」が1番目、「RollNum」が2番目です。
- Column_name:主キーを構成するカラム名です。
- Non_unique:0は重複を許さない一意なインデックスであることを意味します。主キーは必ず0になります。
- Index_type:インデックスの種類です。InnoDBの場合、通常は「BTREE」が使用されます。
このように、SHOW INDEX ... WHERE Key_name = 'PRIMARY' を使えば、単一カラムの主キーだけでなく、複合主キーを構成するカラムとその順序も一目で確認できます。スキーマ設計の調査や既存テーブルの構造把握の際にぜひ活用してください。
-
MySQLで主キー(AUTO_INCREMENT)をリセットする方法
MySQLで主キー(AUTO_INCREMENT)の値をリセットするには、まずTRUNCATE TABLEでテーブルを空にし、その後ALTER TABLEでAUTO_INCREMENTの開始値を設定します。この記事では、具体的な手順をサンプルコードとともに解説します。 1. サンプルテーブルの作成 まず、AUTO_INCREMENT付きの主キーを持つテーブルを作成します。 mysql> create table DemoTable1929 ( UserId int NOT NULL AUTO_INCREMENT, PRIMARY KEY(UserId) )
-
MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説
MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon