如何在Microsoft SQL Server Management Studio中自动生成含主键与次键的表架构?
实现SQL Server表架构(含主键、外键)自动生成的方法
嗨,刚上手SSMS的话,完全可以轻松生成你想要的这种表架构清单(包含所有表、主键以及关联的外键/依赖关系),给你分享几个实用的方法:
方法一:用系统视图查询生成结构化结果
这是最灵活的方式,直接运行下面的SQL脚本,就能得到清晰的表格结果,还能根据自己的需求调整输出格式:
SELECT t.name AS 表名, pk.name AS 主键名称, c.name AS 主键列, fk.name AS 外键名称, rc.name AS 外键列, referenced_t.name AS 关联表名, referenced_c.name AS 关联表主键列 FROM sys.tables t LEFT JOIN sys.indexes pk ON t.object_id = pk.object_id AND pk.is_primary_key = 1 LEFT JOIN sys.index_columns pk_ic ON pk.object_id = pk_ic.object_id AND pk.index_id = pk_ic.index_id LEFT JOIN sys.columns c ON pk_ic.object_id = c.object_id AND pk_ic.column_id = c.column_id LEFT JOIN sys.foreign_keys fk ON t.object_id = fk.parent_object_id LEFT JOIN sys.foreign_key_columns fkc ON fk.object_id = fkc.constraint_object_id LEFT JOIN sys.columns rc ON fkc.parent_object_id = rc.object_id AND fkc.parent_column_id = rc.column_id LEFT JOIN sys.tables referenced_t ON fkc.referenced_object_id = referenced_t.object_id LEFT JOIN sys.columns referenced_c ON fkc.referenced_object_id = referenced_c.object_id AND fkc.referenced_column_id = referenced_c.column_id ORDER BY t.name, pk.name, fk.name;
脚本说明:
- 这个查询会列出所有表的主键信息,以及表上的外键关联关系(对应你提到的“次键”)
- 如果某个表没有外键,对应外键相关的字段会显示为
NULL,不影响整体查看 - 你可以把查询结果导出成Excel,或者直接复制到文档里,格式清晰易读
方法二:用SSMS自带的数据库关系图生成可视化架构
如果你想要类似示例里的可视化架构图,SSMS自带的工具就能搞定:
- 打开你要查看的数据库,找到左侧导航栏里的「数据库关系图」节点,右键点击选择「新建数据库关系图」
- 在弹出的添加表窗口中,勾选需要查看的表并添加,SSMS会自动生成包含主键、外键关联的可视化图
- 你可以拖拽调整表的布局,添加注释,还能保存这个关系图,以后随时打开查看
方法三:生成完整的数据库架构脚本
如果需要导出包含所有约束的完整架构文本,试试SSMS的脚本生成功能:
- 右键你的数据库,依次选择「任务」→「生成脚本」
- 跟着向导完成前期设置,在「设置脚本选项」步骤中,确保将「编写主键的脚本」「编写外键的脚本」等选项设为「True」
- 最后选择将脚本输出到查询窗口或者本地文件,就能拿到包含所有表结构和约束的完整SQL代码了
内容的提问来源于stack exchange,提问作者Rook




