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

时间:2020-03-06 14:25:11  来源:igfitidea点击:

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

解决方案

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'

如果我们只想要列名称,那么

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

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

sp_help 'tablename'

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]')

MySQL是一样的:

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

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

例如

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

或者,我们可以使用系统proc sp_help

例如

sp_help '[table name]'

这也是MySQL特有的:

show fields from [tablename];

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

的MySQL

describe tablename

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

SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'

PostgreSQL了解

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

句法。如果我们在psql shell中工作,也可以使用

\d myTable

描述(列及其数据类型和约束)

出于完整性考虑,因为已经提到了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

在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'

对于IBM DB2(请确保在星期一再次进行确认)。

SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'