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

MySQLでカラムが主キー(PRIMARY KEY)かどうかを確認する方法

MySQLにおいて、特定のカラムが主キー(プライマリキー)であるかどうかを確認したい場合は、information_schema.columnsテーブルのCOLUMN_NAMECOLUMN_KEY='PRI'を活用します。これにより、テーブル内のどのカラムが主キーとして設定されているのかを簡単に判定できます。

基本構文

カラムが主キーかどうかを判定するための基本的な構文は以下の通りです。

SELECT column_name,
       CASE WHEN column_key = 'PRI'
            THEN 'メッセージ1'
            ELSE 'メッセージ2'
       END AS エイリアス名
FROM information_schema.columns
WHERE table_schema = database()
  AND `table_name` = 'テーブル名'
ORDER BY `table_name`, ordinal_position;

この構文では、CASE式を使ってCOLUMN_KEYの値が'PRI'であれば「主キーである」というメッセージを、そうでなければ別のメッセージを表示する仕組みになっています。

サンプルテーブルの作成

実際に動作を確認するために、まずはサンプル用のテーブルを作成しましょう。

mysql> CREATE TABLE DemoTable1886
    (
    Id int NOT NULL,
    FirstName varchar(20),
    LastName varchar(20),
    Age int,
    DateOfBirth datetime,
    Education varchar(40),
    PRIMARY KEY(Id)
    );
Query OK, 0 rows affected (0.00 sec)

このテーブルでは、Idカラムが主キーとして設定されています。

主キーの判定クエリを実行する

それでは、特定のカラムが主キーであるかどうかを確認するクエリを実行してみましょう。

mysql> SELECT column_name,
    CASE WHEN column_key = 'PRI'
         THEN 'This is a Primary key Column'
         ELSE 'This is not a Primary key Column'
    END AS Output
FROM information_schema.columns
WHERE table_schema = database()
  AND `table_name` = 'DemoTable1886'
ORDER BY `table_name`, ordinal_position;

実行結果

上記のクエリを実行すると、以下のような出力が得られます。

+-------------+--------------------------------+
| COLUMN_NAME | Output                         |
+-------------+--------------------------------+
| Id          | This is a Primary key Column   |
| FirstName   | This is not a Primary key Column |
| LastName    | This is not a Primary key Column |
| Age         | This is not a Primary key Column |
| DateOfBirth | This is not a Primary key Column |
| Education   | This is not a Primary key Column |
+-------------+--------------------------------+
6 rows in set (0.00 sec)

結果の解説

出力結果を見ると、Idカラムには「This is a Primary key Column(これは主キーカラムです)」と表示され、その他のカラムには「This is not a Primary key Column(これは主キーカラムではありません)」と表示されています。このように、information_schema.columnsを参照することで、テーブル内の全カラムの中から主キーとして設定されているカラムを一目で把握できます。

なお、複合主キー(複数カラムから構成される主キー)の場合も、該当するすべてのカラムに対してCOLUMN_KEY'PRI'として返されるため、同じ方法で確認可能です。また、ユニークインデックスが設定されたカラムの場合は'UNI'、複数の値が返る場合は'MUL'と表示される点にも注意してください。

  1. JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説

    ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ

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

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