检查表的排序规则

我怎样才能看到一个表有哪些排序规则呢? 例如,我想看到:

+-----------------------------+
|  table  |     collation     |
|-----------------------------|
| t_name  |  latin_general_ci |
+-----------------------------+
128492 次浏览

SHOW TABLE STATUS 显示有关表的信息,包括排序规则。

例如 SHOW TABLE STATUS where name like 'TABLE_NAME'

上面的答案非常棒,但是它并没有提供一个实际的例子来帮助用户避免查找语法:

show table status like 'test';

其中 test是表名。

(根据下面的评论更正)

使用以下查询:

SHOW CREATE TABLE tablename

您将获得与表相关的所有信息。

检查特定表的排序规则

您可以查询 INFORMATION_SCHEMA.TABLES并获取特定表的排序规则:

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

与包含大量不相关信息的 SHOW TABLE STATUS相比,它提供了更具可读性的输出。


检查列的排序规则

注意,排序规则也可以应用于列(这些列的排序规则可能与表本身不同)。要获取特定表的列排序规则,可以查询 INFORMATION_SCHEMA.COLUMNS:

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

有关详细信息,请参阅文章 如何检查和更改 MySQL 表的排序规则

检查整个数据库的排序规则

如果有人在这里寻找 还有检查整个数据库排序规则的方法:

  1. use mydatabase;(其中 mydatabase是要检查的数据库的名称)
  2. SELECT @@character_set_database, @@collation_database;

你应该看到这样的结果:

+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8mb4                  | utf8mb4_unicode_ci   |
+--------------------------+----------------------+
1 row in set (0.00 sec)