Aby w języku SQL (MySQL) zmienić nazwę tabeli klienci na odbiorcy, należy użyć następującego kodu
A. CHANGE TABLE klienci TO odbiorcy;
B. CHANGE TABLE klienci RENAME odbiorcy;
C. ALTER TABLE klienci CHANGE odbiorcy;
D. ALTER TABLE klienci RENAME TO odbiorcy;
Instrukcja ALTER TABLE klienci RENAME TO odbiorcy; jest właściwa, ponieważ w MySQL zmiana nazwy istniejącej tabeli jest operacją DDL, czyli operacją zmieniającą strukturę bazy danych, a nie same rekordy. Polecenie ALTER TABLE wskazuje, że modyfikujemy obiekt tabeli, klienci to dotychczasowa nazwa, a RENAME TO odbiorcy określa nową nazwę tabeli. W praktyce takie polecenie przydaje się np. gdy projekt się rozwija i nazwa tabeli ma lepiej opisywać jej rolę biznesową. Moim zdaniem to jedna z tych komend, które wyglądają prosto, ale warto ją wykonywać ostrożnie. Przed zmianą nazwy dobrze sprawdzić zapytania w aplikacji, widoki, procedury, klucze obce, uprawnienia oraz konfigurację ORM, jeżeli projekt go używa. W MySQL istnieje też składnia RENAME TABLE klienci TO odbiorcy;, ale w tym pytaniu poprawna jest wersja z ALTER TABLE. Dobra praktyka branżowa: najpierw kopia zapasowa albo migracja na środowisku testowym, potem dopiero produkcja, bo aplikacja odwołująca się do starej tabeli po prostu zacznie zgłaszać błędy.
W błędnych wariantach widać dość typowe pomieszanie składni SQL z intuicyjnym angielskim opisem operacji. Słowo CHANGE brzmi sensownie, bo przecież chcemy coś zmienić, ale w MySQL nie istnieje polecenie CHANGE TABLE jako samodzielna instrukcja do zmiany nazwy tabeli. Parser SQL oczekuje konkretnych słów kluczowych w określonej kolejności, a nie dowolnego zdania typu zmień tabelę z tej nazwy na tamtą. To jest częsty błąd u osób, które uczą się SQL-a bardziej na pamięć niż przez rozumienie grup poleceń DDL. Jeszcze bardziej mylące jest ALTER TABLE klienci CHANGE odbiorcy;. W MySQL fragment ALTER TABLE ... CHANGE faktycznie występuje, ale służy głównie do zmiany nazwy lub definicji kolumny, na przykład trzeba podać starą nazwę kolumny, nową nazwę i typ danych. Nie służy to do przemianowania całej tabeli. Samo dopisanie RENAME po CHANGE też nie naprawia sprawy, bo taka kombinacja słów kluczowych nie odpowiada składni MySQL. Dobra zasada jest taka: dla tabeli myśl o ALTER TABLE ... RENAME TO ... albo RENAME TABLE ... TO ..., a dla kolumny dopiero o ALTER TABLE ... CHANGE ... wraz z pełną definicją kolumny. Z mojego doświadczenia, rozdzielenie operacji na obiektach bazy danych bardzo pomaga: tabela, kolumna, rekord i indeks mają swoje własne, dość sztywne reguły składni.