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

MySQLデータベースのテーブルで複合主キーを識別する方法

MySQLでテーブルに複合主キー(コンポジットプライマリーキー)が設定されているかどうかを確認したい場合、information_schema.KEY_COLUMN_USAGE テーブルに対して集計関数 COUNT(*) を使用する方法が便利です。クエリの結果が1より大きい値を返した場合、そのテーブルには複数のカラムから構成される複合主キーが設定されていることになります。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable1324
-> (
-> StudentId int,
-> StudentName varchar(20),
-> StudentAge int,
-> StudentCountryName varchar(20)
-> );
Query OK, 0 rows affected (0.52 sec)

複合主キーの追加

次に、3つのカラム(StudentId、StudentAge、StudentCountryName)を組み合わせた複合主キーをテーブルに追加します。

mysql> alter table DemoTable1324 ADD CONSTRAINT constr_IdAgeCountry PRIMARY KEY (StudentId, StudentAge, StudentCountryName);
Query OK, 0 rows affected (1.29 sec)
Records: 0 Duplicates: 0 Warnings: 0

複合主キーを識別するクエリ

MySQLデータベース内の任意のテーブルに複合主キーが設定されているかを調べるには、以下のクエリを実行します。information_schema.KEY_COLUMN_USAGE は、キーの制約情報を格納しているシステムビューで、主キーや外部キーに含まれるカラムの一覧を取得できます。

mysql> select count(*) AS Total
-> from information_schema.KEY_COLUMN_USAGE
-> where table_name='DemoTable1324' and table_schema=database();

実行結果

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

+-------+
| Total |
+-------+
| 3 |
+-------+
1 row in set, 2 warnings (0.76 sec)

結果として「3」が返されました。これは、複合主キーが3つのカラムで構成されていることを示しています。もし結果が「1」であれば単一カラムの主キー、「0」であれば主キーが設定されていないことを意味します。なお、table_schema=database() の条件を指定することで、現在接続中のデータベースに限定して検索できる点もポイントです。

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

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

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

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