Зачем в MySQL при удалении поля в таблице используют COLUMN?

У меня есть таблица в phpMyAdmin, когда я хочу удалить из нее столбец, я использую:

ALTER TABLE pepole DROP bio;

Но когда я смотрю примеры из интернета, вижу что люди используют следущее:

ALTER TABLE pepole DROP COLUMN bio; 

Я понимаю что COLUMN - это столбец, но обязательно ли его использовать, если у меня и так все работает?


Ответы (2 шт):

Автор решения: RSK
ALTER TABLE pepole DROP bio;

это сокращенная форма запроса, они оба выполняют одинаковое действие и можно пользовать и первым запросом и вторым

→ Ссылка
Автор решения: Akina

ALTER TABLE DROP без указания конкретного объекта может удалять как поле, так и индекс. При отсутствии опционального ключевого слова и наличии объектов обоих типов с таким именем - фактически удаляется поле, а не индекс, но это не документировано (или я не нашёл).

Но это надо знать и помнить. Использование опционального ключевого слова полностью снимает неоднозначность того, что вы собственно удаляете.

CREATE TABLE test (
  id INT,
  column1 INT,
  column2 INT,
  column3 INT,
  KEY column1 (column1),
  KEY column2 (column2),
  KEY column3 (column3)
);
SHOW CREATE TABLE test;
Table Create Table
test CREATE TABLE `test` (
  `id` int DEFAULT NULL,
  `column1` int DEFAULT NULL,
  `column2` int DEFAULT NULL,
  `column3` int DEFAULT NULL,
  KEY `column1` (`column1`),
  KEY `column2` (`column2`),
  KEY `column3` (`column3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
-- Явно удаляем COLUMN, удаляется и соответствующий индекс
ALTER TABLE test DROP COLUMN column1;
-- Явно удаляем индекс, поле не удаляется
ALTER TABLE test DROP INDEX column2;
-- Не указываем, что удалять, удаляются и поле, и индекс
ALTER TABLE test DROP column3;
SHOW CREATE TABLE test;
Table Create Table
test CREATE TABLE `test` (
  `id` int DEFAULT NULL,
  `column2` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

fiddle

Относитесь к использованию опциональных ключевых слов как к неявному документированию.

→ Ссылка