【发布时间】:2019-11-21 10:09:46
【问题描述】:
如何编写此查询以显示具有给定属性和约束的所有列, 我的预期输出是:
列名 |数据类型 |长度 |是空的 | PK | FK
【问题讨论】:
标签: sql sql-server sqldatatypes
如何编写此查询以显示具有给定属性和约束的所有列, 我的预期输出是:
列名 |数据类型 |长度 |是空的 | PK | FK
【问题讨论】:
标签: sql sql-server sqldatatypes
您想要的一切都已经在sp_help 中完成了。
你执行它传递table这样的名字:
exec sp_help 'MyTable'
如果您想拥有另一个resultset,您可以从sp_help 中提取所有queries:
exec sp_helptext 'sp_help'
并根据您的需要调整这些queries。
【讨论】:
这应该做你想要的
use [*MyDBName*]
Select Column_name,
data_type,
Character_maximum_length,
(Select Tab.Constraint_name
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab
left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name
where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name and Tab.CONSTRAINT_NAME like 'Pk[_]%'
) PK,
(Select Tab.Constraint_name
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab
left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ColU on Tab.Constraint_name = colU.Constraint_name
where Tab.Table_name = Col.Table_name AND ColU.COLUMN_NAME = Col.Column_name and Tab.CONSTRAINT_NAME like 'Fk[_]%'
) FK
FROM INFORMATION_SCHEMA.Columns Col
WHERE Col.TABLE_NAME = '*MyTableName*'
【讨论】:
对于特定表的列
select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'table_name'
对于所有表格列
select COLUMN_NAME, DATA_TYPE, character_maximum_length, is_nullable from INFORMATION_SCHEMA.COLUMNS
对于约束
select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where table_name ='Table_name'
【讨论】: