如何获取有关SQL Server中表的信息?

哈米德·法西(HamedFathi)

我有三个查询,但我想与他们一起创建一个结果

谁能帮我 ?

1)

SELECT  TABLE_CATALOG ,
    TABLE_SCHEMA ,
    TABLE_NAME ,
    COLUMN_NAME ,
    DATA_TYPE ,
    CHARACTER_MAXIMUM_LENGTH ,
    IS_NULLABLE
FROM [INFORMATION_SCHEMA].[COLUMNS] t1;

2)

SELECT  t2.COLUMN_NAME, t2.TABLE_NAME ,t2.TABLE_SCHEMA
FROM    [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] t2
WHERE   OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + CONSTRAINT_NAME),
                       'IsPrimaryKey') = 1;

3)

SELECT  COLUMN_NAME ,
        TABLE_NAME ,
        TABLE_SCHEMA
FROM    [INFORMATION_SCHEMA].[COLUMNS]
WHERE   COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') = 1

和我需要的结果

TABLE_CATALOG,
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
IS_NULLABLE,
IsPrimaryKey, -- from query 2 (YES/NO)
IsIdentity    -- from query 3 (YES/NO)
佐哈尔·皮莱德(Zohar Peled)

您可以使用LEFT JOIN之间INFORMATION_SCHEMA.COLUMNS以及INFORMATION_SCHEMA.KEY_COLUMN_USAGECASE产生这种输出:

SELECT t1.TABLE_CATALOG ,
    t1.TABLE_SCHEMA ,
    t1.TABLE_NAME ,
    t1.COLUMN_NAME ,
    DATA_TYPE ,
    CHARACTER_MAXIMUM_LENGTH ,
    IS_NULLABLE,
    CASE WHEN OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + CONSTRAINT_NAME), 'IsPrimaryKey') = 1 THEN 'YES' ELSE 'NO' END As IS_PRIMARY_KEY,
    CASE WHEN COLUMNPROPERTY(OBJECT_ID(t1.TABLE_NAME), t1.COLUMN_NAME, 'IsIdentity') = 1 THEN 'YES' ELSE 'NO' END As IS_IDENTITY
FROM [INFORMATION_SCHEMA].[COLUMNS] t1
LEFT JOIN [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] t2
ON(t1.TABLE_CATALOG = t2.TABLE_CATALOG
AND t1.TABLE_SCHEMA = t2.TABLE_SCHEMA
AND t1.TABLE_NAME = t2.TABLE_NAME
AND t1.COLUMN_NAME = t2.COLUMN_NAME);

要获取IsView,您需要添加INFORMATION_SCHEMA.TABLES到查询中:

SELECT t2.TABLE_CATALOG,
    t2.TABLE_SCHEMA,
    t2.TABLE_NAME,
    t2.COLUMN_NAME,
    DATA_TYPE,
    CHARACTER_MAXIMUM_LENGTH,
    IS_NULLABLE,
    CASE WHEN OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_SCHEMA + '.' + CONSTRAINT_NAME), 'IsPrimaryKey') = 1 THEN 'YES' ELSE 'NO' END As IS_PRIMARY_KEY,
    CASE WHEN COLUMNPROPERTY(OBJECT_ID(t2.TABLE_NAME), t2.COLUMN_NAME, 'IsIdentity') = 1 THEN 'YES' ELSE 'NO' END As IS_IDENTITY,
    CASE WHEN TABLE_TYPE = 'VIEW' THEN 'YES' ELSE 'NO' END As IS_VIEW
FROM [INFORMATION_SCHEMA].[TABLES] t1
INNER JOIN [INFORMATION_SCHEMA].[COLUMNS] t2 ON 
(
    t1.TABLE_CATALOG = t2.TABLE_CATALOG
    AND t1.TABLE_SCHEMA = t2.TABLE_SCHEMA 
    AND t1.TABLE_NAME = t2.TABLE_NAME
)
LEFT JOIN [INFORMATION_SCHEMA].[KEY_COLUMN_USAGE] t3 ON(
    t2.TABLE_CATALOG = t3.TABLE_CATALOG
    AND t2.TABLE_SCHEMA = t3.TABLE_SCHEMA
    AND t2.TABLE_NAME = t3.TABLE_NAME
    AND t2.COLUMN_NAME = t3.COLUMN_NAME
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法获取有关SQL Server的信息

来自分类Dev

如何获取有关SQL Server CE中列的一些特定信息

来自分类Dev

如何在SQL Server中获取有关函数(特别是参数)的所有信息?

来自分类Dev

Python-如何获取有关SyntaxError的更多信息?

来自分类Dev

如何获取有关点击兴趣点的信息?

来自分类Dev

如何从windbg获取有关设备堆栈的信息

来自分类Dev

如何获取有关WebRTC PeerConnection的连接类型的信息?

来自分类Dev

如何获取有关当前GRUB /启动配置的信息?

来自分类Dev

如何从API获取有关Youtube视频章节的信息?

来自分类Dev

Vue 3如何获取有关$ children的信息

来自分类Dev

Python-如何获取有关SyntaxError的更多信息?

来自分类Dev

如何获取有关当前GRUB /启动配置的信息?

来自分类Dev

如何获取有关套接字文件的更多信息?

来自分类Dev

如何从终端获取有关BIOS的信息?

来自分类Dev

如何获取有关点击兴趣点的信息?

来自分类Dev

如何获取有关DataGrid中验证错误的信息

来自分类Dev

如何获取有关此设备的更多信息?

来自分类Dev

如何获取有关“ sudo”失败的详细信息

来自分类Dev

如何获取有关异常错误的更多信息?

来自分类Dev

如何在MySQL中获取有关DATABASES的信息?

来自分类Dev

如何从坐标中获取有关位置或状态的信息

来自分类Dev

获取有关EventSource错误的信息

来自分类Dev

获取有关URL的路由信息

来自分类Dev

获取有关架构更改的信息

来自分类Dev

每周获取有关交易的信息

来自分类Dev

获取有关EventSource错误的信息

来自分类Dev

获取有关URL的路由信息

来自分类Dev

获取有关CPU的信息

来自分类Dev

获取有关弹出窗口的信息

Related 相关文章

热门标签

归档