当前位置: 首页 > article >正文

Oracle删除列操作:逻辑删除和物理删除

概念

逻辑删除:逻辑删除并不是真正的删除,而是将表中列所对应的状态字段(status)做修改操作,实际上并未删除目标列数据或恢复这些列占用的磁盘空间。比如0是未删除,1是删除。在逻辑上数据是被删除了,但是数据本身还在数据库中,只是不进行对外提供了,逻辑删除的本质是修改操作(将is_delete的值进行0和1之间的修改)。

例如:电脑的回收站使用的原理就是逻辑删除。删除的文件进入回收站的本质只是在操作系统的帮助下对文件加上了某种标记,资源管理器对这种含有标记的文件不显示。当回收站恢复的时候,即移除这种标记。当清空回收站的时候进行的是物理删除。一般的商城网站使用的是逻辑删除来操作数据库。

物理删除:使用delete、truncate、drop语句删除数据,物理删除就是把数据从硬盘中删除,释放空间,缩小体积,对性能的提升有帮助
II.缺点
物理删除是从根源上面删除,几乎无法恢复数据
物理删除会造成主键不连续,分页查询数据慢
III. 应用的地方
核心的业务表不用物理查询

实操

仍然使用之前建立的数据表进行测试,直达链接:Oracle中新建数据表的两种方法(单击进入文章)

逻辑删除语法:

--逻辑删除一列
alter table JT_CS.STUINFO_01 set unused (ENROLDATE) ONLINE;
--逻辑删除两列
alter table JT_CS.STUINFO_01 set unused (CLASSNO, ENROLDATE);

可以从DBA_UNUSED_COL_TABS视图查看每个表中未使用的列的数量:

select * from DBA_UNUSED_COL_TABS;

完成此操作后,再次查询表JT_CS.STUINFO_01将不再看到刚刚逻辑删除的列。如果以后有时间物理删除列,可以使用以下方法完成,语法如下:

--语句是对未使用的列唯一允许的操作。它从表中物理删除未使用的列并回收磁盘空间。
alter table table_name drop unused columns ONLINE ;

--该子句导致在处理指定数量的行后应用检查点,在本例中为 1000。
--检查点减少了删除列操作期间累积的undo日志量,以避免undo空间的潜在耗尽。
alter table table_name drop unused columns checkpoint XX;

物理删除语法:

--物理删除单列
alter table table_name drop column column_name;
--物理删除多列
alter table table_name drop (column_name1, column_name2);

例如:现在,我要物理删除数据表JT_CS.STUINFO_01里的SEX、AGE两列字段和单独删除一个字段IDNUMBER。

原始数据

--物理删除单列
alter table JT_CS.STUINFO_01 drop column IDNUMBER;
--物理删除多列
alter table JT_CS.STUINFO_01 drop (SEX, AGE);

现在我们来查下DBA_UNUSED_COL_TABS视图,看下刚刚逻辑删除未使用的列还存在吗?

经查询,逻辑删除未使用的列已经不存在,空结果集。

结论:从表中物理删除一列将导致该表中所有未使用的列同时被删除(即有set unused 的列将被删除)。
注意:大表一般不用这种方法删除,对业务影响太严重,在及时性要求不高的情况下,小表可以这么操作。


http://www.kler.cn/a/16199.html

相关文章:

  • Git回到某个分支的某次提交
  • 力扣 LeetCode 541. 反转字符串II(Day4:字符串)
  • 【学习日记】notebook添加JAVA支持
  • android studio 更改gradle版本方法(备忘)
  • Unity安装后点击登录没反应
  • PHP反序列化_3-漏洞利用
  • 【Linux - Shell常用命令】- 判断文件是否存在、去掉文件后缀
  • [java]云HIS:检验字典维护
  • No.054<软考>《(高项)备考大全》【冲刺8】《软考之 119个工具 (6)》
  • 【SAS应用统计分析】方差分析
  • 普通的2D Average pooling是怎么进行backward的呢?
  • [Pandas] 查看DataFrame的常用属性
  • 云原生CAx软件:多租户的认证
  • MySQL数据库,JDBC连接数据库操作流程详细介绍
  • 西门子PLC沿脉冲类指令汇总
  • 5.5.1哈夫曼树
  • GDKOI 2023游记总结
  • 【BeautifulSoup上】——05全栈开发——如桃花来
  • Afkayas.1(★)
  • 学习系统编程No.20【进程间通信之命名管道】
  • 大数据架构(一)背景和概念
  • 从0搭建Vue3组件库(十一): 集成项目的编程规范工具链(ESlint+Prettier+Stylelint)
  • 盈泰德带你了解产品表面缺陷检测系统
  • Idea关闭或开启引用提示Usages和Annotations
  • Vulnhub:DerpNStink 1靶机
  • C语言程序设计:某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。