Was ist SQL?

Standardsprache relationaler Datenbanken zum Definieren von Tabellen, zum Suchen, Einfügen, Ändern und Löschen von Daten und zum Steuern von Berechtigungen. Sie ist durch ISO/IEC genormt (in Japan zudem als JIS). Zu ihren Anweisungen gehören SELECT, INSERT, UPDATE, DELETE, CREATE TABLE und GRANT.

Japanische Bezeichnung: SQL

„SQL“ kommt in 15 Übungsfragen aus 3 Themen vor, z. B. Grundlagen der Datenbanken, Grundlagen der Informationssicherheit, LSI-Entwurfsablauf und EDA.

Fachgebiet: Grundlagen der Datenbanken

Arten von SQL-Anweisungen

SQL-Anweisungen lassen sich nach ihrer Aufgabe in drei große Gruppen einteilen. Die Datendefinitionssprache (DDL) wie CREATE, ALTER und DROP definiert Strukturen wie Tabellen, Views und Indizes. Die Datenmanipulationssprache (DML) wie SELECT, INSERT, UPDATE und DELETE behandelt die Daten in den Tabellen. Die Datenkontrollsprache (DCL) wie GRANT und REVOKE steuert Berechtigungen. COMMIT, das eine Transaktion festschreibt, und ROLLBACK, das sie verwirft, werden teils zur DCL gezählt, teils gesondert als Anweisungen zur Transaktionssteuerung behandelt.

Klauseln der SELECT-Anweisung und ihre Verarbeitungsreihenfolge

Eine SELECT-Anweisung wird durch Aneinanderreihen von Klauseln geschrieben, etwa SELECT Spalten FROM Tabelle WHERE Bedingung GROUP BY Spalten HAVING Bedingung ORDER BY Spalten. Anders als in der geschriebenen Reihenfolge versteht man die Verarbeitung am besten als FROM (Tabellen bestimmen und verbinden), WHERE (Zeilen auswählen), GROUP BY (Gruppen bilden), HAVING (Gruppen auswählen), SELECT (Spalten entnehmen und Aggregatfunktionen berechnen) und ORDER BY (sortieren). Deshalb können in WHERE keine Aggregatfunktionen stehen, und Bedingungen für Gruppen gehören in HAVING.

Eine deklarative Sprache und der Umgang mit NULL

SQL ist eine deklarative Sprache, in der man beschreibt, welches Ergebnis man haben möchte; die Schritte, um es zu erhalten, legt der Optimierer des DBMS fest. Vorsicht ist bei NULL geboten, das einen unbekannten Wert darstellt. Ein Vergleich mit NULL ist weder wahr noch falsch (unbekannt), daher wird mit IS NULL statt mit = NULL geprüft. Aggregatfunktionen wie SUM und AVG ignorieren NULL; COUNT(*) zählt Zeilen, COUNT(Spalte) dagegen die Zeilen, in denen diese Spalte nicht NULL ist.

Jetzt üben: Fragen zu SQL

SQL-Anweisungen werden in Datendefinitionssprache (DDL), Datenmanipulationssprache (DML) und Datenkontrollsprache (DCL) eingeteilt. Welche Anweisung gehört zur DDL?

  1. AUPDATE Mitarbeiter SET Abteilung = 'Entwicklung' WHERE MitarbeiterNr = 5
  2. BCREATE TABLE Abteilung (AbteilungsID INTEGER PRIMARY KEY, Abteilungsname CHAR(10))
  3. CGRANT SELECT ON Mitarbeiter TO tanaka
Antwort und Erläuterung anzeigen

Antwort: B. CREATE TABLE Abteilung (AbteilungsID INTEGER PRIMARY KEY, Abteilungsname CHAR(10))

DDL-Anweisungen (Data Definition Language) definieren die Struktur einer Datenbank wie Tabellen, Views und Indizes; dazu gehören CREATE, ALTER und DROP. DML-Anweisungen (Data Manipulation Language) behandeln die Daten in den Tabellen; dazu gehören SELECT, INSERT, UPDATE und DELETE. DCL-Anweisungen (Data Control Language) steuern etwa Berechtigungen; dazu gehören GRANT, das einem Nutzer Rechte erteilt, und REVOKE, das sie entzieht. COMMIT, das eine Transaktion festschreibt, und ROLLBACK, das sie verwirft, werden teils zur DCL gezählt, teils gesondert als Anweisungen zur Transaktionssteuerung behandelt. Unter den Auswahlmöglichkeiten gehört CREATE TABLE, das eine Tabelle anlegt, zur DDL.

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.

Häufige Fragen

Was ist der Unterschied zwischen der WHERE- und der HAVING-Klausel in SQL?

Die WHERE-Klausel ist eine Bedingung für einzelne Zeilen vor der Gruppierung; Aggregatfunktionen können darin nicht stehen. Die HAVING-Klausel ist eine Bedingung für die durch GROUP BY gebildeten Gruppen und kann Aggregatfunktionen verwenden, etwa HAVING SUM(Betrag) >= 1000.

Wie findet man in SQL Zeilen mit NULL?

Man schreibt WHERE Spalte IS NULL. WHERE Spalte = NULL wählt keine einzige Zeile aus, weil ein Vergleich mit NULL nie wahr ist. Zeilen, die nicht NULL sind, wählt man mit IS NOT NULL aus.

„SQL“ in den Erläuterungen

Fragen mit „SQL“ (15)

  1. SQL-Anweisungen werden in Datendefinitionssprache (DDL), Datenmanipulationssprache (DML) und Datenkontrollsprache (DCL) eingeteilt. Welche Anweisung gehört zur DDL?
  2. Was ist das Ergebnis, wenn in SQL DELETE FROM Mitarbeiter ohne WHERE-Klausel ausgeführt wird?
  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. Aus einer Kundentabelle (KundenID, Name) und einer Bestelltabelle (BestellID, KundenID, Betrag) sollen die Namen der Kunden ermittelt werden, die noch nie bestellt haben. Welche SQL-Anweisung ist richtig?
  5. Welche Antwort nennt richtig die Phänomene, die unter dem im SQL-Standard definierten Isolationslevel READ COMMITTED auftreten können?
  6. Welche Hardwarebeschreibungssprachen werden hauptsächlich im RTL-Entwurf verwendet?
  7. In einer Webanwendung kann man sich ohne Kenntnis des Passworts anmelden, wenn man im Passwortfeld des Anmeldebildschirms eine Zeichenkette wie ' OR '1'='1 eingibt. Wie heißt dieser Angriff?
  8. Warum gelten Prepared Statements mit Platzhaltern (parametrisierte Abfragen) als grundlegendere Gegenmaßnahme gegen SQL-Injection als das Entfernen gefährlicher Zeichen aus der Eingabe?
  9. Welcher Begriff der relationalen Datenbanken bezeichnet eine Zeile einer Tabelle (Relation)?
  10. Welche Bedingung muss die Spalte (oder Spaltenkombination) erfüllen, die in einer Tabelle einer relationalen Datenbank als Primärschlüssel festgelegt wird?
  11. Eine Belegungstabelle (StudentNr, KursNr, Note) hält fest, welcher Studierende welchen Kurs mit welcher Note belegt hat. Ein Studierender belegt mehrere Kurse, und ein Kurs wird von mehreren Studierenden belegt. Welcher Primärschlüssel ist für diese Tabelle geeignet, wenn sich derselbe Studierende nie zweimal für denselben Kurs anmeldet?
  12. 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?
  13. Der Bestand eines Produkts in einer Lagertabelle ist 10. Transaktion T1 liest den Bestand und schreibt den Wert minus 3 zurück, T2 liest den Bestand und schreibt den Wert minus 5 zurück. Wie hoch ist der Endbestand, wenn beide ohne Sperren in der Reihenfolge T1 liest, T2 liest, T1 schreibt, T2 schreibt ablaufen?
  14. Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?
  15. Transaktion T1 führte SELECT COUNT(*) FROM Bestellung WHERE Betrag >= 1000 aus und erhielt 8. Unmittelbar danach fügte T2 eine Bestellzeile mit einem Betrag von 2000 per INSERT ein und schrieb sie fest. Als T1 dieselbe SELECT-Anweisung erneut ausführte, erhielt sie 9. Um welches Phänomen handelt es sich?

Verwandte Begriffe

Transaktion Isolationslevel Primärschlüssel SQL-Injection RTL (Register-Transfer-Ebene) Verilog Hardwarebeschreibungssprache (HDL) SystemVerilog Relationale Datenbank Fremdschlüssel

Zur Glossarübersicht