Oracle 查看表常用相关SQL

Oracle 查看表常用相关SQL

1、Oracle查看所有表和字段

select * from all_tables where owner='VTATEST';

all_tables查出来是查得所有用户下的表,当然也包括你登录的用下的表,然后加一个where你要查的那个用户名就可以了。(记得用户名要大写)

select * from user_tables;

查的单纯是你所登录的用户下的表,不会显示其他用户下的表。

select * from tabs;

这个和第2个类一样,但是书写更简单,也是查你所在用户下的表,本人用的最多的是这个。

获取表字段:

select * from user_tab_columns where Table_Name='用户表' order by column_name

获取表注释:

select * from user_tab_comments where Table_Name='用户表'order by Table_Name

获取字段注释:

select * from user_col_comments where Table_Name='用户表'order by column_name

/* 获取表:*/

select 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='zfxfzb'

/*
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列。
*/

2、Oracle查询所有表

select a.TABLE_NAME, b.COMMENTS
  from user_tables a, user_tab_comments b
 WHERE a.TABLE_NAME = b.TABLE_NAME
 order by TABLE_NAME;

3、Oracle查询没有主键的表

 select table_name
   from user_tables a
  where not exists (select *
           from user_constraints b
          where b.constraint_type = 'P'
            and a.table_name = b.table_name);

查主键名称:

select * from user_constraints 
where table_name = 'AAA' 
and constraint_type ='P'; 

查主键对应的列:

select * from user_cons_columns 
where table_name = 'AAA' 
and constraint_name = 'PK_AAA'; (PK_AAA 是主键名)

查索引名称:

select * from user_indexes where table_name = 'AAA'; 

查索引对应的列:

select * from user_ind_columns 
where table_name = 'AAA' 
and index_name = 'INDX_BA'; (INDX_BA 是 索引名)

了解几个字典表的用处 如:user_constraints
添加主键:

alter table TableName
add constraint PK NAME
primary key("ACCOUNTINGTASKID"...);

删除主键:

alter table EXTRACTED_POSTING(tablle name)
drop constraint EXTRACTED_POSTING_ACCTID_PK;(PK name)

4、Oracle中如何查询一个表的所有字段名和数据类型
查询语法

select A.COLUMN_NAME,A.DATA_TYPE  from user_tab_columns A
where TABLE_NAME='表名'

查询例子

select A.COLUMN_NAME,A.DATA_TYPE  from user_tab_columns A
where TABLE_NAME='PUB_GOODS'

添加排序后例子

select A.COLUMN_NAME,A.DATA_TYPE  from user_tab_columns A
where TABLE_NAME='PUB_GOODS'
order by A.COLUMN_ID asc

5、Oracle 查询所有表最后一个字段不等于 “需要过滤字段名称”

DECLARE
  --a表游标定义
  cursor a_cursor is select TABLE_NAME from user_tables;
  --b表游标定义
  cursor b_cursor(str1 string) is (select * from (select COLUMN_NAME FROM user_tab_columns where TABLE_NAME = str1 order by COLUMN_ID desc) where rownum=1);
BEGIN
for a_cur in a_cursor loop
 --DBMS_OUTPUT.PUT_LINE('1--->' || a_cur.TABLE_NAME);  
    for b_cur in b_cursor(a_cur.TABLE_NAME) loop     
      if(b_cur.COLUMN_NAME <> 'ATTRIBUTE5') then
          DBMS_OUTPUT.PUT_LINE(a_cur.TABLE_NAME);
      end if;
  end loop;  
end loop;
END;

6、Oracle 当前用户可访问的表、视图和群集的列的相关信息
表:ALL_TAB_COLS
字段:
  OWNER:表,视图及群集的Owner
  TABLE_NAME: 表,视图及聚簇的名称
  COLUMN_NAME: 字段名
  DATA_TYPE :字段的数据类型
  DATA_TYPE_OWNER: 字段类型的owner
  DATA_LENGTH :字段长度

SELECT * FROM All_Tab_Cols t WHERE t.TABLE_NAME='DEL_REGION_SHIP_NOTICE';
SELECT * FROM Dba_Tables t WHERE t.TABLE_NAME='DEL_REGION_SHIP_NOTICE';
SELECT * FROM user_Tab_Cols t WHERE t.TABLE_NAME='DEL_REGION_SHIP_NOTICE';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值