sql >> Databáze >  >> RDS >> MariaDB

Nastavte znakovou sadu a řazení tabulky v MariaDB

Znakovou sadu a řazení můžete zadat na různých úrovních v MariaDB. Můžete je zadat na úrovni připojení, na úrovni serveru, na úrovni databáze, na úrovni tabulky a dokonce na úrovni sloupce.

Ve svých dotazech můžete také určit řazení, aby přepsalo jakékoli řazení, které bylo dříve zadáno na výše uvedených úrovních.

Chcete-li nastavit znakovou sadu a řazení na úrovni tabulky, použijte CREATE TABLE nebo ALTER TABLE příkazu (v závislosti na tom, zda tabulku vytváříte nebo ji upravujete).

Při vytváření tabulky

Zde je příklad nastavení řazení a znakové sady při vytváření tabulky:

CREATE TABLE Products ( 
    ProductId CHAR(10), 
    ProductName VARCHAR(255) NOT NULL, 
    PRIMARY KEY (ProductId)) 
    CHARACTER SET latin1 
    COLLATE latin1_general_ci;

Tím se vytvoří tabulka s názvem Products s latin1 znaková sada a řazení latin1_general_ci .

Změnit existující tabulku

Zde je příklad změny řazení a znakové sady na existující tabulce:

ALTER TABLE Products 
CONVERT TO CHARACTER SET utf8 COLLATE utf8_spanish_ci;

Nyní používá nové řazení a znakovou sadu.

Je také možné vynechat CONVERT TO část:

ALTER TABLE Products 
CHARACTER SET utf8 
COLLATE utf8_spanish_ci;

Řazení musí být platné pro znakovou sadu

Při nastavování řazení i znakové sady se musíte ujistit, že řazení je platné pro vybranou znakovou sadu a naopak. Pokud ne, vrátí se chyba.

Zde je příklad zadání použití neplatného řazení pro zadanou znakovou sadu:

ALTER TABLE Products 
CHARACTER SET latin1 
COLLATE utf8_spanish_ci;

Výsledek:

ERROR 1253 (42000): COLLATION 'utf8_spanish_ci' is not valid for CHARACTER SET 'latin1'

Říká nám, že naše zvolené řazení není platné pro námi vybranou specifikovanou znakovou sadu.

Viz Úplný seznam porovnávání podporovaných MariaDB nebo Úplný seznam znakových sad podporovaných MariaDB, kde najdete seznam shodných porovnávání a znakových sad.

Zadání pouze řazení nebo znakové sady

Je v pořádku zadat pouze řazení nebo pouze znakovou sadu (nebo žádnou):

  • Pokud je poskytnuta pouze znaková sada, použije se výchozí řazení pro tuto znakovou sadu.
  • Pokud je poskytnuto pouze řazení, použije se přidružená znaková sada.
  • Pokud není poskytnuto řazení ani znaková sada, použije se výchozí tabulka.

Převod na znakovou sadu, která vyžaduje více bajtů

Pro VARCHAR nebo TEXT sloupců, CONVERT TO CHARACTER SET v případě potřeby změní typ dat, aby se zajistilo, že nový sloupec je dostatečně dlouhý, aby se do něj vešlo tolik znaků jako do původního sloupce.

Například ascii TEXT sloupec vyžaduje jeden bajt na znak, takže sloupec může obsahovat až 65 535 znaků. Pokud je sloupec převeden na utf8, mohou být pro každý znak vyžadovány až 3 bajty, takže sloupec bude převeden na MEDIUMTEXT (která má maximální délku 16 777 215), takže bude schopna pojmout stejný počet znaků.

Pokud nechcete, aby k takovým změnám datových typů docházelo, použijte MODIFY místo toho na jednotlivých sloupcích.

Například:

ALTER TABLE Products 
MODIFY ProductName VARCHAR(255) 
CHARACTER SET utf8; 

Převod na binární

CONVERT TO CHARACTER SET binary převede CHAR , VARCHAR a TEXT sloupců na BINARY , VARBINARY a BLOB resp.

Jakmile to uděláte, tyto sloupce již nebudou mít znakovou sadu. Také na ně již nebude mít vliv budoucí CONVERT TO CHARACTER SET prohlášení.

Kontrola řazení a znakových sad v MariaDB

Existují různé způsoby, jak zkontrolovat řazení a znakové sady v MariaDB, v závislosti na úrovni, kterou kontrolujete (server, databáze, tabulka, sloupec, připojení atd.). Příklady viz Zobrazit řazení v MariaDB.


  1. Konfigurace PostgreSQL pro kontinuitu podnikání

  2. Ladění příkazů SQL v SQL Developer

  3. UPPER() – Převod na velká písmena v PostgreSQL

  4. Jak změnit datový typ sloupce v databázi SQL bez ztráty dat