24.5 Einführung in SQL
SQL ist die Standard-Abfragesprache für Datenbanken (SQL = Structured Query Language, strukturierte Abfragesprache). In diesem Abschnitt erfahren Sie alles Notwendige, um in Dreamweaver 8 damit zu arbeiten.
Sie haben Ihre MySQL-Datenbank angelegt und Datensätze darin eingegeben. Mit SQL können Sie nun die Abfragen durchführen, mit denen Sie die gewünschten Informationen aus der Datenbank erhalten.
SQL ist eine standardisierte Abfragesprache, doch leider benutzt mittlerweile jedes Datenbanksystem eigene Definitionen von SQL und benötigt oft eine leicht abgewandelte Syntax. Das Grundprinzip und die wichtigsten Befehle bleiben jedoch identisch.
Wir werden später die SQL-Abfragen mit PHP als Zeichenketten an MySQL übertragen und die Rückgabewerte anschließend wieder mit PHP auswerten.
24.5.1 Daten abfragen mit SELECT
Im einfachsten Fall lautet eine SQL-Abfrage:
SELECT * FROM Tabelle
Im übertragenen Sinn heißt dies: Hole (SELECT) alles (*) aus (FROM) der Tabelle »Tabelle«.
Diese Abfrage würde alle Inhalte der Tabelle »Tabelle« ausgeben. Die Analyse der Daten erfolgt dann anschließend mit einem weiterführenden Skript. Für unsere Buchwebsite könnte eine Abfrage lauten:
SELECT * FROM 2_0
Damit würden alle Inhalte der Tabelle »2_0« als Rückgabewert ausgegeben werden. Welche dieser Daten dann wirklich zur Anzeige auf unsere Website kommen, ist zunächst egal.
Abfragen spezifizieren | Um nur eine einzelne Spalte einer Tabelle abzufragen, können Sie den Stern durch den Namen der Spalte ersetzen. Falls Sie mit MS-SQL (Transact-SQL) arbeiten, ist dies sogar zwingend vorgeschrieben.
Eine Abfrage hat dann das folgende Format:
SELECT name FROM 2_0
Diese Abfrage holt nur die Inhalte der Spalte »name« aus der Tabelle »2_0«. Auf diese Weise können auch mehrere Spalten angegeben werden. Die sind durch Kommata zu trennen:
SELECT name, vorname FROM 2_0
Mit dieser Abfrage erhalten Sie als Rückgabewerte die beiden Spalten »name« und »vorname«.
24.5.2 Datensatz abfragen mit WHERE
Um einzelne Datensätze aus einer Tabelle abzufragen, muss ein weiterer Parameter hinzugefügt werden:
SELECT * FROM 2_0 WHERE ID = 1
Diese Abfrage gibt den Datensatz mit der ID »1« aus der Tabelle »2_0« zurück. Da Sie mit PHP Variablen anstelle von festen Werten in eine SQL-Abfrage setzen können, kann auch ein ausgewählter Datensatz zur Anzeige gebracht werden:
SELECT * FROM 2_0 WHERE ID =".$_GET['CONT_ID']
In dieser Abfrage wird die ID durch eine mit der Methode GET übertragene Variable »CONT_ID« vorgeben.
24.5.3 Datensatz sortieren mit ORDER BY
Ausgegebene Datensätze können mit einem weiteren Parameter sortiert ausgegeben werden:
SELECT * FROM 2_0 ORDER BY name DESC
Diese Abfrage gibt die Daten der Tabelle »2_0« sortiert nach dem »name« in alphabetisch absteigender Reihenfolge aus. DESC kann durch ASC ersetzt werden. Die Sortierung erfolgt dann aufsteigend.
24.5.4 Datensatz aktualisieren mit UPDATE
Mit dem Befehl UPDATE können Sie bestehende Datensätze überschreiben bzw. aktualisieren.
UPDATE 2_0 SET name = 'Neuer Name' WHERE ID =".$_GET[‚COND_ID’]
Dieser Befehl überschreibt in der Tabelle »2_0« in Spalte »name« den bisherigen Inhalt mit »Neuer Name«. Ausgewählt wird der Datensatz durch WHERE und die ID. Diese wird in unserem Fall durch die mit PHP übertragene Variable CONT_ID gesetzt.
24.5.5 Datensatz löschen mit DELETE
Der Befehl:
DELETE FROM 2_0 WHERE ID =".$_GET['COND_ID']
löscht aus der Tabelle »2_0« den kompletten Datensatz (Tupel) mit der übergebenen ID. Passen Sie sehr gut auf mit Löschaktionen. Eine Funktion zum Wiederherstellen der Datensätze gibt es nicht. Einmal gelöscht, ist der Datensatz für immer verloren.
24.5.6 Datensatz einfügen mit INSERT
INSERT INTO 2_0 (name, vorname, URL) VALUES ('Neuer Name', 'Neuer Vorname', 'Website')
Beim Einfügen von Datensätzen mit dem Befehl INSERT INTO müssen alle Daten der Reihe nach übergeben werden. Im ersten Teil des Befehles werden in die Tabelle »2_0« die Felder »name«, »vorname« und »URL« mit Inhalten ausgefüllt.
Im zweiten Teil ab VALUES folgen die einzelnen Inhalte (Werte) in derselben Reihenfolge. Dieser Befehl wird, wenn ein Datensatz sehr viele Felder enthält, ausgesprochen lang und fehleranfällig. Überprüfen Sie diese Aktionen daher sehr genau!