2009-10-16 55 views

回答

93

对于Oracle(PL/SQL)

SELECT column_name 
FROM user_tab_cols 
WHERE table_name = 'myTableName' 

对于MySQL

SHOW COLUMNS FROM table_name 
+3

你几乎大概要订购由COLUMN_ID – 2009-10-18 12:09:03

+4

的Oracle查询对于Oracle也是'DESCRIBE name_of_table'。 – Pigueiras 2013-10-29 09:42:52

+0

使用; 显示中的列,如'%';将让您只列出以指定前缀开头的列。当然省略尖括号。 – rstackhouse 2014-04-10 21:10:13

181

对于MySQL /甲骨文,用途:

DESCRIBE name_of_table; 
+2

+1。这将显示表格中的所有列,并显示每个列的详细信息。 – Navigatron 2013-05-30 11:10:00

+12

此解决方案适用于MYSQL而非MSSQL – 2013-07-18 12:14:20

+7

这也适用于Oracle – dmvianna 2013-08-28 03:29:05

12

MS SQL服务器:

SP_COLUMNS [tablename]

63

对于MS SQL服务器:

select * from information_schema.columns where table_name = 'tableName' 
+5

此处感兴趣的列将是COLUMN_NAME。 – Buggieboy 2013-03-27 19:53:47

+3

这应该适用于许多DBMS。 'information_schema.columns'系统视图是ANSI ANSI标准的一部分([link](http://en.wikipedia.org/wiki/Information_schema))。 – 2013-07-28 20:12:44

+2

很好的答案,但为了避免重复使用,我会使用:'从information_schema.columns中选择COLUMN_NAME,其中table_name ='tableName'和table_schema ='databaseName'' – billynoah 2015-02-25 15:14:17

18

SQL服务器

SELECT 
    c.name 
FROM 
    sys.objects o 
INNER JOIN 
    sys.columns c 
ON 
    c.object_id = o.object_id 
AND o.name = '[Table Name]' 

SELECT 
    COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_NAME = '[Table Name]' 

的第二种方式是ANSI标准,因此所有 ANSI工作兼容数据库。

+0

这些工作都不像书面形式(或者至少是暗示的,因为我读它) MS SQL Server。在这两种情况下,表名称列都在其周围存储名称_without_任何'['']',所以查询不能使用它们,只能使用普通表名。如果这不是OP的意图,至少应该意识到这一点。 – JonBrave 2016-07-20 11:03:08

+0

@JonBrave - 没错,方括号在那里意味着_“在这里插入你的表名”_ :) – 2016-07-20 11:22:16

+0

作为方括号,我把它看作是“将表名插入方括号中(因为可能为保留字) here_“,然后没有匹配:)也许BNF'

'会避免含糊不清。无论如何,我意识到,当我写评论时,你可能会打算这么做 - 为了以防万一,警告其他人并没有什么坏处。 – JonBrave2016-07-20 12:24:44

3

SQL服务器

要列出数据库中的所有用户定义的表:

use [databasename] 
select name from sysobjects where type = 'u' 

要列出一个表中的所有列:

use [databasename] 
select name from syscolumns where id=object_id('tablename') 
+0

嘿?这只是错误的......你只能使用数据库的USE ...并且查询返回数据库中的所有用户定义的表,这不是OP想要的。 – 2009-10-16 21:25:25

+0

啊,对不起。我纠正了它。 – 2009-10-16 21:42:37

3

只是一个小幅盘整在SQL Server中的其他人(模式前缀变得越来越重要!):

SELECT name 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID('dbo.tablename'); 
7

微软SQL Server Management Studio中2008 R2:

在查询编辑器,如果突出显示表名(前dbo.MyTable)的文本,然后按ALT + F1 ,你会得到列名,类型,长度等

ALT的 + 列表F1,而你已经强调dbo.MyTable是运行EXEC sp_help 'dbo.MyTable'according to this site

0相当于

我无法获取有关查询INFORMATION_SCHEMA.COLUMNS的变体,因此我使用它来代替。

+0

没有在SSMS 2012中工作。顺便说一句,你是指SQL Server Management Studio 2008? – 2013-07-18 12:19:53

+0

是的,更准确地说,我的意思是Microsoft SQL Server Management Studio 2008 R2。我会编辑。 – Leslie 2013-08-12 02:50:52

+0

Alt + F1很棒。 +1。 – 2013-10-24 14:02:06

4

对于SQL Server

sp_help tablename 
26

我知道它的晚,但我使用的Oracle此命令:

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx' 
+1

迟到比从不= = – golem 2015-06-08 20:39:25

+0

http://stackoverflow.com/questions/8739203/oracle-query-to-fetch-column-names/8739400#8739400 – zloctb 2015-08-18 07:09:06

1

例子:

select Table_name as [Table] , column_name as [Column] , Table_catalog as [Database], table_schema as [Schema] from information_schema.columns 
where table_schema = 'dbo' 
order by Table_name,COLUMN_NAME 

只是我的代码

21

( 5年laters,f或PostgreSQL,王国的最先进的DDBB)

在PostgreSQL的荣誉:使用

\d table_name 

或者SQL:

select column_name, data_type, character_maximum_length 
    from INFORMATION_SCHEMA.COLUMNS 
    where table_name = 'table_name'; 
+4

应该是\ d table_name。 \ dt table_name列出关系。 – l85m 2015-09-09 20:23:13

相关问题