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.
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.