DESCRIBE - Descreva as colunas de uma tabela de um DB do MySQL!
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; [color= #993333; font-weight: bold;]DEFAULT [color= #ff0000;]'Bianchi',
col2 VARCHARcolor= #66cc66; [color= #993333; font-weight: bold;]NOT [color= #993333; font-weight: bold;]NULL,
col3 VARCHARcolor= #66cc66;,
col4 TIMESTAMP [color= #993333; font-weight: bold;]DEFAULT CURRENT_TIMESTAMPcolor= #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.
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.credmhsteste.com/blog/01.PNG&key=ddee29238de2e7bf936c58776453b0d5918e237a264406429091f58e3ef2182f" alt="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]!!
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.credmhsteste.com/blog/02.PNG&key=311524763d7d5d8fc6e3f886b0d9e350715994ecf485f83a11ca1571639c5aba" alt="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
Discussão (1)
Carregando comentários...