Dieses Tutorial wird die Grundlagen der SQL-Sprache vermittlen und diese mit einfachen Beispielen erläutern.
Für dieses Tutorial nutzen wir die bekannte "Northwind Traders"-Datenbank, wofür sich hier ein ER-Diagramm finden lässt. Die Struktur der Datenbank sieht wie folgt aus:
| Tabellenname | Einträge |
|---|---|
| Customers | 91 |
| Categories | 8 |
| Employees | 10 |
| OrderDetails | 518 |
| Orders | 196 |
| Products | 77 |
| Shippers | 3 |
| Suppliers | 29 |
Die meisten SQL-Befehle folgen dieser Grundstrucktur:
SELECT * FROM CustomersDieser Befehl gibt den gesamten Inhalt der Tabelle "Customers" aus. Außerdem ist es wichtig, dass die SQL-Sprache nicht auf klein- oder großgeschriebenen Befehlen achtet, es ist also egal, ob wir IMPORT nun so oder iMpoRT so schreiben.
Nun zu den eigentlichen Befehlen:
Dieser Befehl wählt aus einer bestimmten Tabelle nur bestimmte Spalten aus.
SELECT spalteNur eine Spalte:
SELECT City FROM Customers| City |
|---|
| Berlin |
| Mexico |
| London |
| Luea |
| Mannheim |
Mehrere Spalten:
SELECT CustomerName,City FROM Customers| CustomerName | City |
|---|---|
| Alfreds Futterkiste | Berlin |
| Ana Trujillo Emparedados y helados | México D.F. |
| Antonio Moreno Taquería | México D.F. |
| Around the Horn | London |
| erglunds snabbköp | Luleå |
| Blauer See Delikatessen | Mannheim |
Dieser Befehl gibt ähnlich wie der SELECT-Befehl nur bestimmte Spalten und nur verschiedene Werte zurück.
SELECT DISTINCT spalte FROM tabelleEine Spalte:
SELECT DISTINCT CustomerName FROM Customers;| CustomerName |
|---|
| Alfreds Futterkiste |
| Ana Trujillo Emparedados y helados |
| Antonio Moreno Taquería |
| Around the Horn |
| Berglunds snabbköp |
Dieser Befehl filtert die Ausgabe.
SELECT spalte FROM tabelle WHERE spalte operator parameterDiese Operatoren können zum filtern angewendet werden:
| Operator | Beschreibung |
|---|---|
| = | "ist gleich" |
| <> | ungleich |
| > | größer als |
| < | kleiner als |
| >= | kleiner gleich |
| <= | größer gleich |
| BETWEEN wert AND wert | zwischen zwei Werten |
Alle Kunden aus Deutschland:
SELECT * FROM Customers WHERE Country='Germany'| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country | | 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany | | 6 | Blauer See Delikatessen | Hanna Moos | Forsterstr. 57 | Mannheim | 68306 | Germany | | 17 | Drachenblut Delikatessend | Sven Ottlieb | Walserweg 21 | Aachen | 52066 | Germany | | 25 | Frankenversand | Peter Franken | Berliner Platz 43 | München | 80805 | Germany | | 39 | Königlich Essen | Philip Cramer | Maubelstr. 90 | Brandenburg | 14776 | Germany |
Alle Kunden mit der Kontaktperson:
SELECT * FROM Customers WHERE CustomerID BETWEEN 1 AND 5| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
AND & OR erlauben es mehrere Kriterien (WHERE) für eine Abfrage zu verwenden.
SELECT spalte FROM tabelle WHERE spalte operator parameter AND spalte operator parameterHier bei wird AND verwendet wenn alle Kriterien erfüllt sind und OR wenn mindestens ein Kriterium erfüllt ist.
TXT
SELECT * FROM Customers WHERE Country='Germany' AND City='Berlin';| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country | | 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
Dieser Befehl wird genutzt um die Ergebnisse in einer bestimmten Reihenfolge zu sortieren.
SELECT spalte FROM tabelle ORDER BY spalte ASC|DESCASC wird verwendet um die Ergebnisse nach dem Alphabet zu ordnen und DESC um das Gegenteil zu tun.
TXT
SELECT * FROM Customers ORDER BY Country ASC;| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country | |-|-| | 12 | Cactus Comidas para llevar | Patricio Simpson | Cerrito 333 | Buenos Aires | 1010 | Argentina | | 54 | Océano Atlántico Ltda. | Yvonne Moncada | Ing. Gustavo Moncada 8585 Piso 20-A | Buenos Aires | 1010 | Argentina | | 64 | Rancho grande | Sergio Gutiérrez | Av. del Libertador 900 | Buenos Aires | 1010 | Argentina | | 20 | Ernst Handel | Roland Mendel | Kirchgasse 6 | Graz | 8010 | Austria | | 59 | Piccolo und mehr | Georg Pipps | Geislweg 14 | Salzburg | 5020 | Austria |
Dieser Befehl wird verwendet um neue Einträge in eine Tabelle einer Datenbank zu machen.
INSERT INTO tabelle VALUES (wert1, wert2, ...)TXT