我现在要设计一个数据库编辑器。由于对sql语句的不熟悉,思路现在有些混乱。比如我创建了一个test用户,在他下面已经存在很多表。我要知道这些表的名字、字段、关联关系、索引、约束条件等。不考虑每个表存了多少数据,只考虑表的结构。
第一步:要知道用户下所有的表名;
第二步:要知道每个表所有的字段;
第三步:所有表的关联关系。
希望各位老师给予指点。特别是提供实现的sql语句。谢谢!!!
第一步:要知道用户下所有的表名;
第二步:要知道每个表所有的字段;
第三步:所有表的关联关系。
希望各位老师给予指点。特别是提供实现的sql语句。谢谢!!!
解决方案 »
- Oracle 11g 用sqlplus登录的时候在输入口令时怎么不能输入字符?求高手解释。小弟谢了
- 求怎样把外表的一个字段所有值显示在主表里?
- oracle lite 怎么安装?为什么9iwindows版的老连接不到数据库,说服务名不正确?
- 随机函数的新问题,报缺少右括号
- ORACLE 服务器端安装问题?
- “ 已连接到空闲例程 ” 是怎么回事?
- 执行exp的问题
- 散分问题:现在的机器上已有一个oracle 8i服务器了,我现在需要登录另一台机器上的oracle 8i服务器,我该怎么操作呢?谢谢,来者有分!!!!
- 什么叫热备份,怎么实现?
- 一个可以在SQL server运行,但是在Oracle不能运行的CTE 的SQL语句
- 请问怎样用远程在linux AS4上创建oracle9i数据库和表?
- 如何实现这样的分级汇总查询???
要都找出来比较繁琐:
1.SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER=UPPER('用户名');
2.SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=UPPER('表名') AND OWNER=UPPER('用户名');
3.找表下面的索引:
SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME=UPPER('表名') AND OWNER=UPPER('用户名');
找外键约束,这个比较麻烦(R_CONSTRAINT_NAME 只的是它引用的那个主键,CONSTRAINT_TYPE='R'的为外键):
SELECT CONSTRAINT_NAME,R_CONSTRAINT_NAME FROM ALL_CONSTRAINTS WHERE OWNER=UPPER('用户名') AND CONSTRAINT_TYPE='R';
然后在根据以上结果找到外键用的那个表的那个字段,它引用的主键用的那个表的那个字段:
SELECT TABLE_NAME,COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE CONSTRAINT_NAME=UPPER('主键或者外键的名字')
唯一约束条件CONSTRAINT_TYPE='U'