【发布时间】:2010-12-07 12:25:03
【问题描述】:
对于各种流行的数据库系统,如何列出一个表中的所有列?
【问题讨论】:
标签: sql mysql sql-server database oracle
对于各种流行的数据库系统,如何列出一个表中的所有列?
【问题讨论】:
标签: sql mysql sql-server database oracle
对于 SQL Server
sp_help tablename
【讨论】:
在MS SQL Server中调用以下代码:
sp_columns [tablename]
【讨论】:
对于 MySQL,使用:
DESCRIBE name_of_table;
只要您使用 SQL*Plus 或 Oracle 的 SQL Developer,这也适用于 Oracle。
【讨论】:
DESCRIBE name_of_table``;
DESCRIBE 不是Oracle PLSQL 指令而是a SQL*Plus command,因此它在大多数SQL IDE 中不起作用。
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 的数据库。
【讨论】:
[],因此查询不能使用它们,只能使用普通表名。如果这不是 OP 的意图,至少要意识到这一点。
<Table Name> 会避免歧义。无论如何,我意识到你可能在我写评论时有意这样做 --- 以防万一,警告其他人并没有什么坏处。
我知道已经晚了,但我将这个命令用于 Oracle:
select column_name,data_type,data_length from all_tab_columns where TABLE_NAME = 'xxxx' AND OWNER ='xxxxxxxxxx'
【讨论】:
Microsoft SQL Server Management Studio 2008 R2:
在查询编辑器中,如果您突出显示表名的文本(例如 dbo.MyTable)并点击 ALT+F1,您将获得一个列列表名称、类型、长度等。
ALT+F1 当您突出显示 dbo.MyTable 时相当于运行 EXEC sp_help 'dbo.MyTable' according to this site
我无法让查询 INFORMATION_SCHEMA.COLUMNS 的变体起作用,所以我改用它。
【讨论】:
(5年后,为了PostgreSQL的荣誉,王国最先进的DDBB)
在 PostgreSQL 中:
\d table_name
或者,使用 SQL:
select column_name, data_type, character_maximum_length
from INFORMATION_SCHEMA.COLUMNS
where table_name = 'table_name';
【讨论】:
例子:
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
只是我的代码
【讨论】:
对 SQL Server 中的其他部分稍作修正(模式前缀变得越来越重要!):
SELECT name
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.tablename');
【讨论】:
SQL 服务器
列出数据库的所有用户定义表:
use [databasename]
select name from sysobjects where type = 'u'
列出表格的所有列:
use [databasename]
select name from syscolumns where id=object_id('tablename')
【讨论】:
对于 MS SQL Server:
select * from information_schema.columns where table_name = 'tableName'
【讨论】:
information_schema.columns 系统视图是 ANSI SQL 标准 (link) 的一部分。
select COLUMN_NAME from information_schema.columns where table_name = 'tableName' and table_schema = 'databaseName'
对于 Oracle (PL/SQL)
SELECT column_name
FROM user_tab_cols
WHERE table_name = 'myTableName'
对于 MySQL
SHOW COLUMNS FROM table_name
【讨论】:
DESCRIBE name_of_table。
user_tab_cols 是什么?