Rozdział 10. ♦ Podstawy SQL 291
definicja_nowej_kolumny. Opcje FIRST i AFTER pozwalają na umiejscowienie nowej kolumny w strukturze tabeli;
♦ [DEFAULT] CHARACTER SET nazwa [COLLATE collationjiame] —Ustala domyślny zestaw znaków dla tabeli. Opcja COLLATE pozwala na zdefiniowanie kolejności znaków, dla danej strony kodowej, wykorzystywanej podczas ich porównywania i sortowania.
♦ C0IWER1 TO CHARACTER SET nazwa [COLLATE collationjiame] —Wykonuje konwersję zestawu znaków (strony kodowej). Opcja COLLATE pozwala
na zdefiniowanie kolejności znaków, dla danej strony kodowej, wykorzystywanej podczas porównywania i sortowania.
♦ MODIFY [COLUMN] defi ni cja_kol umny [FIRST | AFTER nazwa) — Modyfikuje strukturę kolumny, nie pozwala jednak na zmianę jej nazwy. Opcje FIRST
i AFTER pozwalają na umiejscowienie nowej kolumny w strukturze tabeli;
♦ DROP [COLUMN] nazwa — Usuwa kolumnę nazwa;
♦ DROP PRIMARY KEY — Usuwa z tabeli klucz podstawowy;
♦ DROP INDEX nazwa — Usuwa indeks nazwa;
♦ DROP FOREIGN KEY nazwa — Usuwa klucz obcy nazwa;
♦ ORDER BY nazwa — Pozwala na ustawienie wierszy w porządku określonym przez dane w kolumnie nazwa;
♦ RENAME [TO] nowajiazwa — Zmienia nazwę tabeli na nowa_nazwa.
Zmiany tego typu wykonywane są w taki sposób, że najpierw powstaje tymczasowa kopia tabeli, w kopii wprowadzana jest żądana zmiana, a następnie, jeśli operacja zakończy się powodzeniem, stara tabela jest usuwana, a kopia tabeli otrzymuje nazwę usuniętej tabeli. Spróbujmy wykonać kilka przykładów, aby w praktyce przekonać się, jak działają niektóre z wymienionych wyżej konstrukcji języka. Utwórzmy tabelę Książki, wykorzystując do tego celu instrukcję SQL w postaci:
CREATE TABLE Książki(
Ksiazkald INTEGER.
AutorId INTEGER.
Tytuł VARCHAR(15)
):
Szybko zauważymy, że nie zdefiniowaliśmy tutaj klucza podstawowego, którym powinna być kolumna Ksiazkald. Trzeba zatem naprawić to niedopatrzenie wydając polecenie:
ALTER TABLE Książki ADD PRIMARY KEY (Ksiazkald);
Po jego wydaniu na ekranie zobaczymy komunikat: mysql> ALTER TABLE Książki ADD PRIMARY KEY (Ksiazkald):
Query OK. O rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0