Grundlagen der Datenbanken

Was ist das Ergebnis, wenn in SQL DELETE FROM Mitarbeiter ohne WHERE-Klausel ausgeführt wird?

  1. AAlle Zeilen der Mitarbeitertabelle werden gelöscht, und eine leere Tabelle bleibt zurück
  2. BDie Tabelle selbst wird gelöscht, und auch ihre Definition verschwindet
  3. CDa keine WHERE-Klausel vorhanden ist, tritt ein Fehler auf, und nichts wird gelöscht
Antwort und Erläuterung anzeigen

Antwort: A. Alle Zeilen der Mitarbeitertabelle werden gelöscht, und eine leere Tabelle bleibt zurück

DELETE ist eine DML-Anweisung, die Zeilen aus einer Tabelle entfernt. Mit einer Bedingung in der WHERE-Klausel werden nur die passenden Zeilen gelöscht; fehlt die WHERE-Klausel, wird jede Zeile gelöscht. Auch wenn DELETE alle Zeilen entfernt hat, bleibt die Tabellendefinition (Spaltennamen, Typen und Integritätsbedingungen) erhalten, sodass danach wieder Zeilen mit INSERT eingefügt werden können. Die Tabelle selbst samt Definition löscht die DDL-Anweisung DROP TABLE Mitarbeiter. Dasselbe gilt für UPDATE: Wird die WHERE-Klausel vergessen, wird jede Zeile überschrieben; daher ist es wichtig, die Bedingung vor der Ausführung zu prüfen. Innerhalb einer Transaktion lässt sich die Änderung vor dem COMMIT mit ROLLBACK verwerfen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Die Spalte Punkte einer Testtabelle enthält vier Werte: 80, NULL, 70, 90 (NULL bedeutet, dass die Person nicht am Test teilgenommen hat). Was ist das Ergebnis von SELECT AVG(Punkte) FROM Test?
  2. Die Spalte Punkte einer Ergebnistabelle enthält sechs Werte: 50, NULL, 70, NULL, 90, 30. Welche Antwort zeigt der Reihe nach das Ergebnis von SELECT COUNT(*), COUNT(Punkte), AVG(Punkte) FROM Ergebnis?
  3. Aus einer Mitarbeitertabelle (MitarbeiterNr, Abteilung, Gehalt) sollen die Abteilungen mit einem Durchschnittsgehalt von 300 oder mehr samt diesem Durchschnitt ermittelt werden. Welche SQL-Anweisung ist richtig?
  4. Eine Umsatztabelle (Filiale, Betrag) enthält sieben Zeilen: (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900). Wie viele Zeilen liefert SELECT Filiale, SUM(Betrag) FROM Umsatz GROUP BY Filiale HAVING SUM(Betrag) >= 1000?
  5. Eine Mitarbeitertabelle (Name, Abteilung, Gehalt) hat 8 Zeilen mit folgenden Gehältern je Abteilung: Vertrieb 320, 280, 350; Entwicklung 400, 310; Verwaltung 260, 300; Planung 330. Wie viele Zeilen liefert SELECT Abteilung, COUNT(*) FROM Mitarbeiter WHERE Gehalt >= 300 GROUP BY Abteilung HAVING COUNT(*) >= 2?