How can I get column names from a table in SQL Server?
我想查询表中所有列的名称。我发现如何做到这一点:
- 甲骨文公司
- MySQL
- 波斯特雷斯尔
但我需要知道:如何在Microsoft SQL Server中实现这一点(在我的例子中是2008年)?
您可以通过查询信息模式视图来获得这些信息以及更多信息。
此示例查询:
1 2 3 | SELECT * FROM Northwind.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'Customers' |
可以覆盖所有这些DB对象:
- 检查限制
- 列域用法
- 列权限
- 柱
- 约束列用途
- 约束表使用
- 域约束
- 领域
- 键列用法
- 参数
- 参照约束
- 日常工作
- 例程栏
- 图式
- 表约束
- 表权限
- 桌子
- 查看栏用法
- 查看表格使用情况
- 意见
您可以使用存储过程sp_columns,它将返回与给定表的所有列相关的信息。有关详细信息,请访问http://msdn.microsoft.com/en-us/library/ms176077.aspx
您也可以通过SQL查询来实现。像这样的事情应该有帮助-
1 | SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName') |
或者变化是:
1 2 3 4 5 | SELECT o.Name, c.Name FROM sys.columns c JOIN sys.objects o ON o.object_id = c.object_id WHERE o.type = 'U' ORDER BY o.Name, c.Name |
这将从所有表中获取所有列,按表名排序,然后按列名排序。
1 2 3 | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='tableName' |
这比从
您可以在SQL Server 2008中使用
1 | sp_help <table_name>; |
上述命令的键盘快捷键:选择表名(即突出显示表名),然后按alt+f1。
通过使用此查询,您可以得到答案:
1 2 3 | SELECT Column_name FROM Information_schema.columns WHERE TABLE_NAME LIKE 'table name' |
您可以编写此查询以获取列名和所有详细信息,而不必使用MySQL中的信息模式:
1 | SHOW COLUMNS FROM database_Name.table_name; |
--这是另一个用于记录大型数据库以便进行转换的变体(编辑为--删除静态列)
1 2 3 4 5 6 7 8 9 10 | SELECT o.Name AS TABLE_NAME , c.Name AS Field_Name , t.Name AS Data_Type , t.length AS Length_Size , t.prec AS Precision_ FROM syscolumns c INNER JOIN sysobjects o ON o.id = c.id LEFT JOIN systypes t ON t.xtype = c.xtype WHERE o.type = 'U' ORDER BY o.Name, c.Name |
--在左联接中,c.type替换为c.xtype以获取varchar类型
1 2 3 | SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('TABLE_NAME') |
//表名是您的表
1 2 3 | SELECT column_name, data_type, character_maximum_length, TABLE_NAME,ordinal_position, is_nullable FROM information_schema.COLUMNS WHERE TABLE_NAME LIKE 'YOUR_TABLE_NAME' ORDER BY ordinal_position |
这个问题缺少以下方法:
1 2 | -- List down all columns of table 'Logging' SELECT * FROM sys.all_columns WHERE object_id = OBJECT_ID('Logging') |
您可以尝试此操作。这将给出所有列名称及其各自的数据类型。
1 | DESC <TABLE NAME> ; |
运行这个命令
1 | EXEC sp_columns 'Your Table Name' |
它将检查给定的
1 2 3 4 5 6 7 | SELECT T.TABLE_NAME AS 'TABLE NAME', C.COLUMN_NAME AS 'COLUMN NAME' FROM INFORMATION_SCHEMA.TABLES T INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME=C.TABLE_NAME WHERE T.TABLE_TYPE='BASE TABLE' AND T.TABLE_NAME LIKE 'Your Table Name' |
您可以使用此查询
1 2 3 | SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE N'%[ColumnName]%' AND TABLE_NAME = N'[TableName]' |
1 2 3 4 5 | SELECT c.Name FROM sys.columns c JOIN sys.objects o ON o.object_id = c.object_id WHERE o.object_id = OBJECT_ID('TABLE_NAME') ORDER BY c.Name |
另一个可以说更直观的选择是:
1 2 3 | SELECT [name] FROM sys.columns WHERE object_id = OBJECT_ID('[yourSchemaType].[yourTableName]') |
这会在一列中给出所有的列名。如果您关心其他元数据,可以将edit select语句更改为
1 2 3 | SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'name_of_your_table' |