Poprawnie – polecenie ALTER TABLE ... MODIFY COLUMN w MySQL służy do modyfikowania istniejącej kolumny, a nie do jej tworzenia czy usuwania. W podanym przykładzie baza danych szuka tabeli o nazwie `transport`, a następnie zmienia definicję kolumny `rok_produkcji` tak, aby jej typ danych był `INT`. Jeśli kolumna już istnieje (a musi istnieć, żeby MODIFY zadziałało), to po wykonaniu polecenia dalej będzie miała tę samą nazwę, ale jej typ i właściwości zostaną nadpisane nową definicją. W MySQL warto pamiętać, że przy MODIFY COLUMN trzeba podać pełną definicję kolumny, nie tylko sam typ. Czyli jeśli wcześniej była np. NOT NULL albo miała domyślną wartość, to dobra praktyka jest napisać coś w stylu: `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT NOT NULL DEFAULT 2000;` – inaczej można przypadkiem zgubić część ustawień. W praktyce takie polecenia stosuje się przy zmianach w projekcie bazy: np. najpierw kolumna jest typu VARCHAR, bo ktoś przechowuje tam rok jako tekst, a potem, zgodnie z lepszymi zasadami projektowania, zmienia się to na typ liczbowy INT, żeby można było łatwo filtrować, sortować, robić warunki typu `WHERE rok_produkcji > 2015`. Z mojego doświadczenia dobrze jest przed taką zmianą sprawdzić, czy wszystkie dane da się bezpiecznie skonwertować na liczbę, bo jeśli w kolumnie są jakieś śmieciowe wartości tekstowe, to MySQL może je obciąć albo zamienić na 0, co później robi bałagan w raportach. W środowiskach produkcyjnych takie ALTER TABLE najlepiej wykonywać po zrobieniu kopii zapasowej i często w oknie serwisowym, bo przy dużych tabelach operacja może chwilowo blokować dostęp do danych.
Zapytanie `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;` operuje na już istniejącej tabeli i istniejącej kolumnie. Kluczowe są tu dwa słowa: ALTER TABLE oraz MODIFY COLUMN. ALTER TABLE oznacza modyfikację struktury tabeli, a nie jej tworzenie ani usuwanie. To polecenie zakłada, że tabela `transport` już jest w bazie. Dlatego interpretacja, że ta komenda tworzy tabelę, wynika często z mylenia jej z `CREATE TABLE`, które faktycznie służy do zakładania nowych tabel z określoną listą kolumn i ich typów. Podobnie jest z samą kolumną. MODIFY COLUMN nie usuwa kolumny – do tego służy `DROP COLUMN`. Usunięcie kolumny polega na całkowitym pozbyciu się jej definicji i wszystkich przechowywanych tam danych. Tutaj nic takiego się nie dzieje. Kolumna `rok_produkcji` dalej istnieje, tylko jej definicja jest zmieniana. Typowy błąd myślowy polega na tym, że ktoś widzi słowo MODIFY i kojarzy je z „przebudowaniem” kolumny, czasem nawet z jej zamianą na nową. W rzeczywistości MySQL po prostu aktualizuje metadane kolumny w strukturze tabeli, a dane – w miarę możliwości – konwertuje do nowego typu. Kolejna myląca kwestia to dodawanie kolumn. Do tego służy `ADD COLUMN`, np. `ALTER TABLE transport ADD COLUMN rok_produkcji INT;`. Tylko taka forma faktycznie tworzy nową kolumnę w tabeli. W podanym poleceniu nie ma słowa ADD, więc zakładanie, że kolumna zostanie dodana, jest po prostu niezgodne ze składnią SQL. Moim zdaniem te pomyłki biorą się głównie z powierzchownego kojarzenia słów kluczowych, bez dokładnego przeczytania dokumentacji. W pracy z bazami danych warto wyrobić sobie nawyk rozróżniania: CREATE – tworzy, ALTER – zmienia, DROP – usuwa, a wewnątrz ALTER: ADD – dodaje element struktury, MODIFY/ALTER COLUMN – zmienia istniejący element, DROP COLUMN – usuwa go. Takie jasne mapowanie poleceń na ich skutki bardzo ułatwia później bezpieczne modyfikowanie schematu bazy, zwłaszcza na systemach produkcyjnych, gdzie każdy błąd w DDL może mieć realne konsekwencje dla danych.