当前用户自己的表:

select table_name from user_tables;  用户自己拥有的表

其它用户的表:

select table_name from all_tables;  //所有用户的表

select * from all_tab_cols where owner='DATABACK' order by table_name,column_name

--查询某表所有外键对应的列名、主表名、主表列名

--下面sql只用到了两张表 user_constraints  和 user_cons_columns

--user_constraints表主要记录了 表名、约束名、对应关联表的约束名,可以理解为子表、外键约束名、主表主键约束名

--user_cons_columns 主要记录了 每张表的约束名(包括主键约束和外键约束)以及对应的字段

--因此,要找到某子表所有的外键字段以及对应的主表和主表字段,关键是利用第一张表user_constraints的两个字段,子表的外键约束名和对应的主表的主键约束名。

--将user_constraints重复成两张表cn1和cn2,它俩的关系是cn1.r_constraint_name=cn2.constraint_name

--然后将各自的表名和列名显示出来就行。

关键点:user_constraints这张表里,如果记录的外键关系(CONSTRAINT_TYPE=R)时,它的R_CONSTRAINT_NAME字段会记录主键约束名称。而当记录主键关系(CONSTRAINT_TYPE=P)时R_CONSTRAINT_NAME为空

select cn1.table_name,uc1.column_name,cn2.table_name,uc2.column_name
from user_constraints cn1,user_constraints cn2, user_cons_columns uc1, user_cons_columns uc2
where
cn1.table_name='GM_ARC'
and cn1.constraint_type='R'
and cn1.r_constraint_name=cn2.constraint_name
and cn1.constraint_name=uc1.constraint_name
and cn2.constraint_name=uc2.constraint_name

主键名称、外键在all_constraints

索引在all_indexes

4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表
查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键名称
查询引用表的键的列名:
select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键名
5、查询表的所有列及其属性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表

转载于:https://www.cnblogs.com/mol1995/p/7185745.html

列举当前用户或指定用户的所有表,所有字段,以及所有约束相关推荐

  1. SQL语句判断指定的数据库、表、字段、存储过程是否存在

    SQL语句判断指定的数据库.表.字段.存储过程是否存在 直接上代码,对大家有用就好! 代码 --判断[TestDB]是否存在 if exists(select 1 from master..sysda ...

  2. 查找数据库指定数据的数据表和字段名称SQL语句

     查找数据库指定数据的数据表和字段名称SQL语句 五百年前,因怀璧其罪,她被天下追杀,还连累了唯一的亲人. http://weibo.com/p/23047910076763  在灵魂消散的那一刻 ...

  3. linux添加用户及指定用户目录,指定默认shell

    useradd  -d  /lhome/username  -m  username  -s  /bin/tcsh -d指定用户主目录路径 -m如果路径不存在,将自动创建 -s指定默认shell 添加 ...

  4. linux创建用户指定用户目录,linux创建用户并指定用户的默认目录 bash-4.2$

    1 切换到root用户 2创建用户命令 useradd -d  userpath -m username 3设置用户密码 passwd username    接着输入密码 4进入用户 su - us ...

  5. 【学习笔记】FTP创建用户并指定用户主目录

    安装FTP yum -y install vsftpd 创建FTP目录 mkdir -p /appslog/ftp_manage/external/ 创建FTP用户主目录 用户名指定为duinterf ...

  6. Linux创建用户并指定目录为根目录

    1.linux创建新用户,当前用户必须为root用户 useradd -d /home/cron/log -m bbee 创建新用户:useradd -d指定目录文件夹 -m新账号名 -c comme ...

  7. Linux 用户管理及用户权限设置

    Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行 ...

  8. linux下创建用户和添加用户权限

    1.添加用户,首先用adduser命令添加一个普通用户,命令如下: #adduser tommy //添加一个名为tommy的用户 #passwd tommy   //修改密码 Changing pa ...

  9. linux中用户组和用户,linux中用户和用户组

    一.用户和组原理 一个用户可以属于多个组,一个组有多个用户 在Linux中操作系统必须依赖组和用户进行管理 二.与用户和组相关的配置文件 1.组相关配置文件 1)/etc/group :管理用户组信息 ...

最新文章

  1. 单元格内多个姓名拆分成一列_EXCEL拆分单元格中的姓名,这都不叫事儿
  2. SqlServer数据库端口默认是1433吗?
  3. oracle数据库查询如何导出大字段,Oracle数据库导出大字段(CLOB)数据-Oracle
  4. C# 分支语句 练习题(中间变量,随机数)
  5. Ugly Pairs
  6. 从零开始学视觉Transformer (11):目标检测DETR-2
  7. c# list集合根据某个字段去重_java8 List 根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等等...
  8. vi 不保存退出_vi / vim编辑器介绍
  9. sql 实现决策树_SQL Server中的Microsoft决策树
  10. 力扣——无重复字符的最长子串
  11. .vbb文件转换为.txt文件
  12. IPP2P模块修改版,最新0.99.13
  13. Myeclipse之回退版本
  14. python爬虫论文参考文献格式_Python爬虫进阶必备 | XX文学加密分析实例
  15. 沧海一声笑(最好版):也论智能的生成
  16. Python正面硬刚C语言,结果会怎样?
  17. Git 到底是个什么东西?
  18. Xilinx FIFO使用小结
  19. 【MySQL基础教程】事务详细介绍
  20. java接收邮件_Java实现邮件收发

热门文章

  1. JUC并发编程四 并发架构--并发之共享模型
  2. 设计模式:单例模式在JDK中的应用
  3. java多线程间的通讯
  4. 让ie8、ie9支持媒体查询
  5. qdbus 复杂类型
  6. web前端开发--列表
  7. 【转】C 编译器优化过程中的 Bug
  8. Android -- Camera聚焦流程
  9. 给Xshell设置舒适的配色方案
  10. 设计模式 分析模式 华容道 中文分词算法......