web-dev-qa-db-fra.com

Comment voir quel caractère est une base de données / table / colonne MySQL?

Quel est le charset (par défaut) pour:

  • Base de données MySQL

  • Table MySQL

  • Colonne MySQL

602
Rory

Voici comment je le ferais -

Pour les schémas:

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

Pour les tableaux:

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

Pour les colonnes:

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

Pour colonnes:

SHOW FULL COLUMNS FROM table_name;
448
serhat

Pour bases de données :

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

Cf. cette page . Et consultez le manuel MySQL

215
J. Polfer

Pour toutes les bases de données vous avez sur le serveur:

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

Sortie:

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

Pour un base de données unique:

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

Sortie:

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

Obtenir le classement pour les tableaux:

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

OU - affichera le code SQL complet pour la table de création:

mysql> show create table my_tablename


Obtenir le classement de colonnes:

mysql> SHOW FULL COLUMNS FROM my_tablename;

sortie:

+---------+--------------+--------------------+ ....
| field   | type         | collation          |
+---------+--------------+--------------------+ ....
| id      | int(10)      | (NULL)             |
| key     | varchar(255) | latin1_swedish_ci  |
| value   | varchar(255) | latin1_swedish_ci  |
+---------+--------------+--------------------+ ....
131
Nabeel Ahmed

Pour tables:

SHOW TABLE STATUS listera toutes les tables.

Filtrer à l'aide de:

SHOW TABLE STATUS where name like 'table_123';
63
Vex

Pour bases de données:

Il suffit d'utiliser ces commandes:

USE db_name;
SELECT @@character_set_database;
-- or:
-- SELECT @@collation_database;
44
DC-
 SELECT TABLE_SCHEMA, 
 TABLE_NAME, 
 CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET, 
 COLUMN_NAME, 
 COLUMN_TYPE, 
 C.CHARTERS. ____.] FROM information_schema.TABLES AS T 
 JOIN informations_schema.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME) 
 JOIN informations_schema.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA 
 ON (T.TABLE_COLLATION = CCSA. COLLATION_NAME) 
 WHERE TABLE_SCHEMA = SCHEMA () 
 ET C.DATA_TYPE IN ('enum', 'varchar', 'char', 'text', 'mediumtext', 'longtext') 
 ORDER BY TABLE_SCHEMA, 
 TABLE_NAME, 
 COLUMN_NAME 
; 
31
Eric

Pour voir le classement par défaut de la base de données:

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

Pour voir la collation de la table:

SHOW TABLE STATUS where name like 'table_name';

Pour voir la collation des colonnes:

SHOW FULL COLUMNS FROM table_name;
24
user1012513

Je regarde toujours simplement SHOW CREATE TABLE mydatabase.mytable.

Pour la base de données, il apparaît que vous devez regarder SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA.

23
chaos

Pour tables et colonnes:

show create table your_table_name
21
James

Pour bases de données:

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

Exemple de sortie:

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> 
17
sjas

Pour bases de données:

SHOW CREATE DATABASE "DB_NAME_HERE";

Lors de la création d'une base de données (MySQL), le jeu/classement de caractères par défaut est toujours LATIN, au lieu que vous en ayez sélectionné un autre lors de la création initiale de votre base de données.

15
amenko

Comme beaucoup l'ont écrit précédemment, SHOW FULL COLUMNS devrait être la méthode privilégiée pour obtenir des informations sur les colonnes. Ce qui manque, c'est un moyen d'obtenir un jeu de caractères après cela sans atteindre directement les tables de métadonnées:

SHOW FULL COLUMNS FROM my_table WHERE Field = 'my_field'
SHOW COLLATION WHERE Collation = 'collation_you_got'
4
WowPress.host