假设我有一个名为myTable的表。返回此表的所有字段名称的SQL命令是什么?如果答案是特定于数据库的,那么我现在需要SQL Server,但也有兴趣看到其他数据库系统的解决方案。
答案 0 :(得分:59)
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'
答案 1 :(得分:12)
SQL-92标准定义了符合MS SQL Server支持的rdbms符合的INFORMATION_SCHEMA。以下适用于MS SQL Server 2000/2005/2008和MySql 5及更高版本
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable'
MS SQl Server特定:
exec sp_help 'myTable'
此解决方案返回多个结果集,其中包含您想要的信息,前者可以为您提供所需的信息。
同样只是为了完整性,您可以直接查询sys表。建议不要这样做,因为架构可以在SQL Server版本之间更改,而INFORMATION_SCHEMA是这些表之上的抽象层。但是这里无论如何都是SQL Server 2000
select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]')
答案 2 :(得分:4)
您可以使用提供的系统视图执行此操作:
例如
select * from INFORMATION_SCHEMA.COLUMNS
where table_name = '[table name]'
或者,您可以使用系统proc sp_help
例如
sp_help '[table name]'
答案 3 :(得分:4)
对于那些在Oracle中寻找答案的人:
SELECT column_name FROM user_tab_columns WHERE table_name = 'TABLENAME'
答案 4 :(得分:4)
PostgreSQL理解
select column_name from information_schema.columns where table_name = 'myTable'
语法。如果你在psql shell中工作,你也可以使用
\d myTable
用于描述(列,及其数据类型和约束)
答案 5 :(得分:3)
为了完整起见,因为已经提到过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
答案 6 :(得分:2)
这也是MySQL特定的:
show fields from [tablename];
这不仅仅显示表名,但它也会提取有关字段的所有信息。
答案 7 :(得分:2)
在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'
答案 8 :(得分:1)
如果您只想要列名,那么
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
在MS SQL Server上,有关表格的更多信息,例如列的类型,请使用
sp_help 'tablename'
答案 9 :(得分:1)
MySQL是一样的:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'tablename'
答案 10 :(得分:1)
对于IBM DB2(将在周一仔细检查以确定。)
SELECT TABNAME,COLNAME from SYSCAT.COLUMNS where TABNAME='MYTABLE'
答案 11 :(得分:0)
的MySQL
describe tablename