IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置:首页数据库Oracle → Oracle与SqlServer中获取所有字段、主键、外键的sql语句

Oracle与SqlServer中获取所有字段、主键、外键的sql语句

时间:2015/6/28来源:IT猫扑网作者:网管联盟我要评论(0)

  oracle:

  查询某个表中的字段名称、类型、精度、长度、是否为空

  select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE

  from user_tab_columns

  where table_name ='YourTableName'

  查询某个表中的主键字段名

  select col.column_name

  from user_constraints con,  user_cons_columns col

  where con.constraint_name = col.constraint_name

  and con.constraint_type='P'

  and col.table_name = 'YourTableName'

  查询某个表中的外键字段名称、所引用表名、所应用字段名

  select distinct(col.column_name),r.table_name,r.column_name

  from

  user_constraints con,

  user_cons_columns col,

  (select t2.table_name,t2.column_name,t1.r_constraint_name

  from user_constraints t1,user_cons_columns t2

  where t1.r_constraint_name=t2.constraint_name

  and t1.table_name='YourTableName'

  ) r

  where con.constraint_name=col.constraint_name

  and con.r_constraint_name=r.r_constraint_name

  and con.table_name='YourTableName'

  SQLServer中的实现:

  字段:

  SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable

  FROM systypes t,syscolumns c

  WHERE t.xtype=c.xtype

  AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName')

  ORDER BY c.colid

  主键(参考SqlServer系统存储过程sp_pkeys):

  select COLUMN_NAME = convert(sysname,c.name)

  from

  sysindexes i, syscolumns c, sysobjects o

  where o.id = object_id('[YourTableName]')

  and o.id = c.id

  and o.id = i.id

  and (i.status & 0x800) = 0x800

  and (c.name = index_col ('[YourTableName]', i.indid,  1) or

  c.name = index_col ('[YourTableName]', i.indid,  2) or

  c.name = index_col ('[YourTableName]', i.indid,  3) or

  c.name = index_col ('[YourTableName]', i.indid,  4) or

  c.name = index_col ('[YourTableName]', i.indid,  5) or

  c.name = index_col ('[YourTableName]', i.indid,  6) or

  c.name = index_col ('[YourTableName]', i.indid,  7) or

  c.name = index_col ('[YourTableName]', i.indid,  8) or

  c.name = index_col ('[YourTableName]', i.indid,  9) or

  c.name = index_col ('[YourTableName]', i.indid, 10) or

  c.name = index_col ('[YourTableName]', i.indid, 11) or

  c.name = index_col ('[YourTableName]', i.indid, 12) or

  c.name = index_col ('[YourTableName]', i.indid, 13) or

  c.name = index_col ('[YourTableName]', i.indid, 14) or

  c.name = index_col ('[YourTableName]', i.indid, 15) or

  c.name = index_col ('[YourTableName]', i.indid, 16)

  )

  外键:

  select t1.name,t2.rtableName,t2.name

  from

  (select col.name, f.constid as temp

  from syscolumns col,sysforeignkeys f

  where f.fkeyid=col.id

  and f.fkey=col.colid

  and f.constid in

  ( select distinct(id)

  from sysobjects

  where OBJECT_NAME(parent_obj)='YourTableName'

  and xtype='F'

  )

  ) as t1 ,

  (select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp

  from syscolumns col,sysforeignkeys f

  where f.rkeyid=col.id

  and f.rkey=col.colid

  and f.constid in

  ( select distinct(id)

  from sysobjects

  where OBJECT_NAME(parent_obj)='YourTableName'

  and xtype='F'

  )

  ) as t2

  where t1.temp=t2.temp

关键词标签:Oracle,SqlServer,sql

相关阅读

文章评论
发表评论

热门文章 Oracle中使用alter table来增加,删除,修改列Oracle中使用alter table来增加,删除,修改列oracle中使用SQL语句修改字段类型-oracle修oracle中使用SQL语句修改字段类型-oracle修使用低权限Oracle数据库账户得到管理员权限使用低权限Oracle数据库账户得到管理员权限Oracle对user的访问控制Oracle对user的访问控制

相关下载

人气排行 ORACLE SQL 判断字符串是否为数字的语句Oracle中使用alter table来增加,删除,修改列的语法ORACLE和SQL语法区别归纳(1)oracle grant 授权语句如何加速Oracle大批量数据处理Oracle删除表的几种方法ORACLE修改IP地址后如何能够使用Oracle 10g创建表空间和用户并指定权限