mysql sprawdź sortowanie tabeli


106

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

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

Odpowiedzi:



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).


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';

2
Działa dla mariaDB 10.4
Tarator

8

Użyj tego zapytania:

SHOW CREATE TABLE tablename

Otrzymasz wszystkie informacje związane z tabelą.


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)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.