tipos restricciones ejemplos datos consultas complejas sql mysql unicode character-encoding collation

restricciones - tipos de datos en mysql workbench



¿Cómo veo qué conjunto de caracteres es una base de datos/tabla/columna MySQL? (13)

Así es como lo haría yo.

Para los esquemas:

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

Para las tablas:

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 las columnas:

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

¿Cuál es el conjunto de caracteres (predeterminado) para:

  • Base de datos MySQL

  • Tabla MySQL

  • Columna MySQL


Como muchos escribieron anteriormente, SHOW FULL COLUMNS debería ser el método preferido para obtener información de columna. Lo que falta es una forma de obtener el conjunto de caracteres después de eso sin llegar directamente a las tablas de metadatos:

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


Para bases de datos :

Solo usa estos comandos:

USE db_name; SELECT @@character_set_database; -- or: -- SELECT @@collation_database;


Para bases de datos :

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

Ejemplo de salida:

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 bases de datos :

SHOW CREATE DATABASE "DB_NAME_HERE";

Al crear una base de datos (MySQL), el conjunto de caracteres / intercalación por defecto es siempre LATINO, en lugar de que haya seleccionado uno diferente al crear inicialmente su base de datos


Para bases de datos :

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

Cf. esta pagina Y echa un vistazo al manual de MySQL


Para columnas :

SHOW FULL COLUMNS FROM table_name;


Para tablas y columnas :

show create table your_table_name


Para las mesas :

SHOW TABLE STATUS mostrará una lista de todas las tablas.

Filtrar utilizando:

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


Para ver la intercalación por defecto de la base de datos:

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

Para ver colación de la tabla:

SHOW TABLE STATUS where name like ''table_name'';

Para ver el cotejo de las columnas:

SHOW FULL COLUMNS FROM table_name;


Siempre miro SHOW CREATE TABLE mydatabase.mytable .

Para la base de datos, parece que debes mirar SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA .


Para todas las bases de datos que tiene en el servidor:

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

Salida:

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

Para una base de datos única :

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

Salida:

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

Obtención de la colación para las tablas :

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

O - generará el SQL completo para crear la tabla:

mysql> show create table my_tablename

Obtención del cotejo de columnas :

mysql> SHOW FULL COLUMNS FROM my_tablename;

salida:

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


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 ;