Как мне узнать, что такое набор символов базы данных / таблицы / столбца MySQL? - PullRequest
592 голосов
/ 26 июня 2009

Что такое (по умолчанию) кодировка для:

  • База данных MySQL

  • Таблица MySQL

  • MySQL столбец

Ответы [ 13 ]

672 голосов
/ 26 июня 2009

Вот как бы я это сделал -

Для схем:

SELECT default_character_set_name FROM information_schema.SCHEMATA 
WHERE schema_name = "schemaname";

Для таблиц:

SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,
       information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
  AND T.table_schema = "schemaname"
  AND T.table_name = "tablename";

Для столбцов:

SELECT character_set_name FROM information_schema.`COLUMNS` 
WHERE table_schema = "schemaname"
  AND table_name = "tablename"
  AND column_name = "columnname";
441 голосов
/ 26 января 2011

Для столбцов :

SHOW FULL COLUMNS FROM table_name;
212 голосов
/ 26 июня 2009

Для баз данных :

USE your_database_name;
show variables like "character_set_database";
-- or:
-- show variables like "collation_database";

Cf. эта страница . И посмотрите руководство по MySQL

121 голосов
/ 17 августа 2016

Для всех баз данных , установленных на сервере:

mysql> SELECT SCHEMA_NAME 'database', default_character_set_name 'charset', DEFAULT_COLLATION_NAME 'collation' FROM information_schema.SCHEMATA;

Выход:

+----------------------------+---------+--------------------+
| database                   | charset | collation          |
+----------------------------+---------+--------------------+
| information_schema         | utf8    | utf8_general_ci    |
| my_database                | latin1  | latin1_swedish_ci  |
...
+----------------------------+---------+--------------------+

Для одной базы данных :

mysql> USE my_database;
mysql> show variables like "character_set_database";

Выход:

    +----------------------------+---------+
    | Variable_name              |  Value  |
    +----------------------------+---------+
    | character_set_database     |  latin1 | 
    +----------------------------+---------+

Получение сопоставления для таблиц :

mysql> USE my_database;
mysql> SHOW TABLE STATUS WHERE NAME LIKE 'my_tablename';

ИЛИ - выведет полный SQL для создания таблицы:

mysql> show create table my_tablename


Получение параметров сортировки столбцов :

mysql> SHOW FULL COLUMNS FROM my_tablename;

выход:

+---------+--------------+--------------------+ ....
| field   | type         | collation          |
+---------+--------------+--------------------+ ....
| id      | int(10)      | (NULL)             |
| key     | varchar(255) | latin1_swedish_ci  |
| value   | varchar(255) | latin1_swedish_ci  |
+---------+--------------+--------------------+ ....
62 голосов
/ 26 июня 2009

Для таблиц :

SHOW TABLE STATUS перечислит все таблицы.

Фильтр с использованием:

SHOW TABLE STATUS where name like 'table_123';
44 голосов
/ 21 мая 2015

Для баз данных :

Просто используйте эти команды:

USE db_name;
SELECT @@character_set_database;
-- or:
-- SELECT @@collation_database;
30 голосов
/ 26 января 2011
SELECT TABLE_SCHEMA,
       TABLE_NAME,
       CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET,
       COLUMN_NAME,
       COLUMN_TYPE,
       C.CHARACTER_SET_NAME
  FROM information_schema.TABLES AS T
  JOIN information_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME)
  JOIN information_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA
       ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
 WHERE TABLE_SCHEMA=SCHEMA()
   AND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext')
 ORDER BY TABLE_SCHEMA,
          TABLE_NAME,
          COLUMN_NAME
;
24 голосов
/ 12 января 2018

Чтобы увидеть параметры сортировки базы данных по умолчанию:

USE db_name;
SELECT @@character_set_database, @@collation_database;

Чтобы увидеть сопоставление таблицы:

SHOW TABLE STATUS where name like 'table_name';

Чтобы увидеть сортировку столбцов:

SHOW FULL COLUMNS FROM table_name;
22 голосов
/ 26 июня 2009

Я всегда просто смотрю на SHOW CREATE TABLE mydatabase.mytable.

Похоже, что для базы данных вам нужно посмотреть SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA.

20 голосов
/ 26 июня 2009

Для таблиц и столбцов :

show create table your_table_name
...