Was ist SQL?

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:

 

Data Definition Language (DDL)

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

 

Data Manupulation Language (DML)

Befehl Verwendung
DELETE Löscht Datensätze
INSERT Fügt Datensätz ein
UPDATE Aktualisiert Datensätze

 

Data Query Language (DQL)

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.

 

Transaction Control Language (TCL)

Befehl Verwendung
COMMIT Bestätigt die Aktionen  innerhalb einer Transaktion.
ROLLBACK Verwirft alle Aktionen innerhalb einer Transaktion

 

Database Administration Language (DAL)

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

 

Wie werden SQL-Befehle abgearbeitet?

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

 

Aufbau von SQL-Befehlen

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

Zurück zu Delphi

© Dietrich Praclik