CHARACTER SET w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

CHARACTER SET oznacza zestaw znaków używany do przechowywania tekstu w bazie danych, tabeli lub kolumnie. Ma znaczenie przy zapisie liter narodowych, np. polskich znaków: ą, ć, ę, ł, ń, ó, ś, ź, ż.

Przykład w MySQL

CREATE TABLE adres (
  ulica VARCHAR(70)
) CHARACTER SET utf8;

W tym przykładzie tabela adres ma używać zestawu znaków utf8, co umożliwia przechowywanie wielu znaków spoza podstawowego alfabetu łacińskiego.

Czy CHARACTER SET jest wymagane?

Nie zawsze. Jeśli baza danych ma już ustawiony odpowiedni domyślny zestaw znaków, nie trzeba go podawać przy każdej tabeli.

Przykład bez jawnego kodowania:

CREATE TABLE adres (
  ulica VARCHAR(70)
);

Tabela zostanie wtedy utworzona z domyślnym zestawem znaków określonym dla bazy danych lub serwera.

utf8 i utf8mb4

W MySQL często spotyka się utf8, ale obecnie zalecane jest utf8mb4, ponieważ obsługuje pełniejszy zakres znaków Unicode, np. emoji i niektóre znaki specjalne.

CREATE TABLE adres (
  ulica VARCHAR(70)
) CHARACTER SET utf8mb4;

Ważne na egzaminie

  • CHARACTER SET utf8 nie jest obowiązkowe w każdym poleceniu CREATE TABLE.
  • Odpowiednie kodowanie pozwala zapisywać polskie znaki.
  • Brak jawnego CHARACTER SET nie musi oznaczać, że polskie znaki nie będą działać — zależy to od ustawień domyślnych bazy.