Como eu vejo qual conjunto de caracteres é um database / tabela / coluna do MySQL?

Qual é o conjunto de caracteres (padrão) para:

Veja como eu faria isso –

Para esquemas:

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

Para tabelas:

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

Para colunas:

 SELECT character_set_name FROM information_schema.`COLUMNS` WHERE table_schema = "schemaname" AND table_name = "tablename" AND column_name = "columnname"; 

Para colunas :

 SHOW FULL COLUMNS FROM table_name; 

Para bancos de dados :

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

Cf. esta página . E confira o manual do MySQL

Para todos os bancos de dados que você tem no servidor:

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

Saída:

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

Para um único database :

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

Saída:

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

Obtendo o agrupamento para tabelas :

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

OR – produzirá o SQL completo para criar a tabela:

mysql> show create table my_tablename


Obtendo o agrupamento de colunas :

 mysql> SHOW FULL COLUMNS FROM my_tablename; 

saída:

 +---------+---------+--------------------+ .... | field | type | collation | +---------+---------+--------------------+ .... | id | utf8 | (NULL) | | key | utf8 | latin1_swedish_ci | | value | utf8 | latin1_swedish_ci | +---------+---------+--------------------+ .... 

Para tabelas :

SHOW TABLE STATUS listará todas as tabelas.

Filtrar usando:

 SHOW TABLE STATUS where name like 'table_123'; 

Para bancos de dados :

Apenas use estes comandos:

 USE db_name; SELECT @@character_set_database; -- or: -- SELECT @@collation_database; 
 SELECT TABLE_SCHEMA,
        NOME DA MESA,
        CCSA.CHARACTER_SET_NAME COMO DEFAULT_CHAR_SET,
        NOME DA COLUNA,
        COLUMN_TYPE,
        C.CHARACTER_SET_NAME
   FROM information_schema.TABLES AS T
   JUNTAR information_schema.COLUMNS COMO USAR (TABLE_SCHEMA, TABLE_NAME)
   JUNTE-SE A information_schema.COLLATION_CHARACTER_SET_APPLICABILITY COMO CCSA
        ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
  WHERE TABLE_SCHEMA = SCHEMA ()
    AND C.DATA_TYPE IN ('enum', 'varchar', 'char', 'texto', 'mediumtext', 'texto longo')
  ORDER BY TABLE_SCHEMA,
           NOME DA MESA,
           NOME DA COLUNA
 ;

Eu sempre olho apenas para SHOW CREATE TABLE mydatabase.mytable .

Para o database, parece que você precisa examinar SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA .

Para tabelas e colunas :

 show create table your_table_name 

Para bancos de dados :

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

Exemplo de saída:

 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 | | drupal_demo1 | utf8 | utf8_general_ci | | drupal_demo2 | utf8 | utf8_general_ci | | drupal_demo3 | utf8 | utf8_general_ci | | drupal_demo4 | utf8 | utf8_general_ci | | drupal_demo5 | latin1 | latin1_swedish_ci | ... +----------------------------+---------+--------------------+ 55 rows in set (0.00 sec) mysql> 

Para bancos de dados :

 SHOW CREATE DATABASE "DB_NAME_HERE"; 

Na criação de um database (MySQL), o conjunto de caracteres padrão / agrupamento é sempre LATIN, em vez de você ter selecionado um diferente ao criar inicialmente seu database

Para ver o agrupamento padrão do database:

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

Para ver o agrupamento da tabela:

 SHOW TABLE STATUS where name like 'table_name'; 

Para ver o agrupamento das colunas:

 SHOW FULL COLUMNS FROM table_name; 

Como muitos escreveram anteriormente, SHOW FULL COLUMNS deve ser o método preferido para obter informações da coluna. O que está faltando é uma maneira de obter charset depois disso sem acessar as tabelas de metadados diretamente:

 SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field' SHOW COLLATION WHERE Collation = 'collation_you_got'