Navicat Premium是一个可链接多种数据库的管理工具,它可让你以单一程序同时链接到MySQL、Oracle及PostgreSQL数据库,让管理不一样类型的数据库更加的方便。服务器
DBA最大的麻烦之一是处理重复数据。无论咱们如何防范,重复数据老是会设法进入到表格。重复数据是一个大问题,由于它会影响应用程序视图(每一个项都应该是惟一的)、扭曲统计信息,在严重状况下还会增长服务器开销。工具
在本技巧中,咱们将学习如何识别MySQL中的重复数据,以及如何删除它们而不删除宝贵的有效数据。学习
您将遇到的大多数重复记录是两种不一样类型之一:重复含义和非惟一键。在本篇文章中,咱们将处理重复含义;在下篇文章中,咱们将处理非惟一键。spa
重复意义是最多见的重复类型。在这种状况下,两个或多个字段的内容不相同,但它们的含义是相同的。你能够把它看做是语义上的重复数据。code
考虑下表摘录:blog
1ci 2rem 3get 4 5 6 7 |
|
在媒体专栏中,“Television”和“TV”两个词条的含义相同,但表达方式不一样。这个问题一般是由使用自由文本输入引发的,有限的下拉列表是更好的选择。
这种类型的复制处理起来很是困难,由于不能使用select distinct排除重复项。
有两种方法能够解决这个问题:
1.使用replace()选择数据,将不须要的值替换为但愿看到的值:
1 2 3 |
|
2.更新实际表数据。下面是一个声明,用首选的“TELEVISION”值更新“TV”的全部实例:
1 2 3 |
|
下面是一个真实的例子!
一些不须要的卷曲撇号进入了数据。注意“O'BRIEN”和“O'BRIEN”条目:
1 2 3 4 5 6 7 |
|
咱们能够像上面那样处理这个问题:
1.使用replace()选择数据,用常规的单引号替换大撇号,这样咱们就能够始终处理相同的字符:
1 2 3 4 |
|
2.更新实际表数据。此语句用常规单引号更新姓氏列中的全部撇号:
1 2 3 |
|
重复记录、双精度、冗余数据、重复行;不管您如何称呼它们,它们都是DBA生命中最大的缺陷之一。然而,重要的是要按期清除它们,以避免产生错误的统计数据并混淆与数据库交互的用户。