首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于列出所有表字段和键(外部和主要)的SQL查询

用于列出所有表字段和键(外部和主要)的SQL查询
EN

Stack Overflow用户
提问于 2017-10-27 23:44:10
回答 2查看 597关注 0票数 0

o/ Hello All,

我正在尝试为一个ERP创建一个模式,可笑的是,它的数据库中没有用于62个表的模式。我们,我为之工作的人,没有DBA,因此我正试图自己解决这个问题。此外,我没有数据库所有者规则,我认为这限制了我可以查看的内容;但是,我已经确认这不是标准的模式/图

我搜索并尝试了大约12个我在这里找到的查询,但没有得到我想要的信息。

是否有一个sysobjects查询可以用来列出表的所有字段和适当的键?啊,我是SQL的新手。我可以处理查询,但在管理方面我一无所知。我正在从事MS SQL Server Management Studio 2017的工作。

谢谢大家。

Partial view of tables

附注:我知道这可能看起来是重复的,但我们的IT部门一次又一次地告诉我,ERP的数据库是一团糟的,这就是为什么他们一直不愿授权我访问。我认为我们的标准思想可能不适用于这个特定的数据库,因此有很长的帖子/描述。

EN

回答 2

Stack Overflow用户

发布于 2017-10-27 23:55:59

我已经很长时间没有使用MS SQL了,但我认为你可以使用以下方法:

描述table_name或sp_columns table_name

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-10-28 01:44:37

下面的脚本将为您提供所有表名、列名、每列的数据类型、列的宽度、键是主键还是次键以及外键的被引用表和列。

代码语言:javascript
复制
SELECT SA.TABLE_NAME,
       SA.COLUMN_NAME, 
       SA.DATA_TYPE, 
       SA.CHARACTER_MAXIMUM_LENGTH AS Column_Width,
       PK.type AS PRIMARY_KEY,
       FK.type AS Foriegn_KEY, 
       SAU.CONSTRAINT_NAME,
       SO.[Name] + '_' + SAU.COLUMN_NAME Referenced_Table_Column
FROM Stack.INFORMATION_SCHEMA.COLUMNS AS SA
LEFT JOIN STACK.INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS SAU
    ON SAU.COLUMN_NAME = SA.COLUMN_NAME
LEFT JOIN sys.foreign_keys AS FK
    ON FK.[NAME] = SAU.CONSTRAINT_NAME
LEFT JOIN sys.key_constraints AS PK
    ON PK.[NAME] = SAU.CONSTRAINT_NAME
LEFT JOIN sys.objects AS SO 
    ON SO.object_id = FK.referenced_object_id OR
       SO.object_id = PK.parent_object_id

可能的限制:

当数据库使用sys表和information_schema.时,

  1. 您可能没有足够的权限来运行此查询

解决方法:

  1. 让IT管理员为您运行查询并将数据导出到CSV或Excel文件。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46978846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档