Ir para conteúdo

Arquivado

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

Wagner Bianchi

DESCRIBE - Descreva as colunas de uma tabela de um DB do MySQL!

Recommended Posts

Olá pessoal,

 

Em algumas leituras que andei fazendo pela internet afora, vi que muita gente que já trabalha com MySQL tem alguma deficiência em acessar as colunas de uma tabela já criada e mesmo interpretar os atributos que ela possui. Além do SHOW CREATE TABLE nome_tabela , temos um "carinha" chamado DESCRIBE que nos provê informações sobre as colunas de uma tabela.

 

É de especial importância você saber interpretar a saída de um comando DESCRIBE pois, com ele, você saberá quase tudo que ocorre em colunas de tabelas...se esta tem colunas com índices únicos, not null ou null, primary key, quais campos fazem parte de uma primary key ou de um ínidice não único, qual é o valor DEFAULT para uma determinada coluna, enfim, vamos criar uma tabela e em seguida emitiremos o comando DESCRIBE nome_tabela para verificarmos a sua saída.

 

Tabela:

 

[color= #993333; font-weight: bold;]CREATE [color= #993333; font-weight: bold;]TABLE tab_test [color= #66cc66;]( 
col INT, 
col1 ENUM[color= #66cc66;]([color= #ff0000;]'Wagner', [color= #ff0000;]'Bianchi'[color= #66cc66;]) [color= #993333; font-weight: bold;]DEFAULT [color= #ff0000;]'Bianchi', 
col2 VARCHAR[color= #66cc66;]([color= #cc66cc;]50[color= #66cc66;]) [color= #993333; font-weight: bold;]NOT [color= #993333; font-weight: bold;]NULL, 
col3 VARCHAR[color= #66cc66;]([color= #cc66cc;]50[color= #66cc66;]), 
col4 TIMESTAMP [color= #993333; font-weight: bold;]DEFAULT CURRENT_TIMESTAMP[color= #66cc66;]([color= #66cc66;]), 
[color= #993333; font-weight: bold;]UNIQUE(col1, col2),
UNIQUE(col3),
PRIMARY KEY (col) 
) Engine =InnoDB;

 

Cópie o código acima e cole no prompt ou no Query Browser e execute...eu utilizei o banco de dados test que é padrão nas instalações do MySQL 5++. Após compilar o código acima, o mesmo será compilado o já teremos nossa tabela para então fazermos a leitura com a declaração DESCRIBE[/color].

 

Ainda no prompt, ou no terminal, dentro do mysql client ou no query browser, escreva o seguinte comando:

 

mysql> [color= #993333; font-weight: bold;]DESCRIBE tab_test;

 

(DESCRIBE[/color] também pode ser abreviado para simplemente DESC[/color]!)

 

...e pressione ENTER. A saída na tela será a refereciada abaixo na figura.

 

Imagem Postada

O que temos agora é analisar as colunas da tabela!!

 

A saída da declaração DESCRIBE[/color] contém uma linha para cada coluna da tabela. As características mais importantes da saída são:

[*]O valor Field[/color] indica o nome da coluna;

[*]O valor Type[/color] indica o tipo de dado da coluna;

[*]O indicador NULL[/color] é a palavra YES[/color] se a coluna puder conter valores nulos ou ficará com NO, caso contrário. No exemplo mostrado acima, as colunas col1 e col3 aceitam valores nulos já que estão setadas como YES;

[*]O indicador Key[/color] está preenchido com os três valores possíveis, que cada um tem sua definição:

[*]PRI: é uma coluna que é a primary key de uma tabela ou faz parte da chave juntamente com outros campos, caso seja uma chave composta. Neste último caso, a coluna KEY será preenchida mais de uma vez com PRI, relcionado aos campo que fazem parte da chave;

[*]UNI: é a definição de um campo UNIQUE + NOT NULL que é um índice de valores únicos que não aceita NULL(bem parecido com o conceito de chave primária, já que uma chave primária nada mais é que uma conjunção de UNIQUE + NOT NULL + SORT);

[*]MUL: é a definição de uma coluna que é ou é parte de um índice não único que aceitam valores multiplos e NULL;

[*]A coluna DEFAULT[/color] que tem um caso interessante. Definimos que o DEFAULT[/color] da coluna com o tipo de dados ENUM[/color] seria Bianchi e definimos para a coluna de tipo de dados TIMESTAMP[/color] e valor retornado pela função CURRENT_TIMESTAMP()[/color], que num caso de não ser fornecido um valor em um INSERT[/color], este valor da função seria adicionado ao campo pelo SGBD. O fato de curiosidade é que, nós não definimos um valor DEFAULT[/color] para a coluna col3...o que aconteceu?? Que NULL[/color] é aqule e ali na coluna DEFAULT[/color]?? <_<

 

http://forum.imasters.com.br/public/style_emoticons/default/excl.gif Justamente por não termos definido um valor DEFAULT[/color] para a coluna que a coluna DEFAULT[/color] foi preenchida com NULL[/color] .

 

 

[*]O valor Extra[/color] exibe outros detalhes sobre a coluna. No nosso exemplo não apareceu nada ainda, mas podemos fazer as coisas diferentes com um comando apenas!!

mysql> [color= #993333; font-weight: bold;]ALTER [color= #993333; font-weight: bold;]TABLE tab_test MODIFY col int AUTO_INCREMENT;
Query OK, 0 rows affected (0.22 sec)
Records: 0  Duplicates: 0  Warnings: 0

 

Agora o nosso DESC[/color] já estará diferente, já temos o valor auto_increment na coluna Extra[/color]!!

 

Imagem Postada

Bom, existem outras declarações que podem nos auxiliar a checar detalhes em um banco de dados MySQL, declarações estas que prometo trazer para estudarmos juntos aqui no fórum.

 

ADIÇÃO DE INFORMAÇÃO EM 13/11/2007

Outros comandos que podem nos auxiliar com informações complementares e que podemos testar em qualquer tabela de nosso banco de dados:

 

SHOW COLUMNS FROM <nome_banco>.<nome_tabela>;
SHOW FULL COLUMNS FROM <nome_banco>.<nome_tabela>;

 

O destaque entre os dois comandos é que, o SHOW FULL COLUMNS nos possibilita saber quais são os privilégios que nosso usuário possui sobre a tabela exibida. A coluna que mostra tais informações é a Privileges, como referenciado abaixo:

 

+---------------------------------+
| Privileges                      |
+---------------------------------+
| SELECT,INSERT,UPDATE,REFERENCES |
| SELECT,INSERT,UPDATE,REFERENCES |
| SELECT,INSERT,UPDATE,REFERENCES |
| SELECT,INSERT,UPDATE,REFERENCES |
+---------------------------------+

 

Um abraço à todos os amigos!! DEUS abençõe!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

outra dica para comentar as colunas é usar "COMMENT"

 

 

CREATE TABLE `customer` (

`ID` char(25) NOT NULL,

`Category` tinyint(1) NOT NULL default 1 COMMENT '1:customer, 2:wholesale',

`Status` tinyint(1) NOT NULL default 1 COMMENT '1:new, 2:active, 3:inactive',

`DateCreated` datetime NULL default '0000-00-00 00:00:00',

`DateModified` datetime NULL default '0000-00-00 00:00:00',

`Nationality` tinyint(1) NOT NULL default 0 COMMENT 'country code',

`Language` char(5) NOT NULL default '' COMMENT 'languages code',

`Gender` tinyint(1) NOT NULL default 1 COMMENT '1:male, 2:female',

`Name` varchar(25) NOT NULL default '',

`Surname` varchar(35) NOT NULL default '',

`DateBorn` datetime NOT NULL default '0000-00-00 00:00:00',

`Remarks` varchar(200) NULL default '',

 

PRIMARY KEY (`ID`),

UNIQUE KEY `ID` (`ID`),

KEY `id_2` (`Name`,`Surname`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

para visualizar, use a query

 

SHOW FULL COLUMNS from NOME_DA_TABELA;

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.