sql 对表的操作

查询表名  select * from tab,  

                 select table_name from user_tables;

                  select object_name,object_type from user_objects;

                 select table_name,column_name from use_tab_columns;

给已存在的表添加唯一性约束

alter table 表名 add constraint u_emp unique(列名);    alter table 表名  modify(列名 unique)

丢弃约束  alter table 表名  drop constraint 约束名

禁用约束 alter table 表名 disable constraint 约束名 cascade  (可在user_constraint的status 查看约束状态   user_cons_columns)

表中有很多伪例   uid,user,rowid,rownum (序列参数 nextval currval)


主键约束  id number(4) constraint id_pk primary key

外键约束 id number(2) constraint emp_dept_fk foreign key(department_id) references departments(department_id)(定义约束时可加上级联删除  on delete cascade   或  on delete set null)

增加/修改/删除/不再使用列 alter table test add/modify/drop column/set unused  (name varchar2(20))

修改列名   alter table test1 rename column idd to id;

表只读 alter table test1 read only(read write);

删除表 drop table test1 purge(不保存在回收站)

如果误删除可以用flashback drop 功能找回 

show recyclebin;

flashback table test1 to before drop;

另:如果是删除表中的记录

先查看SCN号( 最新的SCN号)

 select dbms_flashback.get_system_change_number from dual;


GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1337038

查找数据被删除前的SCN 

select * from test1 as of scn 1337038;

select * from test1 as of scn 1336868;

恢复数据

insert into test1 select * from test1 as of scn 1336868 where id=1

==============================

方法2(select current_scn from v$database;查看当前scn号)

将删除时间转换成 scn(select scn_to_timestamp(scn) from dual;将 scn号转为时间)

select timestamp_to_scn(to_timestamp('2016-09-09 15:00:00','yyyy-mm-dd hh24:mi:ss')) from dual;

通过SCN号创建一个临时表查看记录变化情况

create table reprotinf(count int,scn int);
declare i int:=1337893;
begin
for i in 1337893..1338494 loop
insert into reprotinf(scn)values(i);
update reprotinf set count=(select count(*) from test1 as of scn i) where scn=i;
end loop;
end;
/

然后和第一种方法一样,恢复数据




另:usernev()   返回当前用户环境的信息

select userenv('isdba') from dual;  是否是DBA

select userenv('sessionid') from dual; 返回会话标志

select userenv('entryid') from dual;返回会话入口标志

select userenv('instance') from dual; 返回当前instance标志

select userenv('language') from dual;  返回当前环境变量

 select userenv('lang') from dual;  返回当前语言的缩写

select userenv('terminal') from dual; 返回用户的终端或机器的标志

select vsize(user),user from dual; 返回用户 的字节数

sys_context

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值