Usa SHOW CREATE TABLE
. Ad esempio:
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
Note:
- La maggior parte delle colonne ha il set di caratteri e le regole di confronto esplicitate.
- Quello che non lo fa (
dflt
) eredita queste impostazioni daDEFAULTs
per la tavola. - Ogni
CHARACTER SET
ha un confronto "predefinito". - Ogni
COLLATE
è associato esattamente a unCHARACTER SET
, ovvero la prima parte del nome di confronto. - (Non mostrato qui):i
DEFAULTs
per la tabella sono ereditati dalDATABASE
. - MySQL 8 ha per impostazione predefinita
CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
se non fai nulla. - Le versioni precedenti erano predefinite su
CHARSET=latin1 COLLATE=latin1_swedish_ci
- Il valore "0900" o "520" in alcune regole di confronto si riferisce a Unicode Standards versioni 9.0 e 5.20. Puoi dedurre da ciò che potrebbero esserci nuove regole di confronto "migliori" in futuro.