SQL教程:如何恢复表格中已删除重复项的数据库? (表格删除重复项后怎么恢复数据库)
在进行数据库操作时,删除重复的数据是非常常见的场景。但是,如果不小心将重复数据删除后,后悔仍然有机会。在 SQL 数据库中,还原已删除数据是一项基本技能。在这篇教程中,我们将探讨如何使用 SQL 恢复表格中已删除重复项的数据。
1. 创建测试数据库
为了演示如何恢复数据库,我们需要先创建一个可以测试的数据库。在此,我们将使用 MySQL 数据库。按照以下步骤操作:
“`
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE customers (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
eml VARCHAR(50)
);
INSERT INTO customers (name, eml) VALUES (‘Cady’, ‘cady@test.com’);
INSERT INTO customers (name, eml) VALUES (‘Jason’, ‘jason@test.com’);
INSERT INTO customers (name, eml) VALUES (‘Cady’, ‘cady@test.com’);
INSERT INTO customers (name, eml) VALUES (‘Relle’, ‘relle@test.com’);
INSERT INTO customers (name, eml) VALUES (‘Relle’, ‘relle@test.com’);
INSERT INTO customers (name, eml) VALUES (‘Lily’, ‘lily@test.com’);
“`
在这里我们创建了一个名为 `test_db` 的数据库,并在其中创建了名为 `customers` 的表格。通过 `INSERT` 语句添加了 6 条记录,前两条记录是不重复的,接下来的两条记录是重复的,最后两条记录也是重复的。
2. 查看重复项
我们可以使用 SQL 查询语句查看重复项。执行以下查询语句:
“`
SELECT name, eml, COUNT(*) c FROM customers
GROUP BY name, eml
HAVING c > 1;
“`
输出结果如下:
“`
+——-+—————-+—+
| name | eml | c |
+——-+—————-+—+
| Cady | cady@test.com | 2 |
| Relle | relle@test.com | 2 |
+——-+—————-+—+
“`
我们可以看到,输出结果中有两个名为 “Cady” 和 “Relle” 的重复记录。
3. 删除重复项
接下来,我们将使用 SQL 删除语句删除重复项。执行以下语句:
“`
DELETE FROM customers WHERE id IN (
SELECT MIN(id) FROM customers
GROUP BY name, eml
HAVING COUNT(*) > 1
);
“`
执行以上语句后,我们可以再次查询数据库中的内容,如下所示:
“`
SELECT * FROM customers;
“`
输出结果如下:
“`
+—-+——-+—————-+
| id | name | eml |
+—-+——-+—————-+
| 1 | Cady | cady@test.com |
| 2 | Jason | jason@test.com |
| 4 | Relle | relle@test.com |
| 6 | Lily | lily@test.com |
+—-+——-+—————-+
“`
我们可以看到,经过删除后,数据库中只剩下了 4 条记录,其中重复的条目已经被删除了。
4. 恢复重复项
现在,如果我们希望恢复已删除的重复项,我们可以使用 SQL INSERT INTO 语句。具体操作如下:
“`
INSERT INTO customers (name, eml)
SELECT name, eml FROM (
SELECT name, eml, COUNT(*) c FROM customers
GROUP BY name, eml
HAVING c > 1
) temp
ORDER BY name;
“`
执行以上语句后,我们再次查询数据库,数据如下:
“`
+—-+——-+—————-+
| id | name | eml |
+—-+——-+—————-+
| 1 | Cady | cady@test.com |
| 2 | Jason | jason@test.com |
| 3 | Cady | cady@test.com |
| 4 | Relle | relle@test.com |
| 5 | Relle | relle@test.com |
| 6 | Lily | lily@test.com |
+—-+——-+—————-+
“`
我们可以看到,恢复了两个重复的条目。
结论
在 SQL 中,我们可以轻松地恢复已删除的重复项。我们还可以使用不同的 SQL 查询和删除语句来适应实际情况。请记住,恢复数据之前,请确保先备份数据以供以后参考。