Oracle库基本操作

Posted xubao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle库基本操作相关的知识,希望对你有一定的参考价值。

--oracle 获取表名称,字段
with vA as
(
  SELECT USER_TAB_COLS.TABLE_NAME as 表名,USER_TAB_COLS.COLUMN_NAME as 列名 , 
  USER_TAB_COLS.DATA_TYPE as 数据类型, USER_TAB_COLS.DATA_LENGTH as 长度, USER_TAB_COLS.NULLABLE as 是否为空,
  USER_TAB_COLS.COLUMN_ID as 列序号,user_col_comments.comments as 备注 
  FROM USER_TAB_COLS 
  inner join user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME 
  and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME
  where USER_TAB_COLS.TABLE_NAME like T_A_% and USER_TAB_COLS.COLUMN_NAME like %CHECK_USER%
)
select alter table  ||表名 || modify ||列名|| VARCHAR2(120) ;
from vA


--新增字段
alter table table_name add(userName VARCHAR2(255));

--设置字段不为空, 给出默认值
alert table table_name add(userName varchar2(255 CHAR) default 这是默认值 not null) ;

--修改列字段长度
alter table T_A_DRUG modify DRUG_PRODUCT_CODE VARCHAR2(50);

--修改列名称
alter table T_A_DRUG rename column PRODUCT_NAME to DRUG_PRODUCT_CODE;

--修改列字段类型
 alter table T_FILE_UPLOAD_www modify (upload_date varchar2(50));


--删除字段
alter table table_name drop column  userName;

--修改表名称
    alter table old_table_name RENAME TO new_table_name;

    rename 旧表名称 to 新表名称;


--删除表中已有的主键约束(有命名)
    alter table students drop constraint yy;

--删除表中已有的主键约束(无命名)
    可用 SELECT   *   from   user_cons_columns;
    查找表中主键名称得student表中的主键名为SYS_C002715
    alter table student drop constraint SYS_C002715;

--向表中添加主键约束
alter table student add constraint pk_student primary key(studentid); 

--查看表中约束




--oracle 更改名称:


--查询所有表名:
select t.table_name from user_tables t;
--查询所有字段名:
select t.column_name from user_col_comments t;
--查询指定表的所有字段名:
select t.column_name from user_col_comments t where t.table_name = BIZ_DICT_XB;
--查询指定表的所有字段名和字段说明:
select t.column_name, t.column_name from user_col_comments t where t.table_name = BIZ_DICT_XB;
--查询所有表的表名和表说明:
select t.table_name,f.comments from user_tables t inner join user_tab_comments f on t.table_name = f.table_name;
--查询模糊表名的表名和表说明:
select t.table_name from user_tables t where t.table_name like BIZ_DICT%;
select t.table_name,f.comments from user_tables t inner join user_tab_comments f on t.table_name = f.table_name where t.table_name like BIZ_DICT%;

--查询表的数据条数、表名、中文表名
select a.num_rows, a.TABLE_NAME, b.COMMENTS
from user_tables a, user_tab_comments b
WHERE a.TABLE_NAME = b.TABLE_NAME
order by TABLE_NAME;



一,查看数据库里面所有用户:
select * from dba_users; 
前提是你是有dba权限的帐号,如sys,system。

二,查看你能管理的所有用户:
select * from all_users;  
三,查看当前用户信息 :
select * from user_users; 









1、创建存储过程
create or replace 
procedure sql_test(sex in nvarchar2, out_return out sys_refcursor) 
is
begin
  open out_return for select sex,sex_name from t_a_sex;
end;


2、调用带输出列表的存储过程
var type_cur refcursor
var para nvarchar2(20)
execute :para :=1;
exec pro1(:para,:type_cur);
print type_cur;







-- 日期
select to_char(sysdate,yyyy-MM-dd HH24:MI:SS) as vDate
from dual;








--获取表名称、字段、等信息
with vM as 
(
    select * from all_col_comments 
    where OWNER=BYYY 
    and (table_name like T_FILE%  or table_name like T_RULE% or table_name like T_JOBLOG%
    or table_name like T_REPORT_LOG% or table_name like T_A% or table_name like T_E%)
    and table_name not like T_AUTH% and table_name not like T_ERROR%
),vA as
(
  SELECT USER_TAB_COLS.TABLE_NAME as 表名,USER_TAB_COLS.COLUMN_NAME as 列名 , 
  USER_TAB_COLS.DATA_TYPE as 数据类型, USER_TAB_COLS.DATA_LENGTH as 长度, USER_TAB_COLS.NULLABLE as 是否为空,
  USER_TAB_COLS.COLUMN_ID as 列序号,user_col_comments.comments as 备注 
  FROM  all_TAB_COLS USER_TAB_COLS 
  inner join  vM user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME 
  and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME
  where USER_TAB_COLS.OWNER=BYYY
)
select * 
from vA
order by 表名,列名



 with vM as 
 (
     select * from all_col_comments 
     where OWNER=BASE 
     and (table_name like T_FILE%  or table_name like T_RULE% or table_name like T_JOBLOG%
     or table_name like T_REPORT_LOG% or table_name like T_A% or table_name like T_E%)
     and table_name not like T_AUTH% and table_name not like T_ERROR%
 ),vA as
 (
   SELECT USER_TAB_COLS.TABLE_NAME as 表名,USER_TAB_COLS.COLUMN_NAME as 列名 , 
   USER_TAB_COLS.DATA_TYPE as 数据类型, USER_TAB_COLS.DATA_LENGTH as 长度, USER_TAB_COLS.NULLABLE as 是否为空,
   USER_TAB_COLS.COLUMN_ID as 列序号,user_col_comments.comments as 备注 
   FROM all_TAB_COLS USER_TAB_COLS 
   inner join  vM user_col_comments on user_col_comments.TABLE_NAME=USER_TAB_COLS.TABLE_NAME 
   and user_col_comments.COLUMN_NAME=USER_TAB_COLS.COLUMN_NAME
   where USER_TAB_COLS.OWNER=BYYY
 )
 select * 
 from vA
 order by 表名,列名

 

以上是关于Oracle库基本操作的主要内容,如果未能解决你的问题,请参考以下文章

Oracle运维基本操作,倒库备份恢复与优化。

Oracle跨库操作实现

Oracle数据库同步问题,想通过PLSQL工具将测试库与正式库同步,求操作步骤,急~

ORACLE同义词源库锁表导致目标库删除操作报ora 02055 02049 02063 06512

一台oracle主库可以搭建多台逻辑备库吗?怎么搭建?

Oracle -- 记一次ADG库迁移过程小结 -- 上篇(ADG建库)