Die Grundlagen für SQL (Structured Query Language) wurde 1970 von dem bei IBM arbeitenden Mathematiker E.F. Codd veröffentlicht. Mit wachsenden Ansprüchen an Datenbankensystemen wurde und wird SQL ständig erweitert. Es wurden Standards entwickelt, so z.B. 1992 der Standard SQL2, der von vielen am Markt eingeführten Datenbanksystemen implementiert wurde. Die Entwicklung ging und geht weiter. Trotz aller Standards muß man mit produkt-spezifischen Eigenheiten rechnen - so auch bei Delphi, das nicht den gesamten SQL2-Standard implementiert.
ANSI (American National Standard Institute) und auch ISO (International Standards Organisation) haben SQL als Standard genehmigt. Damit wird SQL auf den meisten Datenbank-Plattformen angeboten.
Die Leistungsfähigkeit von SQL ist ein weiterer Grund für ihre weite Verbreitung. SQL deckt alle Bereiche der Datenbankarbeiten ab. Neben dem Erstellen und Bearbeiten von Datenbanken wird auch die Kontrolle von Transaktionen unterstützt.
Dabei sind die SQL-Befehle einfach strukturiert und nach einer kurzen Einarbeitungsphase erlernbar, so daß man schnell bestimmte Abfragen aus dem Datenbankbestand formulieren kann: Folgendes Beispiel soll das veranschaulichen.
Aufgabe | SQL-Implementierung |
Zeige alle Informationen über Kunden, die in Berlin wohnen und deren Umsatz über 10.000 DM liegt |
SELECT * FROM
kunden WHERE ort ='Berlin' AND umsatz > 10000 |
SQL ist in Befehlskategorien unterteilt, die den verschiedenen Anwendungszwecken entsprechen:
Befehl | Verwendung |
ALTER TABLE | Die Struktur einer Tabelle wird geändert |
CREATE INDEX | Ein Index wird angelegt |
CREATE TABLE | Eine Tabelle wird neu erstellt |
CREATE VIEW | Eine Sicht wird erstellt |
DROP INDEX | Ein vorhandener Index wird gelöscht |
DROP TABLE | Eine vorhandene Tabelle wird gelöscht |
DROP VIEW | Eine vorhandene Sicht wird gelöscht |
Befehl | Verwendung |
DELETE | Löscht Datensätze |
INSERT | Fügt Datensätz ein |
UPDATE | Aktualisiert Datensätze |
Befehl | Verwendung |
SELECT | Liefert Daten aus Tabellen und Views zurück. Je nach Auswahl werden Spalten von einer oder mehreren Tabellen als Ergebnismenge zurückgeliefert. |
Befehl | Verwendung |
COMMIT | Bestätigt die Aktionen innerhalb einer Transaktion. |
ROLLBACK | Verwirft alle Aktionen innerhalb einer Transaktion |
Befehl | Verwendung |
ALTER DATABASE | Modifiziert eine bestehende Datenbank |
ALTER PASSWORD | Ändert das Paßwort |
CHECKDATABASE | Prüft die Datenintegrität |
CREATEDATABASE | Legt eine neu Datenbank an |
DEINSTALL DATABASE | Meldet eine Datenbank bei einem SQL-Server ab, ohne sie zu löschen |
DROPDATABASE | Löscht eine Datenbank |
GRANT | Vergibt Zugriffsrechte |
INSTALL DATABASE | Meldet eine Datenbank beim SQL-Server an |
REVOKE | Entfernt Zugriffsrechte |
Nur das DBMS darf direkt auf die physikalischen Datenbanktabellen zugreifen. SQL-Befehle müssen daher auf eine maschineverständliche Form gebracht werden. Da das DBMS auch für die Datensicherheit und -integrität verantwortlich ist, muß eine SLQ-Befehlssequenz zunächst einmal auf Zulässigkeit und Plausibilität geprüft werden. Darum wird jeder SQL-Befehl in verschiedenen Pasen abgearbeitet:
Phase | Aufgabe |
Parse | Der SQL-Befehl wird auf korrekte Syntax geprüft. Außerdem wird kontrolliert, ob die verwendeten Tabellen und Spalten tatsächlich in der Datenbank vorkommen |
Optimize | Der SQL-Server sucht den schnellsten Weg, um die gestellte Aufgabe zu lösen. Dazu wird der Zustand der Systemtabellen analysiert und verschiedene Wege mit ihrer Bearbeitungszeit berechnet. Aus diesen verschiedenen Möglichkeiten wählt der SQL-Server die Schnellste aus |
Generate | Die ausgewählte Befehlsfolge wird in allen Einzelschritten vorbereit |
Execute | Der SQL-Befehl wird ausgeführt |
Pflicht | SQL-Befehl | Bedeutung |
Ja | SELECT c.Titel, k.Name | Tabellenspalten der Tabellen der Datenbank auswählen, die die Ergebnismenge zurückgeben sollen |
Ja | FROM cd c, k komponist | Beteiligte Tabellen aufführen |
Nein | WHERE c.komponistenID =k.id | Auswahlkriterien für den Join festlegen |
Nein | ORDER BY c.dauer | Ergebnissmenge sortieren |
© Dietrich Praclik