Oracle入门笔记(八)——事务与表操作

1.什么是DML?

   其实这个是相对于SQL而言的,数据库里面只要是用来非查询操作数据的都是DML,包括数据的添加、更新、或者删除。DML依据一个集合构成了一个被称为事务的逻辑单元。对于这个事务的概念,可能你听说过比较经典的转钱问题就明白,但是在Oracle中普通数据的增加等都需要使用事务,也就是说不像MySQL那么直接,举个例子:在employees表中插入一条数据:
在这里插入图片描述
接着查询一下:
在这里插入图片描述
接着进数据表查看,发现没有数据(原因是Oracle重点额事务机制还需要提交数据):
在这里插入图片描述
在Oracle数据库中,需要手动提交事务的操作结果,否则现在处理的数据实际是开辟了临时表空间,如果不提交那么关闭数据库之后这些更改会消失。接下来利用commit;提交数据,返回employees数据表并刷新数据表,得到结果如下(插入成功):
在这里插入图片描述
如果没有手动提交,那么Oracle会给出提示:
在这里插入图片描述

2.数据插入注意点

(1)字段和需要插入的数据需要对应,如果是对表中的字段全部插入,那么可以省略插入时候对数据表和列的指定;
(2)对于可以为空的字段,可以使用default的关键字启用默认值或者null显式指定,还可以直接插入的时候使用,隔开。
(3)对于字符串的插入,如果全为数字,需要使用'',否则会产生ORA-00984报错;
(4)对于日期的插入,可以使用:sytemdate'25-3月 -22''25/3月/2022'to_date('2022-03-12','yyyy-mm-dd')但是使用to_date()形式转化,最终还是会被数据表内部的约束限制而还原。

3.数据表的创建

(1)直接创建数据表,给出创建实例:
在这里插入图片描述
(2)基于查询的创建数据表(有点类似于数据表的拷贝),给出创建实例:
在这里插入图片描述

4.数据更新

     比较简单,需要注意同样需要commit提交(不同的SQL中的提交不是同步的,提交以SQL操作框为单位),注意条件,否则将会更改大量数据。
在这里插入图片描述

5.数据删除

在这里插入图片描述
补充:TRUNCATE TABLE 命令用于删除现有数据表中的所有数据。

6.什么是事务?

     事务是指为单个逻辑单元执行一些列DML操作,要么这些操作都执行,要么都不执行。事务具有一下几个特性:
(1)原子性,不可再分,和概念说的中一样;
(2)一致性,一个事务应该保护所有定义在数据上的不变的属性(例如完整性等),在完成事务的时候数据应该保持一致性,典型的转钱;
(3)隔离性,一个事务的执行不会影响其他事务的执行;
(4)持久性,事务一旦提交,对于数据库数据的更改是永久性的。
(5)事务包含显示事务和隐式事务,隐式事务(如DDL、DCL等)无法操作,由数据库自己完成。
事务操作有三大核心函数:
(1)commit,提交事务;
(2)rollback,事务回滚,撤销对数据的操作;
(3)savepoint,设置事务点;

7.表操作(DDL)

     数据表操作需谨慎,在Oracle中需要注意一下几种方式:
(1)获取数据库中的所有数据表,user_tables是一个系统数据表(数据字典),用来记录数据库中的数据表的各种信息:

select table_name from user_tables;

(2)获取本用户所具有的不同的对象类型:

select distinct object_type from user_objects;

在这里插入图片描述
(3)查看用户所具有的表、视图、同义词和序列:

select * from user_catalog;

(4)给表添加指定列:

alter table employees add username varchar2(30) default 'flying_dark_feather';

说明:默认新插入的列项会出现在最后。
在这里插入图片描述
(5)修改表指定列:

alter table employees modify username varchar2(30) default 'flying_dark_feather';

(6)修改表指定列:

alter table employees drop COLUMN username ;

(7)修改表指定列:

alter table employees rename COLUMN username to name;

(8)truncate截断数据表:

truncate table employees;

注意:直接保留结构删除数据,不能给where条件,隐式事务,不支持回滚,相比于delete 删除所有性能更好。
(9)drop删除数据表:

drop table employees;

注意:支持回滚。
(10)flashback回闪技术,用于被删除的数据表的恢复,首先 ,可以利用user_recyclebin查看被删除的数据表信息:

select object_name,original_name,droptime from user_recyclebin;

在这里插入图片描述
恢复数据表指令:

FLASHBACK table "temp_table" to before drop;

在这里插入图片描述
     最后补充说明与一个概念,DCL数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。由 GRANTREVOKE 两个指令组成,视图模块再细讲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌空暗羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值