您的位置:首页 > 数据库

sql 对表的操作

2016-09-10 14:02 281 查看
查询表名  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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: