如何列出表中的所有列?

Mat*_*mes 218 mysql sql database sql-server oracle

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

dav*_*ave 245

对于MySQL,使用:

DESCRIBE name_of_table;
Run Code Online (Sandbox Code Playgroud)

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

  • 此解决方案适用于MYSQL而非MSSQL (14认同)
  • 这也适用于Oracle (7认同)
  • @dmvianna我认为这不一定适用于所有Oracle,而是适用于SQL*Plus. (2认同)
  • 对于 sqlite - 使用:pragma table_info(table_name) ie sqlite> pragma table_info(column1); (2认同)

Mat*_*mes 112

对于Oracle(PL/SQL)

SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
Run Code Online (Sandbox Code Playgroud)

对于MySQL

SHOW COLUMNS FROM table_name
Run Code Online (Sandbox Code Playgroud)

  • 对于Oracle也是有效的`DESCRIBE name_of_table`. (6认同)
  • 您可能希望通过column_id订购Oracle查询 (3认同)

Jef*_*ang 92

对于MS SQL Server:

select * from information_schema.columns where table_name = 'tableName'
Run Code Online (Sandbox Code Playgroud)

  • 这里感兴趣的专栏是COLUMN_NAME. (6认同)
  • 这应该适用于许多DBMS.`information_schema.columns`系统视图是`ANSI SQL`标准([link](http://en.wikipedia.org/wiki/Information_schema))的一部分. (4认同)
  • 很好的答案,但为了避免重复,我会使用:`从information_schema.columns中选择COLUMN_NAME,其中table_name ='tableName'和table_schema ='databaseName' (3认同)

ear*_*zon 35

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

在PostgreSQL中:

\d table_name
Run Code Online (Sandbox Code Playgroud)

或者,使用SQL:

select column_name, data_type, character_maximum_length
    from INFORMATION_SCHEMA.COLUMNS 
    where table_name = 'table_name';
Run Code Online (Sandbox Code Playgroud)

  • 应该是\ d table_name.\ dt table_name列出了关系. (4认同)

ka_*_*lin 34

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

select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
Run Code Online (Sandbox Code Playgroud)


Rus*_*Cam 26

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'
Run Code Online (Sandbox Code Playgroud)

要么

SELECT 
    COLUMN_NAME 
FROM 
    INFORMATION_SCHEMA.COLUMNS
WHERE 
    TABLE_NAME  = 'Table_Name'
Run Code Online (Sandbox Code Playgroud)

第二种方式是ANSI标准,因此应该适用于所有 ANSI兼容的数据库.


Bry*_*yan 13

MS SQL Server:

sp_columns [tablename]


小智 10

Microsoft SQL Server Management Studio 2008 R2:

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

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

我无法获得查询INFORMATION_SCHEMA.COLUMNS的变化,因此我使用它.


Aar*_*and 5

只是对 SQL Server 中的其他内容稍作修正(架构前缀变得更加重要!):

SELECT name
  FROM sys.columns 
  WHERE [object_id] = OBJECT_ID(N'dbo.tablename');
Run Code Online (Sandbox Code Playgroud)


Luv*_*Luv 5

对于 SQL Server

sp_help tablename
Run Code Online (Sandbox Code Playgroud)