我如何列出一个表中的所有列?

对于各种流行的数据库系统,如何列出表中的所有列?

1051711 次浏览

Oracle (PL/SQL)

SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'

MySQL

SHOW COLUMNS FROM table_name

对于MySQL,使用:

DESCRIBE name_of_table;

这也适用于Oracle,只要你使用SQL*Plus,或Oracle的SQL Developer。

MS SQL Server中调用以下代码:

sp_columns [tablename]

对于mssql Server:

select COLUMN_NAME from information_schema.columns where table_name = 'tableName'

SQL Server

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兼容的数据库上。

SQL Server

使用实例列出数据库中所有用户定义的表。

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

列出一个表的所有列:

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

只是对SQL Server中的其他选项做了一点小小的修正(模式前缀变得越来越重要了!):

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

Microsoft SQL Server Management Studio 2008 R2:

在查询编辑器中,如果你突出显示表名的文本(例如dbo.MyTable)并点击ALT+F1,你会得到一个列名、类型、长度等的列表。

ALT+F1虽然你已经突出显示了dbo.MyTable相当于运行EXEC sp_help 'dbo.MyTable' 根据这个网站

我无法获得查询INFORMATION_SCHEMA的变体。列来工作,所以我用这个代替。

SQL Server

sp_help tablename

我知道已经很晚了,但是我在Oracle上使用这个命令:

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

例子:

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

只是我的代码

(5年后,为了王国最先进的DDBB PostgreSQL的荣誉)

在PostgreSQL:

\d table_name

或者,使用SQL:

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