sql

elect table_name from user_tables; //当前用户拥有的表  select table_name from all_tables; //所有用户的表  select table_name from dba_tables; //包括系统表 select table_name from dba_tables where owner='用户名' user_tables:
table_name,tablespace_name,last_analyzed等
dba_tables:
ower,table_name,tablespace_name,last_analyzed等
all_tables:
ower,table_name,tablespace_name,last_analyzed等
all_objects:
ower,object_name,subobject_name,object_id,created,last_ddl_time,timestamp,status等
复制代码

 
 获取表字段:

复制代码
select * from user_tab_columns where Table_Name='用户表'; select * from all_tab_columns where Table_Name='用户表'; select * from dba_tab_columns where Table_Name='用户表';
user_tab_columns:
table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
all_tab_columns :
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
dba_tab_columns:
ower,table_name,column_name,data_type,data_length,data_precision,data_scale,nullable,column_id等
复制代码

获取表注释:

复制代码
select * from user_tab_comments
user_tab_comments:table_name,table_type,comments
相应的还有dba_tab_comments,all_tab_comments,这两个比user_tab_comments多了ower列。
获取字段注释: select * from user_col_comments
user_col_comments:table_name,column_name,comments

相应的还有dba_col_comments,all_col_comments,这两个比user_col_comments多了ower列。



如何从Oracle、中取得表的注释

user_tab_comments;表注释

user_col_comments;表字段注释

以上两个只能获取自己用户的表的注释信息,如果要访问自己能够访问的其他用户的表,则需要使用:

all_tab_comments;表注释

all_col_comments;表字段注释

当然,如果有DBA权限,则可以使用

dba_tab_comments;表注释

dba_col_comments;表字段注释

dba*和all*最好指定owner条件。user*没有该字段

user_tab_comments;表注释

user_col_comments;表字段注释

以上两个只能获取自己用户的表的注释信息,如果要访问自己能够访问的其他用户的表,则需要使用:

all_tab_comments;表注释

all_col_comments;表字段注释

当然,如果有DBA权限,则可以使用

dba_tab_comments;表注释

dba_col_comments;表字段注释

dba*和all*最好指定owner条件。user*没有该字段





关于Oracle与SqlServer中获取所有字段、主键、外键的sql语句 标签: 主键 外键 sql 
最近在做的社会网络分析原型系统需要将多种不同数据库中的表的字段、主外键信息读出,实现这些功能费了不少功夫,记录下来以备用吧
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

你可能感兴趣的:(sql)