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

MySQLでPRIMARY KEY(column1, column2)を使って複合主キーのペアを作成する方法

はい、可能です。MySQLでは複数のカラムを組み合わせた複合主キー(Composite Primary Key)を定義できます。以下の構文を使用してください。

PRIMARY KEY(yourColumnName1, yourColumnName2);

実際にテーブルを作成してみよう

まず、サンプルとなるテーブルを作成します。ここでは「StudentFirstName(名)」と「StudentLastName(姓)」の2つのカラムを組み合わせて主キーとして設定します。

mysql> create table DemoTable
-> (
-> StudentFirstName varchar(100),
-> StudentLastName varchar(100),
-> StudentAge int,
-> StudentCountryName varchar(100),
-> PRIMARY KEY(StudentFirstName,StudentLastName)
-> );
Query OK, 0 rows affected (0.74 sec)

テーブル構造の確認

DESCコマンドを実行して、テーブルの構造を確認してみましょう。

mysql> desc DemoTable;

出力結果

上記のコマンドを実行すると、以下のような出力が得られます。

+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| StudentFirstName | varchar(100) | NO | PRI | NULL | |
| StudentLastName | varchar(100) | NO | PRI | NULL | |
| StudentAge | int(11) | YES | | NULL | |
| StudentCountryName | varchar(100) | YES | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

出力結果を見ると、StudentFirstNameStudentLastNameの両方のKey列が「PRI」と表示されており、この2つのカラムが組み合わせて主キーとして設定されていることがわかります。

複合主キーを利用する際のポイント

  • 複合主キーでは、個々のカラムの値が重複していても、組み合わせ全体として一意であればデータの登録が許可されます。
  • 主キーに含まれるカラムにはNULL値を挿入できません(Null列が「NO」になっている点に注目してください)。
  • 例えば「太郎・山田」という姓名の組み合わせは1件のみ登録可能で、まったく同じ組み合わせを再度挿入しようとするとエラーが発生します。
  1. MySQLクエリで「LIKE concat()」を使用することはできる?

    はい、MySQLではLIKE句とconcat()関数を組み合わせて使用することが可能です。concat()関数で動的にパターン文字列を生成し、それをLIKE句の検索条件として利用できます。実際にサンプルを使って手順を見ていきましょう。まず、テーブルを作成します。mysql> create table DemoTable ( Name varchar(50) ); Query OK, 0 rows affected (0.63 sec)次に、insertコマンドを使ってテーブルにレコードを挿入します。mysql> insert into DemoTable values(Jo

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