oracle导出自增设置,oracle008:oracle自增,自适应,数据闪回,导入导出

oracle008:oracle自增,自适应,数据闪回,导入导出

oracle008:oracle自增,自适应,数据闪回,导入导出

一,oracle数据自增

在MySQL中自增使用主键和自增来实现,但是oracle中没有自增,oracle使用触发器,在用户执行之前先执行,实现主键自增。

定义一个oracle主键自增的触发器:

1,先定义一个teacher表

create table teachers(

tid number primary key,

tname varchar(20)

)

2,写触发器实现主键自增

对于这种错误:去掉 of sid就好了

Seq_s.currval :获取当前序列序列号

Seq_s.Nextval : 获取下一个序列号

06647c1f4bb22fb6ebc89180fddd1283.png

5ee28c809cad470d65ff0d26a54a310a.png

3,测试:

fb454c3002eaae08b84643f487e150e0.png

从41自增是因为之前用过这个触发器

select seq_s.nextval from dual;

二,自适应:当不知道需要一个什么类型的时候,就把他定义成一个自定义类型,让它去自适应。

1,定义自适应的存储过程:

e949d8a3ba6845a9a6b1db89537212d9.png

2,测试,执行存储过程

80ef248ebb41db4ff4c768029413aba6.png

三,数据闪回:

1,数据闪回:在oracle中删除了表中的数据,记得不要commit,要rollback。万一commit了除了跑路,还有数据闪回可以挽回损失,找回删除的数据。

比如:把teachers表中的数据删除了(于2019-5-27:00:32删除)

924f6349368a854670dd18dce7a512da.png

2,找到数据存在之前的时间点,查找那个时间点上的数据(注意:只能闪回你上一步删除的数据,我把teachers删除了之后,又把emp表给删除了,所以只能闪回emp,不能闪回teacheras)

查找时间点:

select to_timestamp('2019-05-27:00:32','yyyy-MM-DD hh24:MI') from dual;

3,查找时间点上的数据:

select * from emp as of timestamp to_timestamp('2019-5-27 00:32:00','YYYY-MM-DD hh24:MI:SS')

4,把那个时间点上的数据添加到原表中

insert into emp

select * from emp as of timestamp to_timestamp('2019-5-27 00:32:00','YYYY-MM-DD hh24:MI:SS')

然后再查找emp,发现数据回来了,teachers算他倒霉,被我找不回来了。

四,表闪回:

如果把表删除了,你可不能rollback,对表的操作是ddl语言,操作后不会进入回滚区。我们发现用数据闪回实现不了表的闪回。

1,把emp表给删了

e977bd875c5626cb1f55ecfd0d6d5630.png

2,查看所有表:发现emp表变成了一个地址,这个表进入到了垃圾回收站,显示的就是垃圾的地址。

select * from tab;

657fd1691231d24c71a44d1e36d93a4f.png

3,从垃圾站闪回emp表

flashback table emp to before drop

4,设置开启行移动功能

alter table emp enable row movement

5,闪回某一时刻上的表

flashback table emp to timestamp to_timestamp('2019-05-26 10:30:00','YYYY-MM-DD hh24:MI:SS')

ddl语言和dml语言的区别:

Ddl:数据定义 语言(操作表结构) create – drop-- alter --modify,数据不会进入回滚段,是直接操作

Dml:数据操作语言(操作表数据) insert-- delete-- update-- select,数据先进入回滚段,commit就直接操作,rollback就又回到操作之前的状态

Truncate和delete的区别

1:Truncate截断表,先删后建,delete是直接删空表数据

2:Truncate删除之后id从1开始,delete删除之后接着最大值开始

3:Truncate是ddl语言,delete是dml语言,Truncate不记录到回滚段,delete是先把数据存入回滚段

4:Truncate速度快与delete

对垃圾站的操作:

1,从回收站闪回表

flashback table 表名 to before drop

2,彻底删除回收站里的某一个表

purge table 表名

3,清空回收站

purge recyclebin

五,导入和导出:

把数据导出,换工作环境,然后导入,继续工作。在软件上自带导入导出,我们学习das命令的导入导出(oracle导入导出的是用户)

1,导出数据(exp):

创建用户,创建表,给用户的表里面添加数据:

a6cf566645c5e3ad608e530a0aae08f4.png

在dos窗口导出这个用户yangyang/yangyang

0455c6f28280e26b5c74ca12e22f7961.png

在d盘看到导出的文件

348230694441acddd096a51d5f0135c4.png

2,导入:imp,为了测试,先删除表中类容

1935506ec47724d7c4de68d12903110d.png

查看表中类容发现导入了数据:

60523d6a3d55da7fa54edcaa0728f8ee.png

oracle008:oracle自增,自适应,数据闪回,导入导出相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值