mysql sprawdź sortowanie tabeli

106

Jak mogę sprawdzić, jakie sortowanie ma tabela? IE chcę zobaczyć:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+
Scott
źródło

Odpowiedzi:

159

SHOW TABLE STATUS pokazuje informacje o tabeli, w tym sortowanie.

Na przykład SHOW TABLE STATUS where name like 'TABLE_NAME'

Lekensteyn
źródło
78

Powyższa odpowiedź jest świetna, ale w rzeczywistości nie dostarcza przykładu, który oszczędza użytkownikowi konieczności sprawdzania składni:

show table status like 'test';

Gdzie testjest nazwa tabeli.

(Poprawione zgodnie z komentarzami poniżej).

Moustafa Elqabbany
źródło
14

Możesz również wykonać zapytanie INFORMATION_SCHEMA.TABLESi pobrać sortowanie dla określonej tabeli:

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

to daje dużo bardziej czytelny wynik w przeciwieństwie do SHOW TABLE STATUStego, który zawiera wiele nieistotnych informacji.


Zwróć uwagę, że sortowanie można również zastosować do kolumn (które mogą mieć inne sortowanie niż sama tabela). Aby pobrać sortowanie kolumn dla określonej tabeli, możesz zapytać INFORMATION_SCHEMA.COLUMNS:

SELECT TABLE_SCHEMA 
    , TABLE_NAME 
    , COLUMN_NAME 
    , COLLATION_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 't_name';
Giorgos Myrianthous
źródło
2
Działa dla mariaDB 10.4
Tarator
8

Użyj tego zapytania:

SHOW CREATE TABLE tablename

Otrzymasz wszystkie informacje związane z tabelą.

Rizwan Siddiquee
źródło
3
SHOW CREATE TABLE nie pokaże sortowania. Musisz użyć opcji SHOW TABLE STATUS, jak opisano powyżej.
KateYoak
1
U mnie działa w mysql 5.5.52. ...) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=latin1Domyślam się, że może nie wyświetlać sortowania, jeśli jest ustawione na domyślne dla bazy danych w późniejszych wersjach mysql / mariadb.
DeveloperChris,
1
@DeveloperChris Pokazujesz zestaw znaków, a nie sortowanie. Dwie tabele mogą mieć ten sam zestaw znaków utf8, ale różne sortowania w utf8_general_ciporównaniu z utf8_unicode_ci. Może to powodować komunikaty o błędach, takie jak HY000, 1267, Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='... która jest wiadomością, która doprowadziła mnie do tej strony.
Dewi Morgan
0

To polecenie opisuje

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)
Praca w
źródło