In Datenbase Letztes Updateated:
Teilen:
Cloudways bietet verwaltetes Cloud-Hosting für Unternehmen jeder Größe zum Hosten einer Website oder komplexer Webanwendungen.

Erfahren Sie, wie die TRUNCATE und LÖSCHEN stateWelche Funktionen in SQL funktionieren, welche Unterschiede es gibt und wann Sie das eine dem anderen vorziehen sollten.

Wenn Sie mit Datenbanktabellen arbeiten, müssen Sie möglicherweise eine Teilmenge von löschen rows oder alle rows. Löschen rows Aus einer Datenbanktabelle können Sie SQL TRUNC verwendenATE oder der DELETE stateje nach Anwendungsfall.

In diesem Tutorial werfen wir einen genaueren Blick auf die einzelnen statenungen, verstehen Sie, wie sie funktionieren, und entscheiden Sie, wann Sie TRUNC bevorzugenATE über DELETE und umgekehrt.

Bevor wir fortfahren, ist es hilfreich: revSehen Sie sich die folgenden SQL-Teilmengen an: 

  • Datendefinitionssprache (DDL) statements werden zur Erstellung verwendetate und verwalten Sie Datenbankobjekte wie Tabellen. Das SQL CREATE, DROP und TRUNCATE statements sind Beispiele für DDL statemente.
  • Datenmanipulationssprache (DML) statewerden zur Manipulation verwendetate Daten innerhalb von Datenbankobjekten. DML stateElemente werden zum Erstellen, Lesen, Aktualisieren und Löschen von Datensätzen verwendet.
  • Datenabfragesprache (DQL) stateElemente werden zum Abrufen von Daten aus Datenbanktabellen verwendet. Alle SELECT stateElemente fallen unter die DQL-Untermenge.

So verwenden Sie SQL TRUNCATE Statement

Syntax des SQL TRUNCATE Statement

Die Syntax zur Verwendung von SQL TRUNCATE statement ist wie folgt:

TRUNCATE TABLE table_name;

Führen Sie den oben genannten TRUNC ausATE Befehl löscht alle rows in der Tabelle angegeben durch table_name– und löscht die Tabelle nicht.

Der Stammate Der Vorgang durchsucht nicht alle Datensätze in der Tabelle. Daher ist es bei der Arbeit mit großen Datenbanktabellen einigermaßen schneller.

SQL TRUNCATE Anwendungsbeispiel

📑 Hinweis: Wenn Sie haben MySQL Wenn Sie MySQL auf Ihrem Computer installiert haben, können Sie mit dem MySQL-Befehlszeilen-Client mitprogrammieren. Sie können auch in einem anderen DBMS Ihrer Wahl mitmachen, z PostgreSQL.

Lassen Sie uns zuerst erstellenate eine Datenbank zum Arbeiten mit:

mysql> CREATE DATABASE db1;
Query OK, 1 row affected (1.50 sec)

Wählen Sie dann die Datenbank aus, die wir gerade erstellt habenated:

mysql> use db1;
Database changed

Der nächste Schritt ist die Erstellungate eine Datenbanktabelle. Führen Sie die folgende CRE ausATE TABELLE statement zu create eine einfache tasks Tabelle:

-- Create the tasks table
CREATE TABLE tasks (
    task_id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    due_date DATE,
    status ENUM('Pending', 'In Progress', 'Completed') DEFAULT 'Pending',
    assignee VARCHAR(100)
);

In diesem Beispiel tasks Tabelle hat die folgenden Spalten:

  • task_id: Eine Automatikally Erhöhen der eindeutigen Kennung für jede Aufgabe.
  • title: Der Titel oder Name der Aufgabe, begrenzt auf 255 Zeichen.
  • due_date: Die fällige date für die Aufgabe, dargestellt als Anzeigeate.
  • status: Der Status der Aufgabe, der „Ausstehend“, „In Bearbeitung“ oder „Abgeschlossen“ sein kann. Der Standardwert ist auf „Ausstehend“ eingestellt.
  • assignee: Der Beauftragte für die jeweilige Aufgabe.

Jetzt, wo wir Cre habenated die tasks Tabelle, fügen wir Datensätze hinein:

-- Inserting multiple records into the tasks table
INSERT INTO tasks (title, due_date, status, assignee)
VALUES
    ('Task 1', '2023-08-10', 'Pending', 'John'),
    ('Task 2', '2023-08-11', 'In Progress', 'Jane'),
    ('Task 3', '2023-08-12', 'Completed', 'Mike'),
    ('Task 4', '2023-08-13', 'Pending', 'Alice'),
    ('Task 5', '2023-08-14', 'In Progress', 'Bob'),
    ('Task 6', '2023-08-15', 'Completed', 'Emily'),
    ('Task 7', '2023-08-16', 'Pending', 'David'),
    ('Task 8', '2023-08-17', 'In Progress', 'Olivia'),
    ('Task 9', '2023-08-18', 'Pending', 'Daniel'),
    ('Task 10', '2023-08-19', 'Completed', 'Sophia'),
    ('Task 11', '2023-08-20', 'Pending', 'Matthew'),
    ('Task 12', '2023-08-21', 'In Progress', 'Ava'),
    ('Task 13', '2023-08-22', 'Completed', 'William'),
    ('Task 14', '2023-08-23', 'Pending', 'Ella'),
    ('Task 15', '2023-08-24', 'In Progress', 'James'),
    ('Task 16', '2023-08-25', 'Completed', 'Lily'),
    ('Task 17', '2023-08-26', 'Pending', 'Benjamin'),
    ('Task 18', '2023-08-27', 'In Progress', 'Mia'),
    ('Task 19', '2023-08-28', 'Pending', 'Henry'),
    ('Task 20', '2023-08-29', 'Completed', 'Isabella');

Beim Ausführen der Einfügemascheatement sollten Sie eine ähnliche Ausgabe sehen:

Query OK, 20 rows affected (0.18 sec)
Records: 20  Duplicates: 0  Warnings: 0

Führen Sie nun den TRUNC ausATE Tabellenbefehl zum Löschen aller Datensätze aus tasks Tabelle:

TRUNCATE TABLE tasks;
Query OK, 0 rows affected (0.72 sec)

Dadurch werden alle Datensätze und nicht die Tabelle entfernt. Sie können dies überprüfen, indem Sie ausführen SHOW TABLES; so:

SHOW TABLES;
+---------------+
| Tables_in_db1 |
+---------------+
| tasks         |
+---------------+
1 row in set (0.00 sec)

Und eine SELECT-Abfrage zum Abrufen von Daten aus der Aufgabentabelle gibt einen leeren Satz zurück:

SELECT * FROM tasks;
Empty set (0.00 sec)

So verwenden Sie SQL DELETE Statement

Syntax des SQL DELETE Statement

Die allgemeine Syntax zur Verwendung des SQL DELETE statement ist wie folgt:

DELETE FROM table_name 
WHERE condition;

Der condition in der WHERE-Klausel ist das Prädikatate das bestimmt welche dauert ebenfalls 3 Jahre. Das erste Jahr ist das sog. rows sollte gelöscht werden. Der DELETE statement löscht alles rows für das das Prädikatate ist wahr.

Der DELETE stateDadurch haben Sie eine bessere Kontrolle darüber, welche Datensätze gelöscht werden.

Aber was passiert, wenn Sie den DELETE-Befehl verwenden?atement ohne die WHERE-Klausel?🤔

DELETE FROM table_name;

Ausführen des DELETE statement wie gezeigt löscht alle rows in der Datenbanktabelle.

Wenn ein DELETE statement oder eine Reihe von DELETE stateDa die Änderungen Teil einer nicht festgeschriebenen Transaktion sind, können Sie die Änderungen rückgängig machen. Es wird jedoch empfohlen, Ihre Daten an anderer Stelle zu sichern.

Beispiel für die Verwendung von SQL DELETE

Sehen wir uns nun den SQL-Löschvorgang anatein Aktion.

Wir haben alle Datensätze aus dem gelöscht tasks Tisch. So können Sie den INSERT st erneut ausführenatement (das wir zuvor ausgeführt haben) zum Einfügen von Datensätzen:

-- Inserting multiple records into the tasks table
INSERT INTO tasks (title, due_date, status, assignee)
VALUES
    ('Task 1', '2023-08-10', 'Pending', 'John'),
    ('Task 2', '2023-08-11', 'In Progress', 'Jane'),
    ('Task 3', '2023-08-12', 'Completed', 'Mike'),
    ...
    ('Task 18', '2023-08-27', 'In Progress', 'Mia'),
    ('Task 19', '2023-08-28', 'Pending', 'Henry'),
    ('Task 20', '2023-08-29', 'Completed', 'Isabella');

Zuerst verwenden wir den DELETE-Befehlatement mit der WHERE-Klausel. Die folgende Abfrage löscht alle rows deren Status „Abgeschlossen“ lautet:

DELETE FROM tasks WHERE status = 'Completed';
Query OK, 6 rows affected (0.14 sec)

Führen Sie nun diese SELECT-Abfrage aus:

SELECT * FROM tasks;

Sie werden sehen, dass es 14 sind rows zur Zeit:

+---------+---------+------------+-------------+----------+
| task_id | title   | due_date   | status      | assignee |
+---------+---------+------------+-------------+----------+
|       1 | Task 1  | 2023-08-10 | Pending     | John     |
|       2 | Task 2  | 2023-08-11 | In Progress | Jane     |
|       4 | Task 4  | 2023-08-13 | Pending     | Alice    |
|       5 | Task 5  | 2023-08-14 | In Progress | Bob      |
|       7 | Task 7  | 2023-08-16 | Pending     | David    |
|       8 | Task 8  | 2023-08-17 | In Progress | Olivia   |
|       9 | Task 9  | 2023-08-18 | Pending     | Daniel   |
|      11 | Task 11 | 2023-08-20 | Pending     | Matthew  |
|      12 | Task 12 | 2023-08-21 | In Progress | Ava      |
|      14 | Task 14 | 2023-08-23 | Pending     | Ella     |
|      15 | Task 15 | 2023-08-24 | In Progress | James    |
|      17 | Task 17 | 2023-08-26 | Pending     | Benjamin |
|      18 | Task 18 | 2023-08-27 | In Progress | Mia      |
|      19 | Task 19 | 2023-08-28 | Pending     | Henry    |
+---------+---------+------------+-------------+----------+
14 rows in set (0.00 sec)

Führen Sie den folgenden DELETE-Schritt ausatement löscht alle verbleibenden 14 Datensätze in der Tabelle:

DELETE FROM tasks;
Query OK, 14 rows affected (0.20 sec)

Und die Aufgabentabelle ist jetzt leer:

SELECT * FROM tasks;
Empty set (0.00 sec)

Der SQL DROP Statement

Bisher haben wir gelernt:

  • Der TRUNCATE statement löscht alle rows vom Tisch.
  • Der DELETE statement – ​​ohne WHERE-Klausel – löscht alle Datensätze aus der Tabelle.

Allerdings ist der TRUNCATE und LÖSCHEN stateEinträge löschen die Tabelle nicht. Wenn Sie die Tabelle aus der Datenbank löschen möchten, können Sie die verwenden DROP TABLE Befehl etwa so:

DROP TABLE table_name;

Jetzt löschen wir die Aufgabentabelle aus der Datenbank:

mysql> DROP TABLE tasks;
Query OK, 0 rows affected (0.43 sec)

Das wirst du sehen SHOW TABLES; gibt einen leeren Satz zurück (da wir die einzige Tabelle gelöscht haben, die in der Datenbank vorhanden war):

mysql> SHOW TABLES;
Empty set (0.00 sec)

Wann sollte TRUNC verwendet werden?ATE vs. DELETE in SQL

Serienmäßige FunktionenTRUNCATELÖSCHEN
SyntaxTRUNCATE TABLE table_name;Mit WHERE-Klausel: DELETE FROM table_name WHERE condition;
Ohne WHERE-Klausel: DELETE TABLE table_name;
SQL-TeilmengeDatendefinitionssprache (DDL)Datenmanipulationssprache (DML)
BewirkenLöscht alle rows in der Datenbanktabelle.Bei Ausführung ohne die WHERE-Klausel wird der DELETE statement löscht alle Datensätze in der Datenbanktabelle.
LeistungEffizienter als der DELETE statebeim Arbeiten mit großen Tischen.Weniger effizient als der TRUNCATE statement.

Um zusammenzufassen:

  • Wenn Sie alle löschen müssen rows aus einer großen Datenbanktabelle verwenden Sie TRUNCATE statement.
  • Um eine Teilmenge davon zu löschen rows Verwenden Sie je nach bestimmten Bedingungen den DELETE-Befehlatement.

Summieren

Lassen Sie uns unsere Diskussion mit einer Zusammenfassung abschließen:

  • Wenn Sie mit Datenbanktabellen arbeiten, möchten Sie möglicherweise die Teilmenge von entfernen rows oder alle rows in einer bestimmten Tabelle. Dazu können Sie den TRUNC verwendenATE oder der DELETE statemente.
  • Der TRUNCATE statement hat die Syntax: TRUNCATE TABLE table_name;. Es löscht alle rows in der Tabelle angegeben durch table_name aber löscht die Tabelle nichtself.
  • Der DELETE statement hat die Syntax: DELETE FROM table_name WHERE condition;. Dadurch wird das entfernt rows für das das Prädikatate condition ist wahr.
  • Ausführen des SQL DELETE statement ohne Die WHERE-Klausel löscht alle rows in der Tabelle. Also Funktionally, dadurch wird das gleiche Ergebnis erzielt wie mit SQL TRUNCATE statement.
  • Ausführen von TRUNCATE ist besondersally schneller, wenn mit größeren Tabellen gearbeitet wird, da nicht die gesamte Tabelle gescannt wird. Wenn Sie also alles löschen müssen rows Führen Sie in einer großen Datenbanktabelle trunc ausate kann effizienter sein.
  • Wenn Sie eine Teilmenge von löschen müssen rows– basierend auf einer bestimmten Bedingung – können Sie den SQL DELETE st verwendenatement.

Für eine schnelle revSehen Sie sich hier eine Übersicht über häufig verwendete SQL-Befehle an SQL-Spickzettel.

Teilen:
  • Bala Priya C
    Autor
    Bala Priya ist Entwickler und Techniker writer aus Indien mit über drei Jahren Erfahrung im Bereich des Schreibens technischer Inhalte. Sie teilt ihre Erkenntnisse mit der Entwickler-Community, indem sie technische Tutorials, Anleitungen und mehr verfasst.
  • Narendra Mohan Mittal
    Herausgeber

    Narendra Mohan Mittal ist ein vielseitiger und erfahrener Digitalbranding strateKern- und Inhaltsredakteur mit über 12 Jahren Erfahrung. Er ist Goldmedaillengewinner in M-Tech und B-Tech in Informatik und Ingenieurwesen.


    Zur Zeit,…

Danke an unsere Sponsoren

Weitere großartige Lesungen auf Database

Treiben Sie Ihr Geschäft an

Einige der Tools und Services, die Ihrem Unternehmen helfen grow.