返回表字段名的SQL命令是什么?

What is the SQL command to return the field names of a table?

提问人:WalkingRandomly 提问时间:9/19/2008 最后编辑:WalkingRandomly 更新时间:11/27/2022 访问量:129371

问:

假设我有一个名为 myTable 的表。返回此表的所有字段名称的 SQL 命令是什么?如果答案是特定于数据库的,那么我现在需要 SQL Server,但也有兴趣看到其他数据库系统的解决方案。

mysql sql-server 数据库

评论


答:

68赞 Vinko Vrsalovic 9/19/2008 #1

MySQL 3 和 4(和 5):

desc tablename

这是

show fields from tablename

SQL Server(自 2000 年起)和 MySQL 5:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'tablename'

完成答案:就像下面的人说的,在 SQL Server 中,您还可以使用存储过程sp_help

exec sp_help 'tablename'

评论

0赞 Martynnw 9/19/2008
信息架构在 SQL Server 2000 中也可用。
0赞 Mureinik 6/27/2015
在 Postgres 中,从 8.0 开始(没有检查旧版本)
1赞 Matt Howells 9/19/2008 #2

如果您只想要列名,那么

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'

在 MS SQL Server 上,有关表的详细信息(例如列的类型),请使用

sp_help 'tablename'
13赞 hollystyles 9/19/2008 #3

SQL-92 标准定义了INFORMATION_SCHEMA符合 RDBMS 的 MS SQL Server 支持。以下内容适用于 MS SQL Server 2000/2005/2008 和 MySql 5 及更高版本

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'

特定于 MS SQl 服务器:

exec sp_help 'myTable'

此解决方案返回多个结果集,其中是您所需的信息,而前者则为您提供所需的信息。

此外,为了完整起见,您可以直接查询 sys 表。不建议这样做,因为架构可以在 SQL Server 版本之间更改INFORMATION_SCHEMA并且是这些表之上的抽象层。但无论如何,这里都是 SQL Server 2000

select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
1赞 Veynom 9/19/2008 #4

MySQL是一样的:

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
4赞 jules 9/19/2008 #5

您可以使用提供的系统视图来执行此操作:

例如

select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'

或者,您可以使用系统过程sp_help

例如

sp_help '[table name]'
2赞 Steve Obbayi 9/19/2008 #6

这也是特定于MySQL的:

show fields from [tablename];

这不仅显示表名,还提取有关字段的所有信息。

0赞 Z99 9/19/2008 #7

MySQL数据库

describe tablename
4赞 Rene 9/19/2008 #8

对于那些在 Oracle 中寻找答案的人:

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
4赞 dland 9/19/2008 #9

PostgreSQL 了解

select column_name from information_schema.columns where table_name = 'myTable'

语法。如果在 psql shell 中工作,还可以使用

\d myTable

对于说明(列及其数据类型和约束)

3赞 8jean 9/20/2008 #10

为了完整起见,由于已经提到了 MySQL 和 Postgres:使用 SQLite,使用”pragma table_info()"

sqlite> pragma table_info('table_name');
cid         name        type        notnull     dflt_value  pk        
----------  ----------  ----------  ----------  ----------  ----------
0           id          integer     99                      1         
1           name                    0                       0         
2赞 Graeme Perrow 9/20/2008 #11

在 Sybase SQL Anywhere 中,列和表信息是分开存储的,因此您需要连接:

select c.column_name from systabcol c 
       key join systab t on t.table_id=c.table_id 
       where t.table_name='tablename'
1赞 brabster 9/20/2008 #12

对于 IBM DB2(将在周一仔细检查以确保。

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
0赞 Ranushka Lakmal Sankalpa 11/27/2022 #13

从SCHEMA_NAME中选择 COLUMN_NAME1,COLUMN_NAME2。TABLE_NAME 哪里TABLE_NAME。COLUMN_NAME = 'COLUMN_NAME1';