sql >> Base de Datos >  >> RDS >> MariaDB

3 formas de obtener la intercalación de una columna en MariaDB

Aquí hay tres formas de devolver la intercalación de una columna en MariaDB.

El SHOW COLUMNS Declaración

El SHOW COLUMNS declaración tiene un FULL opcional palabra clave, que, cuando se usa, generará una colación de columnas y comentarios, así como los privilegios que tiene para cada columna.

Aquí hay un ejemplo de cómo ejecutar esta declaración en una tabla llamada Events :

SHOW FULL COLUMNS FROM Events;

Resultado de ejemplo:

+-----------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| Field     | Type         | Collation         | Null | Key | Default | Extra          | Privileges                      | Comment |
+-----------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+
| EventId   | int(11)      | NULL              | NO   | PRI | NULL    | auto_increment | select,insert,update,references |         |
| EventName | varchar(255) | latin5_turkish_ci | YES  |     | NULL    |                | select,insert,update,references |         |
+-----------+--------------+-------------------+------+-----+---------+----------------+---------------------------------+---------+

El information_schema.columns Mesa

Otra opción es consultar el information_schema.columns mesa. En este caso, podemos elegir solo las columnas que nos interesan:

SELECT
    column_name, 
    character_set_name, 
    collation_name 
FROM information_schema.columns
WHERE table_name = 'Events'
AND column_name = 'EventName';

Resultado de ejemplo:

+-------------+--------------------+-------------------+
| column_name | character_set_name | collation_name    |
+-------------+--------------------+-------------------+
| EventName   | latin5             | latin5_turkish_ci |
+-------------+--------------------+-------------------+

El SHOW CREATE TABLE Declaración

Otra opción es usar SHOW CREATE TABLE , que devuelve el CREATE TABLE declaración de nuestra mesa.

Sin embargo, el conjunto de caracteres y la información de intercalación de una columna solo se devuelven si difieren de la intercalación predeterminada de la tabla.

Aquí hay un ejemplo de cómo ejecutar esta declaración en una tabla llamada Pets , donde las columnas no difieren de las predeterminadas de la tabla:

SHOW CREATE TABLE Pets;

Resultado:

+-------+------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
+-------+------------------------------+
| Pets  | CREATE TABLE `Pets` (
  `PetId` int(11) NOT NULL,
  `PetTypeId` int(11) NOT NULL,
  `OwnerId` int(11) NOT NULL,
  `PetName` varchar(60) NOT NULL,
  `DOB` date DEFAULT NULL,
  PRIMARY KEY (`PetId`),
  KEY `PetTypeId` (`PetTypeId`),
  KEY `OwnerId` (`OwnerId`),
  CONSTRAINT `pets_ibfk_1` FOREIGN KEY (`PetTypeId`) REFERENCES `PetTypes` (`PetTypeId`),
  CONSTRAINT `pets_ibfk_2` FOREIGN KEY (`OwnerId`) REFERENCES `Owners` (`OwnerId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------+

En este ejemplo, la información de intercalación no difieren, por lo que no se devolvió información de intercalación para ninguna columna.

Cambiemos la intercalación en el PetName columna:

ALTER TABLE Pets 
MODIFY PetName VARCHAR(255) 
    CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL;

Y ejecuta SHOW CREATE TABLE de nuevo:

SHOW CREATE TABLE Pets;

Resultado:

+-------+------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
+-------+------------------------------+
| Pets  | CREATE TABLE `Pets` (
  `PetId` int(11) NOT NULL,
  `PetTypeId` int(11) NOT NULL,
  `OwnerId` int(11) NOT NULL,
  `PetName` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `DOB` date DEFAULT NULL,
  PRIMARY KEY (`PetId`),
  KEY `PetTypeId` (`PetTypeId`),
  KEY `OwnerId` (`OwnerId`),
  CONSTRAINT `pets_ibfk_1` FOREIGN KEY (`PetTypeId`) REFERENCES `PetTypes` (`PetTypeId`),
  CONSTRAINT `pets_ibfk_2` FOREIGN KEY (`OwnerId`) REFERENCES `Owners` (`OwnerId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------+

Esta vez podemos ver el nuevo conjunto de caracteres y la configuración de intercalación en PetName columna.