Love澤's Room

技術系ネタをまとめていたブログ。カテゴリにこだわらず更新していこうかと思います。

MariaDB(Mysql)でキー情報を削除する方法

削除前に知るべき情報

キーのインデックスを知る必要があります。

MariaDB [hogehoge]> show create table hugahuga\G
*************************** 1. row ***************************
       Table: hugahuga
Create Table: CREATE TABLE `hugahuga` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `author_id` int(11) NOT NULL,
  `section_id` int(11) NOT NULL,
  `add_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `author_id` (`author_id`),
  KEY `section_id` (`section_id`),
  CONSTRAINT `hugahuga_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `foo` (`id`),
  CONSTRAINT `hugahuga_ibfk_2` FOREIGN KEY (`section_id`) REFERENCES `bar` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

インデックスは、主キーの場合だと"PRIMARY KEY (`id`)"の"id"が該当し、外部キーの場合だと"CONSTRAINT `hugahuga_ibfk_1`"の"hugahuga_ibfk_1"などが該当します。主キーでも外部キーでも無いけれどキーに設定されているものは"KEY `author_id` (``)"の"author_id"が該当します。

このインデックスを用いてキーを削除していきます。

主キーやただのキーの削除

indexをdropする。

MariaDB [hogehoge]> alter table hugahuga drop index id;
Query OK, 0 rows affected, 1 warning (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 1

MariaDB [hogehoge]> alter table hugahuga drop index section_id;
Query OK, 0 rows affected, 1 warning (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 1

foreign keyの削除

foreign keyをdropする

MariaDB [hogehoge]> alter table hugahuga drop foreign key hugahuga_ibfk_1;