SQL

【MySQL】一意制約(UNIQUE)を作成・削除する

2021年2月17日

一意制約(UNIQUE)の作成

一意制約(英:UNIQUE、ユニーク制約)は、「ALTER TABLE」で作成できます。

UNIQUE追加の基本構文

ALTER  TABLE  テーブル名  ADD  CONSTRAINT  制約名  UNIQUE(カラム名);

※「CONSTRAINT  制約名」は省略可。省略した場合はカラム名が制約名となる。

一意制約(UNIQUE)の作成例

以下は「ALTER TABLE」を使い「sample」テーブルの「name」に一意制約(UNIQUE)を追加する例です。

■一意制約(UNIQUE)作成前

> SHOW CREATE TABLE sample;
CREATE TABLE `sample` (
  `id` int NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

■一意制約(UNIQUE)作成の例

ALTER TABLE sample ADD CONSTRAINT UK1 UNIQUE(name);

■一意制約(UNIQUE)作成後

> SHOW CREATE TABLE sampledb.sample;
CREATE TABLE `sample` (
  `id` int NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

一意制約(UNIQUE)を作成した結果、「sample」テーブルのカラム「name」に「UK1」という制約名で一意制約(UNIQUE)が作成されました。

スポンサーリンク

一意制約(UNIQUE)の削除

一意制約(UNIQUE制約)は、「ALTER TABLE」で削除できます。

UNIQUE削除の基本構文

ALTER  TABLE  テーブル名  DROP  CONSTRAINT  制約名;

または

ALTER  TABLE  テーブル名  DROP  INDEX  制約名;

一意制約(UNIQUE)の削除例

以下は「ALTER TABLE」を使い「sample」テーブルの「name」に付与されている一意制約(UNIQUE)を削除する例です。

■一意制約(UNIQUE)削除前

> SHOW CREATE TABLE sampledb.sample;
CREATE TABLE `sample` (
  `id` int NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UK1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

■一意制約(UNIQUE)削除の例

ALTER TABLE sampledb.sample DROP CONSTRAINT UK1;

■一意制約(UNIQUE)削除後

> SHOW CREATE TABLE sample;
CREATE TABLE `sample` (
  `id` int NOT NULL,
  `address` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `name` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

一意制約(UNIQUE)を削除した結果、「sample」テーブルのカラム「name」に付与されていた「UK1」というUNIQUE制約が削除されました。

helpful