• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 数据库记录删除方式 有哪些

数据库记录删除方式 有哪些

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了数据库,哪些,方式等相关知识,希望本文的分享对您有所帮助

引言

删除数据库记录是一个非常常见的需求,当数据失去价值时,我们便会删除它,但是如果操作不当,往往就会把一些有价值的数据误删掉,造成重要数据的丢失,合理采用删除方式才能更好地利用数据资源,下面介绍几种常用的删除方式。

删除方式

物理删除

物理删除就是直接从数据库中删除一条或多条记录,将数据从磁盘上擦除,可以使用DELETE FROMSQL语句实现,这种方式产生的后果就是记录永久性删除,无法找回,一般适用于小型或数据重要性不高的项目,可以提高数据库资源利用率。物理删除方式是一种最简单最基本的数据删除方式,这里不多做介绍,我们主要来看一下逻辑删除方式。

逻辑删除

所谓的逻辑删除就是实现记录已删除的效果,但实际上数据仍然存在于数据库中,只是对用户隐藏这一部分数据。一些大型的、数据关联性高、数据重要性高的应用往往会采用这种删除方式,它可以实现回收站、删除恢复、查看历史版本等实用功能,根据业务的需要有不同的应用场景。

应用场景

例如,在一些邮箱应用中,当你删除一条邮件时,不会将邮件直接删除,而是把邮件移动到回收站,你可以在回收站中对邮件进行恢复、彻底删除等操作,可以有效防止误删等情况。
再比如博客管理平台一般都会提供查看修改历史、比较历史版本等功能,我们可以方便地查看文章的修改历史,以及恢复到之前某一版本。

实现思路

标记删除

采用删除标记的方式可以很容易地实现逻辑删除功能,通过在表中添加一个删除标记字段,将正常记录的该字段设置为0,已删除记录的该字段设置为1,查询时添加一个where条件筛选删除标记为0的记录,就可以实现逻辑删除的功能,此时的删除业务只需要将记录的删除标记字段修改为1即可。

拉链

拉链方式来源于数据仓库,是针对数据仓库设计中表存储数据的方式而定义的,所谓拉链,就是记录历史,记录一个事物从开始到当前状态的所有变化信息。拉链算法是目前数据仓库领域最典型的算法之一。
这种方式的表结构与普通表的区别在于多了两个字段(START_DATE&END_DATE)表示记录的有效时间,分别为记录添加时间和记录最大有效时间。

  • 数据表采用联合主键的方式,使用id和START_DATE来唯一的表示某条记录,如:


    CREATE TABLE `table_name` (
    `id` INT NOT NULL AUTO_INCREMENT,
    `start_date` datetime NOT NULL,
    `end_date` datetime NOT NULL,
    ...,primary key(`id`,`start_date`)
    )ENGINE=MYISAM DEFAULT CHARSET=utf8;
  • 新增记录时START_DATE可设置为当前时间,END_DATE设置为null或未来某个时间来表示无穷大,如:


    insert into table_name(start_date,end_date,...) values(当前时间,一百年后,...);
  • 查询数据时只要对日期进行筛选就可得到当前有效的记录,例如


    select * from table_name where id=记录ID and start_date<=当前时间 and end_date>当前时间;
  • 修改记录的方式与传统方式不同,修改操作并不是直接修改数据库中的某条记录,而是把修改的原有效记录的END_DATE设置为当前时间,接下来新增一条完整的、修改后的记录,如:


    update table_name set end_date=当前时间 where id=原记录ID and end_date=一百年后;insert into table_name(id,start_date,end_date,...) values(原记录ID,当前时间,一百年后,...);
  • 删除操作很简单,不是真的将记录从数据表中移除,只需把记录的END_DATE设置为当前时间即可,如:


    update table_name set end_date=当前时间 where id=删除记录ID;
  • 通过这种方式可以完整地记录下数据的变化情况,使用下面的查询语句就可以获取某条记录的完整版本列表以及查看特定版本的内容:
    " sql
    -- 获取版本列表

  • select start_date from table_name where id=记录ID order by start_date;

-- 查看特定版本内容

select * from table_name where id=记录ID and start_date=版本日期;

写在最后

不同的业务需要根据其应用场景来选择合适的数据删除方式,一般的应用可以采用物理删除的方式,简单粗暴地将数据擦除,这样可以有效提高数据库地利用率,如果历史数据一点价值都没有或者价值不高,那还留着干什么,这时如果采用逻辑删除地方式反而加重了数据库的负担,浪费了大量宝贵的资源。但是有些项目如金融、交通、能源等领域的历史数据,往往具有很高的利用价值,通过对这些数据进行分析总结,可以更好的了解该领域的发展情况和健康程度,以及对未来的发展规划起到一定指导作用,这时就要采用逻辑删除的方式,虽然数据管理平台为了便于管理,删除了过期的数据,但数据分析系统仍能从数据库中获取到历史数据,通过抽取转换加载的过程,将历史数据转化为高价值的内容,这是目前信息技术发展的主要趋势。

以上就是数据库记录删除方式 有哪些的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析远程连接管理其他机器上的MYSQL数据库
  • 解析mysql 缓存如何使用内存
  • 浅析mysql 语句的调度优先级及改变
  • 关于mysql 的时间类型选择
  • 基于mysql体系结构的深入解析
  • 解析mysqldump的delay-insert选项
  • 优化mysql数据库的经验总结

相关文章

  • 2017-05-11MYSQL中获取得最后一条记录的语句
  • 2017-11-28MySQL中特定格式的字符串部分完全匹配查询
  • 2017-05-11mysql修改数据库编码(数据库字符集)和表的字符编码的方法
  • 2018-12-05一个分页存储过程代码
  • 2018-12-05oracle to_char函数将number转成string
  • 2017-05-11mysql 修改用户密码图文介绍
  • 2018-12-05mysql 协议的ResultsetRow包及解析
  • 2018-12-05MySQL常见SQL语句使用方法总结
  • 2017-05-11MySQL查询和修改auto_increment的方法
  • 2018-12-05Mysql使用insert插入多条记录批量新增数据实例教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Mysql数据库绿色版如何安以及解决1067错误图文教程
    • MySQL高级十六——内存优化
    • sirius的学习笔记(2)
    • Oracle中返回结果集的存储过程分享
    • mysql进阶(十九)SQL语句如何精准查找某一时间段的数据
    • php连接mysql数据库详细步骤(图文)
    • Mysql中的find_in_set的使用方法介绍
    • mysql数据库管理工具phpmyadmin的配置
    • 内网ssh/mysql登录缓慢的解决方法
    • 利用db_link创建物化视图数据同步到数据仓库

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有