Deve haver um distintivo para escrever uma pergunta que é fechada, mas recebe mais de 100 votos :) OTOH, não é de surpreender que não haja uma resposta aceita, pois ela pergunta sobre vários bancos de dados, por isso não discordo da decisão de fechar . Que bom que as perguntas e respostas estão aqui.
Home
Respostas:
255
Para o MySQL, use:
DESCRIBE name_of_table;
Isso também funciona para o Oracle, desde que você esteja usando o SQL * Plus ou o SQL Developer da Oracle.
Youd provavelmente quer pedir a consulta Oracle column_id
David Aldridge
6
Para Oracle também é válido DESCRIBE name_of_table.
Pigueiras 29/10
use <nome do banco de dados>; mostre colunas em <nome_tabela> como '<prefixo_coluna>%'; Permite listar apenas as colunas que começam com o prefixo especificado. Omitindo os colchetes angulares, é claro.
rstackhouse
o que está user_tab_colsem sua consulta?
Jogi
@Jogi - Google "oracle user_tab_cols" - é incorporado ao Oracle db.
Home
103
Para MS SQL Server:
select*from information_schema.columns where table_name ='tableName'
Isso deve funcionar em muitos DBMSs. information_schema.columnsa visualização do sistema faz parte do ANSI SQLpadrão ( link ).
Bogdan Sahlean
4
boa resposta, mas para evitar duplicatas eu usaria:select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
billynoah
Isso é compatível com SQL-92 ANSI e deve funcionar em todos os mecanismos de banco de dados.
Gareth Davidson
39
(5 anos depois, para a Honra do PostgreSQL, o DDBB mais avançado do Reino)
No PostgreSQL:
\d table_name
Ou, usando SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name ='table_name';
Eu tentei isso no Oracle e não funcionou. O nome da coluna foi impresso, mas nada mais. Eu tive que usar SELECT CAST (COLUMN_NAME AS CHAR (40)) || '' || DATA_TYPE para obter um bom formato e obter várias colunas com concatenação.
Eamonn Kenny
27
servidor SQL
SELECT
c.name
FROM
sys.objects o
INNERJOIN
sys.columns c
ON
c.object_id = o.object_id
AND o.name ='Table_Name'
ou
SELECT
COLUMN_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME ='Table_Name'
A segunda maneira é um padrão ANSI e, portanto, deve funcionar em todos os bancos de dados compatíveis com ANSI.
Nenhum desses trabalhos está escrito (ou pelo menos está implícito, como eu o li) para o MS SQL Server. Nos dois casos, a coluna de nome da tabela armazena o nome sem nenhum []contorno, portanto a consulta não deve usá-los, apenas o nome da tabela simples. Se essa não era a intenção do OP, pelo menos esteja ciente disso.
21416 JonBrave
1
@ JonBrave - isso é correto, os colchetes estavam lá para implicar "insira o nome da sua tabela aqui" :) :)
Russ Cam
Sendo colchetes, eu li como " insira o nome da sua tabela entre colchetes (por causa de uma palavra potencialmente reservada) aqui " e não obteve correspondências :) Talvez o BNF <Table Name>evitasse a ambiguidade. Enfim, eu percebi que você poderia ter pretendido que, enquanto escrevi o comentário - não faz mal avisar os outros por precaução.
21716 JonBrave
1
Funciona apenas para MSSQL se não houver '[]' e as aspas '' forem necessárias em torno do nome da tabela.
Em um editor de consultas, se você destacar o texto do nome da tabela (por exemplo, dbo.MyTable) e pressionar ALT+ F1, receberá uma lista de nomes de colunas, tipo, comprimento, etc.
ALT+ F1enquanto você destacou dbo.MyTableé o equivalente à execução de EXEC sp_help 'dbo.MyTable'acordo com este site
Não consigo obter as variações na consulta de BUSINESS_SCHEMA.COLUMNS, então uso isso.
Heh? Isso está errado ... você só pode usar USE para bancos de dados ... E a consulta retorna todas as tabelas definidas pelo usuário no banco de dados, o que não é o que o OP queria.
Respostas:
Para o MySQL, use:
Isso também funciona para o Oracle, desde que você esteja usando o SQL * Plus ou o SQL Developer da Oracle.
fonte
DESCRIBE
name_of_table``;DESCRIBE
não é uma instrução Oracle PLSQL, mas um comando SQL * Plus e, como tal, não funciona na maioria dos IDEs SQL.Para Oracle (PL / SQL)
Para MySQL
fonte
DESCRIBE name_of_table
.user_tab_cols
em sua consulta?Para MS SQL Server:
fonte
information_schema.columns
a visualização do sistema faz parte doANSI SQL
padrão ( link ).select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
(5 anos depois, para a Honra do PostgreSQL, o DDBB mais avançado do Reino)
No PostgreSQL:
Ou, usando SQL:
fonte
Eu sei que é tarde, mas eu uso este comando para Oracle:
fonte
servidor SQL
ou
A segunda maneira é um padrão ANSI e, portanto, deve funcionar em todos os bancos de dados compatíveis com ANSI.
fonte
[
]
contorno, portanto a consulta não deve usá-los, apenas o nome da tabela simples. Se essa não era a intenção do OP, pelo menos esteja ciente disso.<Table Name>
evitasse a ambiguidade. Enfim, eu percebi que você poderia ter pretendido que, enquanto escrevi o comentário - não faz mal avisar os outros por precaução.MS SQL Server:
sp_columns [nome da tabela]
fonte
Microsoft SQL Server Management Studio 2008 R2:
Em um editor de consultas, se você destacar o texto do nome da tabela (por exemplo, dbo.MyTable) e pressionar ALT+ F1, receberá uma lista de nomes de colunas, tipo, comprimento, etc.
ALT+ F1enquanto você destacou
dbo.MyTable
é o equivalente à execução deEXEC sp_help 'dbo.MyTable'
acordo com este siteNão consigo obter as variações na consulta de BUSINESS_SCHEMA.COLUMNS, então uso isso.
fonte
servidor SQL
Para listar todas as tabelas definidas pelo usuário de um banco de dados:
Para listar todas as colunas de uma tabela:
fonte
Para SQL Server
fonte
Apenas uma pequena correção nos outros no SQL Server (o prefixo do esquema está se tornando mais importante!):
fonte
Exemplo:
Apenas meu código
fonte