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

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' を使えば、単一カラムの主キーだけでなく、複合主キーを構成するカラムとその順序も一目で確認できます。スキーマ設計の調査や既存テーブルの構造把握の際にぜひ活用してください。

  1. 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) )

  2. MySQLで別テーブルの主キーを外部キーとして参照する方法をわかりやすく解説

    MySQLでは、あるテーブルの主キー(PRIMARY KEY)を、別のテーブルの外部キー(FOREIGN KEY)として参照することで、テーブル間にリレーション(関連付け)を構築できます。これによりデータの整合性が保たれ、参照先に存在しない値の登録を防ぐことができます。外部キー制約を追加する基本構文既存のテーブルに対して外部キー制約を追加するには、ALTER TABLE文を使用します。基本的な構文は以下のとおりです。alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecon