Como mostro o esquema de uma tabela em um banco de dados MySQL?

Respostas:

535
describe [db_name.]table_name;

para saída formatada ou

show create table [db_name.]table_name;

para a instrução SQL que pode ser usada para criar uma tabela.

Omry Yadan
fonte
2
Esta não é a resposta. O OP está tentando descobrir a parte "db_name" e esta solução assume que você já sabe disso:
Antonio Ortells
40
o OP aceitou essa resposta há 7 anos. Eu acho que ele estava feliz com essa resposta.
Omry Yadan
Banco de dados não é um esquema.
quer
11
ou desc [db_name.]table_name;para abreviar.
yakout
11
Em defesa de Antionio, alguns sistemas se referem a suas coleções de tabelas relacionadas como esquemas e não como bancos de dados. Não tenho certeza qual ou por quê.
dlamblin
108
SHOW CREATE TABLE yourTable;

ou

SHOW COLUMNS FROM yourTable;
Bobby
fonte
18

Você também pode usar a abreviação para descrever como descpara a descrição da tabela.

desc [nome_bd.] nome_tabela;

ou

use db_name;
desc table_name;

Você também pode usar explainpara a descrição da tabela.

explique [nome_bd.] nome_tabela;

Ver documento oficial

Dará saída como:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(10)     | NO   | PRI | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| age      | int(10)     | YES  |     | NULL    |       |
| sex      | varchar(10) | YES  |     | NULL    |       |
| sal      | int(10)     | YES  |     | NULL    |       |
| location | varchar(20) | YES  |     | Pune    |       |
+----------+-------------+------+-----+---------+-------+
Somnath Muluk
fonte
12

Talvez a questão precise ser um pouco mais precisa aqui sobre o que é necessário, porque pode ser lida de duas maneiras diferentes. ie

  1. Como obtenho a estrutura / definição para uma tabela no mysql?
  2. Como obtenho o nome do esquema / banco de dados em que esta tabela reside?

Dada a resposta aceita, o PO pretendia claramente que fosse interpretado da primeira maneira. Para quem lê a pergunta de outra maneira, tente

SELECT `table_schema` 
FROM `information_schema`.`tables` 
WHERE `table_name` = 'whatever';
Paul Campbell
fonte
Sua resposta para o segundo ponto me ajudou no que estou procurando. Meu editor lançou o erro dizendo "Objeto inválido" na tabela que tentei usar e não tenho idéia do banco de dados ou esquema sob o qual a tabela se encaixa, pois a tabela já foi criada por outra pessoa, até que eu recebi essas informações
Manejo perto de
5
SELECT COLUMN_NAME, TABLE_NAME,table_schema
FROM INFORMATION_SCHEMA.COLUMNS;
Lam
fonte