首页 > 数据库 >Oracle删除列操作:逻辑删除和物理删除

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

时间:2023-05-17 17:03:42浏览次数:51  
标签:逻辑 删除 -- Oracle table alter 物理

概念

逻辑删除:逻辑删除并不是真正的删除,而是将表中列所对应的状态字段(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,table,alter,物理
From: https://www.cnblogs.com/since-1995/p/17409289.html

相关文章

  • 删除数据文件
    用户在rac环境当中添加数据文件时文件存放位置没有存放到asm磁盘组存放到文件系统上,上去处理时文件已处于offline状态,expdp导出某张表时报ORA-31693,ORA-01110错误导致某张表没有备份出来查看需要恢复的数据文件select*fromv$recover_file118OFFLINEOFFLINE 18248608502......
  • el禁止已选中select删除指令
    importVuefrom'vue'//和main.js同级,自定义指令控制select已选的不给删除Vue.directive('defaultSelect',{componentUpdated(el,bindings){const[defaultValues]=bindings.valueconstdealStyle=function(tags){//因为......
  • pb中删除事件, ue_del 删除数据窗口某列的值或全部行
    //删除“开松工艺单”Longll_rowCount,ll_temp=1,ll_row,ll_idStringls_openCraftls_openCraft=this.tab_1.tabpage_1.dw_1.Object.open_craft[1]ll_id=Tab_1.Tabpage_1.dw_1.Object.order_id[1]ll_rowCount=this.tab_1.tabpage_1.dw_4.RowCount()ll......
  • Oracle客户端导出服务端数据(数据泵)生成DMP文件并导入
    1.首先了解下EXPDP和EXP的区别   1)EXP和IMP是客户端工具程序,它们既可以在可以客户端使用,也可以在服务端使用。   2)EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLEQ服务端使用,不能在客户端使用   3)IMP只适用于EXP导出文件,不适用于EXPDP导出文件......
  • oracle 10G
      oracle10G安装:数据库口令不可以全部都是数字,否则无法顺利开启EnterpriseManager管理工具 管理工具:SQLplus isqlplus  http:;//localhost:5560/isqlplusEnterpriseManager http:;//localhost:5500/em启动数据库:startupopemmisbb若权限不是 ......
  • 根据inode删除文件
    参考:https://blog.csdn.net/smilejiasmile/article/details/121162741文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。......
  • sqlite 删除数据后文件size并不会减小,解决办法:
    E:\sqlite3>sqlite3db_stu.sqlite3"VACUUM;"E:\sqlite3>dir驱动器E中的卷没有标签。卷的序列号是0672-3CDAE:\sqlite3的目录2023/05/1617:33<DIR>.2023/05/1617:33<DIR>..2023/05/1617:33169,776,128......
  • Laravel5.8-添加、更新、删除数据库字段
    在设计表的时候,往往不能一次性到位,很多的时候会根据需求重新补充缺少的字段   一、添加字段1phpartisanmake:migrationadd_testmore_add_siteid--table=testmore2phpartisanmake:migration#固定格式3add_testmore_add_siteid#对应的生成文件名称,在其中加入......
  • Oracle19c中环境变量ORACLE_PDB_SID对dbca和RU打补丁的影响
     Oracle19c中环境变量ORACLE_PDB_SID对dbca和RU打补丁的影响 假设需要dbca创建一个cdb为oemdb,pdb为empdbrepos。同时,环境变量已经设置了ORACLE_PDB_SID=empdbrepos的情况下进行dbca,会导致dbca报错如下:ORA-65118:operationaffectingapluggabledatabasecannotbeperfo......
  • Element UI el-menu菜单 子级选中后,删除父级下划线
    1.子级选中,父级也选中样式修改: .el-submenu.is-active>.el-submenu__title {color:#FFFFFF;background-color:#7E8796!important;}2.子级选中后,父级有下划线,可以通过以下样式修改去除下划线 .el-menu--horizontal>.el-submenu.el-submenu__title ......