sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo averiguar el conjunto de caracteres/intercalación predeterminados en mi MySQL?

Utilice SHOW CREATE TABLE . Por ejemplo:

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:

  • La mayoría de las columnas tienen el juego de caracteres y la intercalación explicados.
  • El que no (dflt ) hereda esa configuración de los DEFAULTs para la mesa
  • Cada CHARACTER SET tiene una intercalación "predeterminada".
  • Cada COLLATE está asociado con exactamente un CHARACTER SET , es decir, la primera parte del nombre de colación.
  • (No se muestra aquí):Los DEFAULTs para la tabla se heredan de la DATABASE .
  • MySQL 8 por defecto es CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci si no haces nada.
  • Las versiones anteriores tenían como valor predeterminado CHARSET=latin1 COLLATE=latin1_swedish_ci
  • El "0900" o "520" en algunas colaciones se refiere a las versiones 9.0 y 5.20 de los estándares Unicode. Puede inferir de esto que puede haber nuevas colaciones "mejores" en el futuro.