SQL: Modyfikacja struktury tabeli | ALTER TABLE
Polecenie ALTER TABLE wykorzystamy do zmodyfikowania tabel z bazy rezerwacje_lotnicze o następującej strukturze:
Dodanie kolumny do istniejącej tabeli
Struktura polecenia:
ALTER TABLE nazwa_tabeli ADD nazwa_kolumny definicja_kolumny;
Przykład zastosowania:
ALTER TABLE pasazer ADD wiek int;
Tym samym tabela pasażer wzbogaciła się o jedno dodatkowe pole: wiek typu int, czyli liczbę całkowitą.
Dodając kolumnę do tabeli można ją oczywiście o wiele bardziej uściślić, podobnie jak przy tworzeniu tabeli, np. dodanie kolumny wiek do tabeli pasażer mogłoby wyglądać następująco:
ALTER TABLE pasazer ADD wiek int NOT NULL DEFAULT "18";
Dodatkowo określiliśmy, że pole nie może być puste, a domyślna jego wartość, która zostanie przypisana wszystkim istniejącym rekordom w tabeli to 18.
Możemy za jednym razem dodać kilka kolumn do istniejącej tabeli.
Struktura polecenia:
ALTER TABLE nazwa_tabeli ADD (kolumna1 definicja_kolumny, kolumna_2 definicja_kolumny, ... kolumna_n definicja_kolumny);
Przykład wykorzystania:
ALTER TABLE pasazer ADD (wiek int, plec varchar(1));
Modyfikacja kolumny w tabeli
Aby zmodyfikować parametry kolumny w istniejącej tabeli wykorzystamy opcję MODIFY polecenia ALTER TABLE
Struktura polecenia:
ALTER TABLE nazwa_tabeli MODIFY nazwa_kolumny typ_kolumny;
Przykład zastosowania:
ALTER TABLE pasazer MODIFY plec varchar(10) NOT NULL;
W efekcie czego zwiększymy długość możliwego do zapisania tekstu w kolumnie plec do 10 znaków i określimy dodatkowo, że pole to nie może być puste.
Zmiana nazwy kolumny tabeli
Aby zmienić nazwę kolumny tabeli wykorzystamy opcję CHANGE polecenia ALTER TABLE
Struktura polecenia:
ALTER TABLE nazwa_tabeli CHANGE stara_nazwa nowa_nazwa typ_danych;
Przykład zastosowania:
ALTER TABLE pasazer CHANGE wiek ilelat INT;
W efekcie czego kolumna wiek zmieniła nazwę na ilelat.
Usunięcie kolumny z tabeli
Aby usunąć kolumnę z tabeli wykorzystamy opcję DROP polecenia ALTER TABLE
Struktura polecenia:
ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny;
Przykład zastosowania:
ALTER TABLE pasazer DROP COLUMN ilelat;
W efekcie wykonanego polecenia usunięta została kolumna ilelat tabeli pasazer.
Zmiana nazwy tabeli
Aby zmienić nazwę tabeli wykorzystamy opcję RENAME polecenia ALTER TABLE
Struktura polecenia:
ALTER TABLE nazwa_tabeli RENAME TO nowa_nazwa_tabeli;
Przykład wykorzystania:
ALTER TABLE pasazer RENAME TO pasazerowie;
W wyniku czego nazwa tabeli pasazer została zmieniona na pasazerowie.
Modyfikacja kodowania znaków
Ustawienie kodowania znaków bazy danych, struktura polecenia:
ALTER DATABASE nazwa_bazy CHARACTER SET utf8 COLLATE rodzaj_kodowania;
Ustawienie kodowania znaków tabeli, struktura polecenia:
ALTER TABLE nazwa_tabeli CHARACTER SET utf8 COLLATE rodzaj_kodowania;
Konwertowanie znaków w tabeli, struktura polecenia:
ALTER TABLE nazwa_tabeli CONVERT TO CHARACTER SET utf8 COLLATE rodzaj_kodowania;
Przykład zastosowania:
ALTER DATABASE rezerwacje_lotnicze CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE adres CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE adres CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE pasazerowie CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE pasazerowie CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE rezerwacja CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE rezerwacja CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE lot CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE lot CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE status_rezerwacji CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE status_rezerwacji CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE samolot CHARACTER SET utf8 COLLATE utf8_polish_ci; ALTER TABLE samolot CONVERT TO CHARACTER SET utf8 COLLATE utf8_polish_ci;
W efekcie ustawione zostało, dla bazy danych oraz tabel, kodowanie UTF8, konktetnie utf8_polish_ci, a wszelkie znaki w bazie przekonwertowane właśnie na to kodowanie.