首页 > 数据库 >sqlserver 查询表中的主键、外键列及外键表,外表中的主键列

sqlserver 查询表中的主键、外键列及外键表,外表中的主键列

时间:2023-05-05 11:15:00浏览次数:33  
标签:JOIN name object sqlserver 列及 主键 sys id

--获取主键信息
EXEC sp_pkeys @table_name='tablename'


--获取外键 方法一
SELECT Field=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) ,
FKTable=object_name(b.rkeyid),
FKKeyField=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid)
FROM sysobjects a
join sysforeignkeys b on a.id=b.constid
join sysobjects c on a.parent_obj=c.id
where a.xtype='f' AND c.xtype='U'
and object_name(b.fkeyid)='tablename'


--获取外键 方法二
select 
  oSub.name  AS  [子表名称],
  fk.name AS  [外键名称],
  SubCol.name AS [子表列名],
  oMain.name  AS  [主表名称],
  MainCol.name AS [主表列名]
from 
  sys.foreign_keys fk  
JOIN sys.all_objects oSub  
ON (fk.parent_object_id = oSub.object_id)
JOIN sys.all_objects oMain 
ON (fk.referenced_object_id = oMain.object_id)
JOIN sys.foreign_key_columns fkCols 
ON (fk.object_id = fkCols.constraint_object_id)
    JOIN sys.columns SubCol 
        ON (oSub.object_id = SubCol.object_id  
            AND fkCols.parent_column_id = SubCol.column_id)
    JOIN sys.columns MainCol 
        ON (oMain.object_id = MainCol.object_id  
            AND fkCols.referenced_column_id = MainCol.column_id)
WHERE
  oSub.name  =  'tablename' --AND SubCol.name = '你的列名'

  

标签:JOIN,name,object,sqlserver,列及,主键,sys,id
From: https://www.cnblogs.com/zhangqifeng2021/p/17373519.html

相关文章

  • SQLServer配置远程访问连接
    打开对象资源管理器,右击,选择属性然后,开启-->程序-->MicrosoftSQLServer2019-->配置管理器:要确保CP/IP协议被开启了。右击,选中属性。点击IP地址标签,找到IPAII部分。如果TCP动态端口这一栏的值为0,表示sqlserver数据库引擎是监听在动态端口上,删除0,并将TCP动态端口设置成空白、......
  • sqlserver查看表占硬盘大小
    --定义表变量--定义表变量DECLARE@TTABLE([Name]VARCHAR(max),[Rows]INT,[Reserved]VARCHAR(max),[Data_size]VARCHAR(max),[Index_size]VARCHAR(max),[Unused_size]VARCHAR(max))--将表占用情况存放到表变量INSERTINTO@TEXECsp_MSforeachtable"execsp_spaceused'?......
  • Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填
    Mybatis模糊查询:三种定义参数方法和聚合查询、主键回填      一、使用#定义参数1.持久层接口添加根据名字内容模糊查询方法2.UserMapper.xml映射文件添加标签3.添加测试方法4.运行结果二、使用$定义参数1.UserMapper.xml映射文件更改标签内容2.修改......
  • C#开发 B/S架构的实验室管理系统 云LIS系统(MVC + SQLserver + Redis)
    一、云LIS系统是将各种样本、免疫、临检、放免、及实验用的分析仪器,通过网络管理和传输实验分析过程中全部数据。对每一专业,实现检验申请、样本采集、样本核收、联机检验、质量控制、报告审核到报告发布的全环节的信息化管理平台。二、基于B/S架构的云LIS系统,整个系统的运行基于WE......
  • MySQL(十七)查询优化(二)与数据库主键设计
    查询优化(二)1覆盖索引什么是覆盖索引​ 看下面的例子,对于联合索引age_sno_name,当查询字段较少时能够使用索引,而字段较多的时候只能进行文件排序,这是由优化器判断通过索引加回表或者直接文件排序的成本来决定的。这种一个索引包含了满足查询结果的数据(select+where+join字......
  • SQLServer 批量备份与还原
    在现在都讲究自动化管理的时代,传统的界面操作备份还原的做法不仅浪费时间和精力,而且还很容易出错,并且这次完成后,下次再有这样的要求,必须又重头开始(估计做5次就能做得人狂吐);于是,我们需要一套应对这种频繁操作、耗时、耗精力的通用处理方法,所以以下批处理脚本就诞生了。    脚本......
  • 云LIS系统基于ASP.NET CORE 3.1 MVC + SQLserver + Redis技术实践
    云LIS   利用云LIS实现区域内各级医院门诊、住院等日常医疗业务和行政业务的全流程管理和医院的无纸化运营,规范就医流程,提升医疗质量,提供科学决策支持,增强患者的就医体验。云LIS是为区域医疗提供临床实验室信息服务的计算机应用程序,可协助区域内所有临床实验室相互协调并......
  • SQLSERVER 动态生成列、合计行
    /*test110'2023-04-26','2023-04-26','全部','901100569,901100570,901100571,901100572,901100573';*/ALTERPROCEDURE[dbo].[test110]@StartDatedatetime,@EndDatedatetime,@unameVARCHAR(50)='......
  • SQLServer2005 AMD8450,3核CPU装不上sql 2005的解决办法
    中午12点开始,安装SQLServer2005,一直到晚上9点半,把网上的各个文章翻了个遍,依然没有安装上我的SQLServer2005,安装不上的症状跟网上其它人遇到的一样,可是为什么别人的就解决了,我的就不行呢```带着郁闷的心情睡觉了```夜里3点几分,起夜,想到数据库还......
  • 找出SQLServer数据库I/O高的原因
    找出SQLServer数据库I/O高的原因影响SQLServer性能的因素有很多,比如CPU、I/O、内存、错误的执行计划、不恰当的索引或缺少索引等。当查询变慢时,我发现最常见的一件事是由于查询执行的I/O太大。当一个查询因为I/O而变慢时,可能是因为糟糕的硬件、糟糕的执行计划,但通常是糟糕的数据......