概念

逻辑删除:逻辑删除并不是真正的删除,而是将表中列所对应的状态字段(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 的列将被删除)。
注意:大表一般不用这种方法删除,对业务影响太严重,在及时性要求不高的情况下,小表可以这么操作。

————————————————
版权声明:本文为CSDN博主「SQL数据库运维」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46329056/article/details/130460999

Oracle删除列操作:逻辑删除和物理删除的更多相关文章

  1. Java生鲜电商平台-商城系统库存问题分析以及产品设计对逻辑/物理删除思考

    Java生鲜电商平台-商城系统库存问题分析以及产品设计对逻辑/物理删除思考 说明:在生鲜电商的库存设计,是后台的重点,也是难点,关乎商品是否存在超卖.商品的库存增加方式倒不难,直接在后台添加即可,而扣 ...

  2. oracle 大表在线删除列操作(alter table table_name set unused )

    在某些情况下业务建的表某些列没有用到,需要进行删除,但是如果是数据量很大的大表,直接 alter table table_name drop column column_name;这种方法删除,那么将 ...

  3. 说明Oracle数据库逻辑备份和物理备份的方式。

    说明Oracle数据库逻辑备份和物理备份的方式. 解答:Oracle备份包括逻辑备份和物理备份. 1).逻辑备份 数据库的逻辑备份包含读一个数据库记录集和将记录集写入文件. a.输出(Export)输 ...

  4. Oracle如何操作级联删除

    级联删除即删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用.在级联删除中,还删除其外键值引用删除的主键值的所有行. 语法: Foreign Key (column[,...n]) refe ...

  5. oracle使用DataBase Configuration Assistant创建、删除数据库

    可以使用DataBase Configuration Assistant来创建一个心得数据库.Database Configuration Assistant简称是DBCA,是创建.配置以及管理数据库 ...

  6. ORACLE归档日志满了之后,如何删除归档日志

    当ORACLE归档日志满后如何正确删除归档日志 版权声明:本文为博主原创文章,未经博主允许不得转载. 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入OR ...

  7. Oracle列操作(增加列,修改列,删除列)

    Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...

  8. mongodb 物理删除数据

    刚开始用mongodb的时候,感觉很好用,速度很快,不过后面就遇到一个问题,数据物理内存一直增加,删除表也不管用. 然后网上找了各种办法,最后发现一个办法管用,就是物理删除存储数据. 操作如下: 1. ...

  9. 【Oracle基本操作1】 数据库的新建删除

    一.新建数据库 1.新建数据库. 1.1打开 Database Configuration Assistant  : 1.2选择新建数据库,下一步,选第一个"一般用途或事物处理": ...

  10. SQL图形化操作设置级联更新和删除

    SQL级联操作设置   对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法:   第一种:   1. 选择你要进行操作的数据库   2. 为你要创建关系的两个 ...

随机推荐

  1. 我们正在被 DDoS 攻击,但是我们啥也不干,随便攻击...

    最近,一场激烈的攻防大战在网络世界悄然上演. 主角不是什么国家安全局或者黑客组织,而是一家名不见经传的创业公司--TablePlus. DDoS 攻击者们摩拳擦掌,跃跃欲试.他们从四面八方蜂拥而至,誓 ...

  2. 《MySQL技术内幕:InnoDB存储引擎》读书笔记

    SQL语句优化策略 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引. 2.应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建 ...

  3. 前端问题整理 Vite+Vue3+Ts 创建项目及配置 持续更新

    前端问题整理 持续更新 目录 前端问题整理 持续更新 前端 Vue 篇 @项目配置 1.node 版本过高问题 安装nvm 管理node版本 2.镜像证书无效问题 3.npm 版本问题 4.npm i ...

  4. #数学期望,状压dp,记忆化搜索#nssl 1468 V

    分析 赛时写了个\(O(n!)\)的纯暴力,其实我现在才发现\(O(n!)\)的暴力一般都能用\(O(n2^n)\)的状压dp解决 但是其实不是每个状态都能被访问到,所以若\(n\)过大,用\(map ...

  5. #Kruskal重构树,Dijkstra,倍增#洛谷 4768 [NOI2018]归程

    题目传送门 分析 首先Dijkstra是必需的(关于SPFA,它死了233) 无向图,所以先求出1号节点到所有点的距离,然后肯定希望起点能驾驶到离一号点最短的汽车可到的地方 但是怎么办,考虑海拔大的边 ...

  6. 30分钟成为Contributor|共建测试子系统,赋能提升项目代码质量

    如何优雅地参与开源贡献,向顶级开源项目提交 PR(Pull Request),跟着大咖30分钟成为OpenAtom OpenHarmony(以下简称"OpenHarmony") C ...

  7. Git分支教程:详解分支创建、合并、删除等操作

    Git是一种强大的分布式版本控制系统,它的分支功能使得团队协作和代码管理变得更加灵活和高效.分支可以让开发人员在不影响主线开发的情况下进行并行开发和实验性工作.本篇博客将详解Git分支的创建.合并.删 ...

  8. Docker学习路线4:Docker基础知识

    Docker是一个平台,简化了在轻量.可移植的容器中构建.打包和部署应用程序的过程.在本节中,我们将介绍Docker的基础知识.其组件以及您需要开始使用的关键命令. 容器是什么? 容器是一个轻量级.独 ...

  9. 《Spring 测试指南》:JPA、MockMvc 和 @SpringBootTest 详解

    测试 Spring 提供了一组测试工具,可以轻松地测试 Spring 应用程序的各个组件,包括控制器.服务.存储库和其他组件.它具有丰富的测试注释.实用程序类和其他功能,以帮助进行单元测试.集成测试等 ...

  10. C#中操作Excel

    在GIS数据处理中,经常遇到与Excel的交互,这里进行简单的总结. Excel行列号就像是编辑中的二维数据组,操作Excel相当于操作二维数组.遍历.循环.取值.赋值-- 1.添加引用 添加引用也有 ...