当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 查询表主键外键信息的SQL

MSSQL
SQL Server 索引结构及其使用(一)
SQL中查询数据表字段名称的查询语句
SQL Server 索引结构及其使用(二)
SQL技巧:使用SQL子选择来合并查询
如何恢复/修复MS SQL数据库的MDF文件
获取SQL Server元数据的几种方法
在SQL Server中通过原子建立分子查询
保护SQL Server数据库的十个步骤介绍
SQL Server数据库崩溃后的恢复方法简介
SQL Server与Oracle、DB2的性能比较
SQL Server中用索引视图查看性能状况
利用SQL Server系统函数进行代码存档
将 MS SQL Server 2005 SP2 整合到安装文件
如何改进SQL Server安全系统
SQL Server管理常用的SQL和T-SQL简介
精华推荐:SQL Server的用户及权限
Sql server 如何得到汉字的声母
sql server中order by部分使用方式
在SQLServer中用XQuery分解XML数据
两个sql server 2000的通用分页存储过程

MSSQL 中的 查询表主键外键信息的SQL


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 56 ::
收藏到网摘: n/a

 

我的BSOOC里需要一个查询表主键外键信息的SQL,昨晚研究到凌晨1点,终于能实现这个目标:
Oracle:
select o.obj# as objectId, o.name AS tableName, oc.name AS constraintName,
       decode(c.type#, 1, 'C', 2, 'P', 3, 'U',
              4, 'R', 5, 'V', 6, 'O', 7,'C', '?') as constraintType,
       col.name AS columnName
     
from sys.con$ oc, sys.con$ rc,
     sys.obj$ ro,sys.obj$ o, sys.obj$ oi,
     sys.cdef$ c,
     sys.col$ col, sys.ccol$ cc, sys.attrcol$ ac
where oc.con# = c.con#
  and c.obj# = o.obj#
  and c.rcon# = rc.con#(+)
  and c.enabled = oi.obj#(+)
  and c.robj# = ro.obj#(+)
  and c.type# != 8
  and c.type# != 12       /* don't include log groups */
  and c.con# = cc.con#
  and cc.obj# = col.obj#
  and cc.intcol# = col.intcol#
  and cc.obj# = o.obj#
  and col.obj# = ac.obj#(+)
  and col.intcol# = ac.intcol#(+)
  and o.name = 'your table'
 
SQL Server:

SELECT sysobjects.id objectId,
OBJECT_NAME(sysobjects.parent_obj) tableName,
sysobjects.name constraintName,
sysobjects.xtype AS constraintType,
syscolumns.name AS columnName
FROM sysobjects INNER JOIN sysconstraints
ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')
 AND sysobjects.id = sysconstraints.constid
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
WHERE OBJECT_NAME(sysobjects.parent_obj)='your table'
 
其它数据库还没时间去实现.