Co (ciąg znaków) kolumna ma swój własny zestaw znaków i metadane sortowania.
Jeśli, kiedy kolumna typ danych został określony (tj. kiedy został ostatnio utworzony lub zmieniony), nie podano jawnie zestawu znaków/porównania, a następnie dla kolumny zostanie użyty domyślny zestaw znaków i porównanie.
Jeśli, kiedy stół został określony, nie podano jawnie domyślnego zestawu znaków/porównania, wtedy domyślny zestaw znaków i sortowanie bazy danych zostaną użyte jako wartości domyślne tabeli.
Polecenia, które cytujesz w swoim pytaniu, zmieniają jedynie domyślne zestawy znaków/porównania odpowiednio dla bazy danych i tabeli. Innymi słowy, wpłyną tylko na tabele i kolumny, które zostaną później utworzone — nie wpływają na istniejące kolumny (lub dane).
Aby zaktualizować istniejące dane, należy najpierw przeczytać Zmiana zestawu znaków
sekcja strony podręcznika w ALTER TABLE
:
Aby zmienić tylko domyślne zestaw znaków dla tabeli, użyj tej instrukcji:
ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;
Słowo DEFAULT
jest opcjonalne. Domyślny zestaw znaków to zestaw znaków, który jest używany, jeśli nie określisz zestawu znaków dla kolumn dodawanych później do tabeli (na przykład za pomocą ALTER TABLE ... ADD column
).
Gdy foreign_key_checks
zmienna systemowa jest włączona, co jest ustawieniem domyślnym, konwersja zestawu znaków nie jest dozwolona w tabelach zawierających kolumnę ciągu znaków używaną w ograniczeniu klucza obcego. Rozwiązaniem jest wyłączenie foreign_key_checks
przed wykonaniem konwersji zestawu znaków. Musisz wykonać konwersję na obu tabelach objętych ograniczeniem klucza obcego przed ponownym włączeniem foreign_key_checks
. Jeśli ponownie włączysz foreign_key_checks
po konwersji tylko jednej z tabel, ON DELETE CASCADE
lub ON UPDATE CASCADE
operacja może uszkodzić dane w tabeli referencyjnej z powodu niejawnej konwersji, która zachodzi podczas tych operacji (błąd nr 45290, błąd nr 74816).