やる気がでないときは何でもいいから書く!
開発環境
# ホスト > docker --version Docker version 20.10.8, build 3967b7d > docker-compose --version docker-compose version 1.29.2, build 5becea4c # コンテナ root@{CONTAINER_ID}:/# mysql --version mysql Ver 8.0.28 for Linux on x86_64 (MySQL Community Server - GPL)
複合キー とは
2つ以上の列で構成される主キーを複合キー(compound key)と呼びます。
O'Reilly Japan - 初めてのSQL 第3版
複合キーで調べると出席番号を例として挙げている記事が多くヒットした。
出席番号を絡めた複合キー有りのテーブルを試す。
テーブル作成
CREATE TABLE student ( `id` INT(2) NOT NULL, `sex` INT(1) NOT NULL, `name` VARCHAR(30) NOT NULL, PRIMARY KEY(`id`, `sex`) );
id(出席番号)とsex(性別)を主キーに設定した。
レコード追加
INSERT INTO student VALUES (1, 0, "Uguisudani Bob"); INSERT INTO student VALUES (1, 1, "Ueno Mary"); INSERT INTO student VALUES (2, 0, "Okachimachi Bob"); INSERT INTO student VALUES (2, 1, "Osaki Mary"); INSERT INTO student VALUES (3, 0, "Kanda Bob"); INSERT INTO student VALUES (3, 1, "Tokyo Mary");
中身確認
mysql> SELECT * FROM student; +----+-----+-----------------+ | id | sex | name | +----+-----+-----------------+ | 1 | 0 | Uguisudani Bob | | 1 | 1 | Ueno Mary | | 2 | 0 | Okachimachi Bob | | 2 | 1 | Osaki Mary | | 3 | 0 | Kanda Bob | | 3 | 1 | Tokyo Mary | +----+-----+-----------------+
テーブル作成文の確認
mysql> SHOW CREATE TABLE student\G *************************** 1. row *************************** Table: student Create Table: CREATE TABLE `student` ( `id` int NOT NULL, `sex` int NOT NULL, `name` varchar(30) NOT NULL, PRIMARY KEY (`id`,`sex`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
id(出席番号)とsex(性別)が主キーに設定されていることを確認。