Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je déterminer le jeu de caractères/classement par défaut dans mon MySQL

Utilisez SHOW CREATE TABLE . Par exemple :

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

Remarques :

  • La plupart des colonnes ont le jeu de caractères et le classement en toutes lettres.
  • Celui qui ne le fait pas (dflt ) hérite de ces paramètres des DEFAULTs pour le tableau.
  • Chaque CHARACTER SET a un classement "par défaut".
  • Chaque COLLATE est associé à exactement un CHARACTER SET , à savoir la première partie du nom de la collation.
  • (Non affiché ici) :les DEFAULTs pour la table sont hérités de la DATABASE .
  • MySQL 8 utilise par défaut CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci si vous ne faites rien.
  • Les anciennes versions par défaut étaient CHARSET=latin1 COLLATE=latin1_swedish_ci
  • Le "0900" ou "520" dans certains classements fait référence aux versions 9.0 et 5.20 des normes Unicode. Vous pouvez en déduire qu'il pourrait y avoir de nouveaux "meilleurs" classements à l'avenir.