﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-monokurobo-文章分类-DataBase</title><link>http://www.blogjava.net/monokurobo/category/44862.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Apr 2010 02:06:38 GMT</lastBuildDate><pubDate>Wed, 28 Apr 2010 02:06:38 GMT</pubDate><ttl>60</ttl><item><title>关于Oracle与SqlServer中获取所有字段、主键、外键</title><link>http://www.blogjava.net/monokurobo/articles/319556.html</link><dc:creator>cjm</dc:creator><author>cjm</author><pubDate>Wed, 28 Apr 2010 00:52:00 GMT</pubDate><guid>http://www.blogjava.net/monokurobo/articles/319556.html</guid><wfw:comment>http://www.blogjava.net/monokurobo/comments/319556.html</wfw:comment><comments>http://www.blogjava.net/monokurobo/articles/319556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/monokurobo/comments/commentRss/319556.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/monokurobo/services/trackbacks/319556.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-size: 14pt"><strong>关于</strong></span><strong><span style="font-family: 'Arial', 'sans-serif'; color: red; font-size: 14pt">Oracle</span></strong><strong><span style="font-size: 14pt">与</span></strong><strong><span style="font-family: 'Arial', 'sans-serif'; color: red; font-size: 14pt">SqlServer</strong></span><strong><span style="font-size: 14pt">中获取所有字段、主键、外键</span></strong></p>
<p><span style="font-family: 'Arial', 'sans-serif'"><br />
</span><strong>（一）</strong><strong><span style="font-family: 'Arial', 'sans-serif'">Oracle</span></strong><span style="font-family: 'Arial', 'sans-serif'">:<br />
</span><span style="font-family: 'Arial', 'sans-serif'">1</span>、查询某个表中的字段名称、类型、精度、长度、是否为空<span style="font-family: 'Arial', 'sans-serif'"><br />
select COLUMN_NAME,DATA_TYPE,DATA_PRECISION,DATA_SCALE,NULLABLE <br />
from user_tab_columns <br />
where table_name ='YourTableName'<br />
</span><span style="font-family: 'Arial', 'sans-serif'">2</span>、查询某个表中的主键字段名<span style="font-family: 'Arial', 'sans-serif'"><br />
select col.column_name <br />
from user_constraints con,&nbsp; user_cons_columns col <br />
where con.constraint_name = col.constraint_name <br />
and con.constraint_type='P' <br />
and col.table_name = 'YourTableName'<br />
</span><span style="font-family: 'Arial', 'sans-serif'">3</span>、查询某个表中的外键字段名称、所引用表名、所应用字段名<span style="font-family: 'Arial', 'sans-serif'"><br />
select distinct(col.column_name),r.table_name,r.column_name <br />
from <br />
user_constraints con,<br />
user_cons_columns col, <br />
(select t2.table_name,t2.column_name,t1.r_constraint_name <br />
&nbsp;from user_constraints t1,user_cons_columns t2 <br />
&nbsp;where t1.r_constraint_name=t2.constraint_name <br />
&nbsp;and t1.table_name='YourTableName'<br />
&nbsp;) r <br />
where con.constraint_name=col.constraint_name <br />
and con.r_constraint_name=r.r_constraint_name <br />
and con.table_name='YourTableName'</span></p>
<p><strong>（二）</strong><strong><span style="font-family: 'Arial', 'sans-serif'">SQLServer</strong></span><strong>中的实现：</strong><span style="font-family: 'Arial', 'sans-serif'"><br />
</span><span style="font-family: 'Arial', 'sans-serif'">1</span>、字段：<span style="font-family: 'Arial', 'sans-serif'"><br />
SELECT c.name,t.name,c.xprec,c.xscale,c.isnullable <br />
FROM systypes t,syscolumns c <br />
WHERE t.xtype=c.xtype <br />
AND c.id = (SELECT id FROM sysobjects WHERE name='YourTableName') <br />
ORDER BY c.colid</span></p>
<p><span style="font-family: 'Arial', 'sans-serif'">2</span>、主键（参考<span style="font-family: 'Arial', 'sans-serif'">SqlServer</span>系统存储过程<span style="font-family: 'Arial', 'sans-serif'">sp_pkeys</span>）：<span style="font-family: 'Arial', 'sans-serif'"><br />
select COLUMN_NAME = convert(sysname,c.name)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
from&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
sysindexes i, syscolumns c, sysobjects o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
where o.id = object_id('[YourTableName]')&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
and o.id = c.id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
and o.id = i.id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
and (i.status &amp; 0x800) = 0x800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
and (c.name = index_col ('[YourTableName]', i.indid,&nbsp; 1) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 2) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 3) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 4) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 5) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 6) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 7) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 8) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid,&nbsp; 9) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 10) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 11) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 12) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 13) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 14) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 15) or&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; c.name = index_col ('[YourTableName]', i.indid, 16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; )</span></p>
<p><span style="font-family: 'Arial', 'sans-serif'">3</span>、外键：<span style="font-family: 'Arial', 'sans-serif'"><br />
select t1.name,t2.rtableName,t2.name <br />
from <br />
(select col.name, f.constid as temp <br />
&nbsp;from syscolumns col,sysforeignkeys f <br />
&nbsp;where f.fkeyid=col.id <br />
&nbsp;and f.fkey=col.colid <br />
&nbsp;and f.constid in <br />
&nbsp;( select distinct(id)&nbsp; <br />
&nbsp;&nbsp; from sysobjects <br />
&nbsp;&nbsp; where OBJECT_NAME(parent_obj)='YourTableName' <br />
&nbsp;&nbsp; and xtype='F' <br />
&nbsp; ) <br />
&nbsp;) as t1 , <br />
(select OBJECT_NAME(f.rkeyid) as rtableName,col.name, f.constid as temp <br />
&nbsp;from syscolumns col,sysforeignkeys f <br />
&nbsp;where f.rkeyid=col.id <br />
&nbsp;and f.rkey=col.colid <br />
&nbsp;and f.constid in <br />
&nbsp;( select distinct(id) <br />
&nbsp;&nbsp; from sysobjects <br />
&nbsp;&nbsp; where OBJECT_NAME(parent_obj)='YourTableName' <br />
&nbsp;&nbsp; and xtype='F' <br />
&nbsp;) <br />
) as t2 <br />
where t1.temp=t2.temp</span></p>
  <img src ="http://www.blogjava.net/monokurobo/aggbug/319556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/monokurobo/" target="_blank">cjm</a> 2010-04-28 08:52 <a href="http://www.blogjava.net/monokurobo/articles/319556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>