Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vergil

Tipos de dados do MySQL

Recommended Posts

Há algum lugar do MySQL (information_schema ou mysql) que armazene os tipos de dados para as colunas?

 

Já dei uma pesquisada e só consegui relação desses tipos de dados. Necessito de recuperar essa informação do próprio MySQL. Criar uma tabela contendo esses tipos de dados não resolve meu problema.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Metadados podem ser visualizados através do catálogo de dados do MySQL, que é o banco de dados de nome INFORMATION_SCHEMA.

Primeira procedimento: como recupero os nomes das tabelas do catálogo do MySQL? Vamos lá:

 

mysql> show tables from information_schema;
+---------------------------------------+
| Tables_in_information_schema		  |
+---------------------------------------+
| CHARACTER_SETS						|
| COLLATIONS							|
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS							   |
| COLUMN_PRIVILEGES					 |
| KEY_COLUMN_USAGE					  |
| ROUTINES							  |
| SCHEMATA							  |
| SCHEMA_PRIVILEGES					 |
| STATISTICS							|
| TABLES								|
| TABLE_CONSTRAINTS					 |
| TABLE_PRIVILEGES					  |
| TRIGGERS							  |
| VIEWS								 |
| USER_PRIVILEGES					   |
+---------------------------------------+
16 rows in set (0.00 sec)

Como você deseja saber os tipos de dados das colunas das tabelas de seu banco de dados, temos que consultar a tabela COLUMNS, que tem a seguinte estrutura:

 

mysql> DESC INFORMATION_SCHEMA.COLUMNS;
+--------------------------+--------------+------+-----+---------+-------+
| Field					| Type		 | Null | Key | Default | Extra |
+--------------------------+--------------+------+-----+---------+-------+
| TABLE_CATALOG			| varchar(512) | YES  |	 | NULL	|	   |
| TABLE_SCHEMA			 | varchar(64)  | NO   |	 |		 |	   |
| TABLE_NAME			   | varchar(64)  | NO   |	 |		 |	   |
| COLUMN_NAME			  | varchar(64)  | NO   |	 |		 |	   |
| ORDINAL_POSITION		 | bigint(21)   | NO   |	 | 0	   |	   |
| COLUMN_DEFAULT		   | varchar(64)  | YES  |	 | NULL	|	   |
| IS_NULLABLE			  | varchar(3)   | NO   |	 |		 |	   |
| DATA_TYPE				| varchar(64)  | NO   |	 |		 |	   |
| CHARACTER_MAXIMUM_LENGTH | bigint(21)   | YES  |	 | NULL	|	   |
| CHARACTER_OCTET_LENGTH   | bigint(21)   | YES  |	 | NULL	|	   |
| NUMERIC_PRECISION		| bigint(21)   | YES  |	 | NULL	|	   |
| NUMERIC_SCALE			| bigint(21)   | YES  |	 | NULL	|	   |
| CHARACTER_SET_NAME	   | varchar(64)  | YES  |	 | NULL	|	   |
| COLLATION_NAME		   | varchar(64)  | YES  |	 | NULL	|	   |
| COLUMN_TYPE			  | longtext	 | NO   |	 |		 |	   |
| COLUMN_KEY			   | varchar(3)   | NO   |	 |		 |	   |
| EXTRA					| varchar(20)  | NO   |	 |		 |	   |
| PRIVILEGES			   | varchar(80)  | NO   |	 |		 |	   |
| COLUMN_COMMENT		   | varchar(255) | NO   |	 |		 |	   |
+--------------------------+--------------+------+-----+---------+-------+
19 rows in set (0.00 sec)

Logicamente, você precisa escrever um SELECT para trazer colunas e tipos de dados do seu banco de dados especificamente, assim como faço com o banco de dados test, logo abaixo:

 

mysql> SELECT TABLE_NAME, COLUMN_NAME, CONCAT(DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH, ')') AS 'DATA TYPE', 
								 IS_NULLABLE, COLUMN_DEFAULT
	-> FROM INFORMATION_SCHEMA.COLUMNS
	-> WHERE TABLE_SCHEMA ='test';
+------------+-------------+-----------+-------------+----------------+
| TABLE_NAME | COLUMN_NAME | DATA TYPE | IS_NULLABLE | COLUMN_DEFAULT |
+------------+-------------+-----------+-------------+----------------+
| t1		 | id		  | NULL	  | NO		  | NULL		   |
| t1		 | nome		| char(80)  | YES		 | NULL		   |
| te		 | id		  | NULL	  | NO		  | NULL		   |
| tr		 | nome		| char(80)  | YES		 | NULL		   |
+------------+-------------+-----------+-------------+----------------+
4 rows in set (0.01 sec)

A consulta acima poderá ser mais sofisticada, caso você precise de outra visualização dos dados!

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.