SQL-Grundbefehle Page 1 of 4 Tipps & Tricks S Q L-GRUNDLAGEN SQL-Grundbefehle Die Structured Query Language (SQL) ist eine sehr leistungsfähige Abfragesprache für relationale Datenbanken (z. B. Oracle, Access, SQL-Server). Es gibt - wie bei jeder Programmiersprache - verschiedene SQL-Dialekte, die sich mehr oder weniger weit vom SQL-Standard (ANSI-Standard von 1992, auch SQL-92 genannt) entfernen. Die Grundsyntax der vier wichtigsten Befehle zum Auswerten und Verändern des Datenbestandes ist jedoch bei allen Dialekten (weitgehend) gleich. Hier für Einsteiger die vier SQL-Anweisungen SELECT (mit JOIN-Erweiterung), INSERT, UPDATE und DELETE. Und außerdem gib's das auch als PDF-Datei zum Herunterladen. SELECT Fragt Tabellen oder Sichten ab und stellt Daten dar Grundsyntax SELECT <Feldnamen | *> FROM <Tabelle> [WHERE <Filterbedingung>] SELECT KundeNr, Nachname, Vorname FROM Kunden WHERE Ort = ‘Berlin’ SELECT * FROM Artikel SELECT ruft Daten aus Tabellen oder Sichten ab. Dabei können bestimmte Spalten ausgewählt oder Reihen gefiltert werden. Außerdem dient SELECT zur Darstellung verknüpfter Tabellen und zur Berechnung von Werten. Die Feldnamen können in der Anweisung in beliebiger http://www.kaczenski.de/it-service/sql-basics.htm 22.01.2004 SQL-Grundbefehle Page 2 of 4 Reihenfolge angegeben werden; mehrere Felder werden durch Komma getrennt. Alle Felder einer Tabelle lassen sich am einfachsten mit dem Sternchen * ausgeben. JOIN Verknüpft Tabellen oder Sichten Grundsyntax SELECT <Feldnamen | *> FROM <Tabelle1> JOIN <Tabelle2> ON <Tabelle1.Feld> = <Tabelle2.Feld> Beispiele SELECT Artikelname, Kategoriename FROM Artikel JOIN Kategorien ON Artikel.KatNr = Kategorie.KatNr JOIN verknüpft zwei Tabellen anhand je eines Feldes aus beiden Tabellen, das übereinstimmende Werte enth ält. Normalerweise ist dieses Feld in einer Tabelle Primärschlüssel und in der anderen Fremdschlüssel. Wird nichts weiter angegeben, handelt es sich um einen "Inner Join", d. h. nur solche Reihen werden zurückgegeben, in denen in beiden Tabellen Werte existieren. INSERT Fügt neue Reihen in eine Tabelle oder Sicht ein Grundsyntax INSERT [INTO] <Tabelle> VALUES (<Wertliste>) Beispiele INSERT INTO Kunden VALUES (‘Müller’, ‘Carla’, ‘Hauptstr. 11’, ‘12345’, ‘Nirgendwo’) INSERT Artikel (Nr, Kategorie, Name, Preis) VALUES (DEFAULT, 17, ‘Bleistift’, 1,29) Mit INSERT wird eine neue Reihe in eine Tabelle eingefügt. Dabei wird meist mit VALUES eine explizite Wertliste übergeben, die entweder genau so viele Werte in derselben Datentypfolge enth ält, wie die Tabelle vorschreibt, oder deren zu füllende Felder vor der VALUES-Klausel angegeben sind. http://www.kaczenski.de/it-service/sql-basics.htm 22.01.2004 SQL-Grundbefehle Page 3 of 4 Alternativ kann anstelle der VALUES -Klausel auch eine SELECT-Anweisung stehen, die die einzufügenden Werte liefert. UPDATE Verändert Werte in einer Tabelle oder Sicht Grundsyntax UPDATE <Tabelle> SET <Feld> = <Wert> [...] [FROM <Tabellen>] WHERE <Filterbedingung> Beispiele UPDATE Kunde SET Tel = ‘040-12345’, Fax = NULL WHERE KundeNr = 1125 UPDATE Artikel SET Preis = Preis * 1,2 FROM Artikel JOIN Kategorien ON Artikel.Kategorie = Kategorien.Kategorie WHERE Kategoriename = ‘Getränke’ Die UPDATE-Anweisung ändert die angegebenen Felder in allen Reihen, die zum angegebenen Filterkriterium passen. Achtung: Da UPDATE immer mengenbezogen arbeitet, werden alle Reihen einer Tabelle geändert, wenn man keinen Filter angibt! DELETE Löscht Reihen aus einer Tabelle oder Sicht Grundsyntax DELETE <Tabelle> [FROM <Tabellen>] WHERE <Filterbedingung> Beispiele DELETE Kunde WHERE KundeNr > 50 DELETE Artikel FROM Artikel JOIN Kategorien ON Artikel.Kategorie = Kategorien.Kategorie WHERE Kategoriename = ‘Getränke’ DELETE löscht alle Reihen aus der direkt hinter der Anweisung angegebenen Tabelle, auf die das Filterkriterium zutrifft. Dabei kann sich das Filterkriterium auch auf Werte einer verknüpften Tabelle beziehen, wie das zweite Beispiel zeigt (lösche alle http://www.kaczenski.de/it-service/sql-basics.htm 22.01.2004 SQL-Grundbefehle Page 4 of 4 Artikel der Kategorie "Getr änke" aus der Artikeltabelle). Achtung: Auch DELETE arbeitet mengenbezogen und löscht alle Reihen, falls das Filterkriterium weggelassen wird! © 2000 Nils Kaczenski Zuletzt geändert am 1.6.2000. http://www.kaczenski.de/it-service/sql-basics.htm 22.01.2004