通俗理解逻辑删除和物理删除的区别

Posted Firm陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通俗理解逻辑删除和物理删除的区别相关的知识,希望对你有一定的参考价值。

一.逻辑删除
逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。
对应的SQL语句:update 表名 set is_delete = 1 where id = 1;语句表示,在该表中将id为1的信息进行逻辑删除,那么客户端进行查询id为1的信息,服务器就不会提供信息。倘若想继续为客户端提供该信息,可将 is_delete 更改为 0 。

二.物理删除
物理删除就是真正的从数据库中做删除操作了。
对应的SQL语句:delete from 表名 where 条件;执行该语句,即将数据库中该信息进行彻底删除,无法恢复。
关于回收站的原理,其实就是利用了逻辑删除,对于删除文件进入回收站的本质只是在操作系统的帮助下对文件加上了 某个标记,资源管理器中对含有这种标记的文件不会显示。当从回收站恢复的时候只是移除了加上的标记而已,而清空回收站就是进行了物理删除。
而商城网站,如淘宝,京东…会大量使用逻辑删除进行操作数据库。

切记,作为编程人员对于删除,一定要慎之又慎,一定要再三考虑。特别是物理删除,可以的话,就忘掉他吧。

<!--逻辑查询方法-->
    <select id="findList" resultType="HpjZlqd">

        select * from HPJ_ZLQD a where a.status = 0
        <if test="name != null and name != ''">
            and a.name like '%'||#{name}||'%'
        </if>
        <if test="xmlx != null and xmlx != ''">
            and a.xmlx = #{xmlx}
        </if>
        <if test="zllb != null and zllb != ''">
            and a.zllb = #{zllb}
        </if>
        order by a.create_Date desc
    </select>


    <!--逻辑删除方法-->
    <update id="logicalDelete" parameterType="com.jeesite.modules.zlqd.entity.HpjZlqd">

        update HPJ_ZLQD set status = 1 where id = #{id}

    </update>

以上是关于通俗理解逻辑删除和物理删除的区别的主要内容,如果未能解决你的问题,请参考以下文章

物理删除和逻辑删除的区别

逻辑删除 和 物理删除

什么是逻辑设计和物理设计,两者的区别什么?

219期面试官:谈谈MySQL的limit用法逻辑分页和物理分页

SQLSERVER逻辑数据库哪个可以删除

OracleRMAN物理备份技术之管理维护