Use
SHOW CREATE TABLE
. Por exemplo:CREATE TABLE a (
dflt VARCHAR(11),
cs VARCHAR(11) CHARACTER SET latin1,
cola VARCHAR(11) COLLATE utf8mb4_hungarian_ci,
cc VARCHAR(11) CHARACTER SET latin1 COLLATE latin1_bin,
colb VARCHAR(11) COLLATE latin1_bin
);
SHOW CREATE TABLE a\G
mysql> SHOW CREATE TABLE a\G
*************************** 1. row ***************************
Table: a
Create Table: CREATE TABLE `a` (
`dflt` varchar(11) DEFAULT NULL,
`cs` varchar(11) CHARACTER SET latin1 COLLATE latin1_swedish_ci DEFAULT NULL,
`cola` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_hungarian_ci DEFAULT NULL,
`cc` varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
`colb` varchar(11) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Notas:
- A maioria das colunas tem o charset e o agrupamento por extenso.
- Aquele que não tem (
dflt
) herda essas configurações deDEFAULTs
para a mesa. - Cada
CHARACTER SET
tem um agrupamento "padrão". - Cada
COLLATE
está associado a exatamente umCHARACTER SET
, ou seja, a primeira parte do nome do agrupamento. - (Não mostrado aqui):os
DEFAULTs
para a tabela são herdados doDATABASE
. - O padrão do MySQL 8 é
CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
se você não fizer nada. - Versões mais antigas padronizadas para
CHARSET=latin1 COLLATE=latin1_swedish_ci
- O "0900" ou "520" em alguns agrupamentos refere-se aos padrões Unicode versões 9.0 e 5.20. Você pode deduzir disso que pode haver novos agrupamentos "melhores" no futuro.