mysql vérifie le classement d'une table


106

Comment puis-je voir le classement d'une table? IE je veux voir:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+

Réponses:



78

La réponse ci-dessus est excellente, mais elle ne fournit pas réellement d'exemple qui évite à l'utilisateur d'avoir à rechercher la syntaxe:

show table status like 'test';

testest le nom de la table.

(Corrigé selon les commentaires ci-dessous.)


14

Vous pouvez également interroger INFORMATION_SCHEMA.TABLESet obtenir le classement pour une table spécifique:

SELECT TABLE_SCHEMA
    , TABLE_NAME
    , TABLE_COLLATION 
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 't_name';

cela donne une sortie beaucoup plus lisible contrairement à SHOW TABLE STATUScelle qui contient beaucoup d'informations non pertinentes.


Notez que le classement peut également être appliqué aux colonnes (qui peuvent avoir un classement différent de celui de la table elle-même). Pour récupérer le classement des colonnes d'une table particulière, vous pouvez interroger INFORMATION_SCHEMA.COLUMNS:

SELECT TABLE_SCHEMA 
    , TABLE_NAME 
    , COLUMN_NAME 
    , COLLATION_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 't_name';

2
Fonctionne pour mariaDB 10.4
Tarator

8

Utilisez cette requête:

SHOW CREATE TABLE tablename

Vous obtiendrez toutes les informations relatives à la table.


3
SHOW CREATE TABLE n'affichera pas le classement. Vous devez utiliser SHOW TABLE STATUS comme décrit ci-dessus.
KateYoak

1
Fonctionne pour moi dans mysql 5.5.52. ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1Je suppose qu'il peut ne pas afficher le classement s'il est défini par défaut pour la base de données dans les versions ultérieures de mysql / mariadb.
DeveloperChris

1
@DeveloperChris Ce que vous affichez est le jeu de caractères, pas le classement. Deux tables peuvent avoir le même charset utf8, mais différents classements utf8_general_civs utf8_unicode_ci. Cela peut provoquer des messages d'erreur comme HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... qui est le message qui m'a amené à cette page.
Dewi Morgan

0

Cette commande décrit

mysql> use <database name> 

mysql> show table status like '<table name>';

+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
| test | InnoDB |      11 | Dynamic    |   52 |            315 |       16384 |               0 |            0 |         0 |             59 | NULL        | 2020-04-16 23:00:00 | NULL       | utf8mb4_unicode_ci |     NULL |                |         |
+------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+---------------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.01 sec)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.