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
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
相关文章推荐
- SQL操作(初级、中级、高级)
- 有关SQL排序规则---------即"无法解决 equal to 操作的排序规则冲突"等等的菜问题.
- .net 使用带参数的SQL语句操作ACCESS 经验点滴
- sqlplus的常用操作
- SQL数据操作基础(初级) 2
- SQL教程:数据操作 DML
- Microsoft SQL Server 2000在复制的时候包含两个过程,攻击者可以操作输入提供恶意参数给存储过程,可导致执行任意命令。
- 用 T-SQL 操作 XML
- sql的一些操作
- docmd.runsql 语句执行的操作查询如何回滚?
- 操作数据:SQL
- Sql Server 和 Access 操作数据库结构Sql语句
- Asp学习者完整攻略之三:操作SQL:SQL基础:
- 操作数据:SQL
- 使用标准SQL语句实现分页操作(Oracle)
- SQL的基本操作
- SQL操作(初级、中级、高级)
- 在asp.net中操作sql-server数据库的一些小技巧
- SQL数据操作基础(初级) 1
- SQL数据操作基础(初级) 3