列举当前用户或指定用户的所有表,所有字段,以及所有约束
當前用戶自己的表:
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
總結
以上是生活随笔為你收集整理的列举当前用户或指定用户的所有表,所有字段,以及所有约束的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android开发之SpannableS
- 下一篇: 我的第三个网页制作:b、i、s、u、su