SQL (Structured Query Language) -
Einführung
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Aktionsabfragen
Abfragen aus mehreren Tabellen
1. Auswahl-Abfragen (Syntax)
| SELECT {Feldname, Feldname,..|*} | ( * = alle Felder ) |
| FROM Tabelle [, Tabelle, Tabelle....] | |
| [WHERE {Bedingung}] | |
| [ORDER BY Feldname [ASC|DESC]...] | |
| [GROUP BY Feldname [HAVING {Bedingung}]] | |
| Die FROM - Klausel |
Hinter FROM steht der Name der Tabelle. Entstammen die Felder verschiedenen Tabellen, so muss jeweils der Tabellenname durch einen Punkt getrennt vorangesetzt werden. |
| Die WHERE - Klausel |
Damit wird bestimmt, welche Datensätze (Zeilen einer Tabelle) ausgewählt werden sollen. (Bedingungsprüfung). |
| Die ORDER BY
- Klausel |
Daten werden nach einem oder mehreren Feldnamen sortiert ausgegeben. Die vorgegebene Sortierreihenfolge ist aufsteigend ASCending). Soll absteigend sortiert werden, muss (DESCending) eingegeben werden. |
| Die GROUP BY
- Klausel |
Sie dient dazu, die Zeilen einer Tabelle nach bestimmten Feldern zu gruppieren. |
| Die HAVING - Klausel |
Diese ist der WHERE - Klausel sehr ähnlich. Bei der HAVING - Klausel werden bestimmte Gruppen aus einer Gruppenmenge ausgewählt. Somit kann die HAVING - Klausel nur im Zusammenhang mit der GROUP BY - Klausel angewandt werden |
SQL-Anweisungen müssen mit einem Strichpunkt enden (und in einer Zeile stehen).
Aufgaben zu einfachen Auswahl-Abfragen
| Alle Teile mit allen Feldern aus der Tabelle Teile: |
SELECT * FROM Teile; |
| Alle Teile mit Teilenummer, Bezeichnung und Lagernummer: |
SELECT TeileNr, Bezeichnung, LagerNr FROM Teile; |
| Alle Teile mit TeileNr, Bezeichnung und
Teileart, sortiert nach Bezeichnung: |
SELECT TeileNr, Bezeichnung, TeileArt FROM Teile ORDER BY Bezeichnung; |
Allgemeine
SQL-Syntax
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Aktionsabfragen
Abfragen aus mehreren Tabellen
1.2 Vergleichs-Operatoren / Arithmetische Operatoren
SQL kennt die üblichen Vergleichsoperatoren:
= gleich <> ungleich > größer < kleiner >= größer gleich <= kleiner gleich
| BETWEEN .Wert1..AND..Wert2.. |
Vergleichswert liegt zwischen Wert1 und Wert2 |
| IN Werteliste | Vergleichswert ist in der angegebenen Werteliste |
| Like Zeichenfolge | Vergleichszeichen entsprechen der Zeichenfolge |
| Is Null Feld | Vergleichsfeld hat einen NULL-Wert |
| Vergleichsoperatoren können verknüpft werden mit den Operatoren AND, OR und NOT | |
Rechenoperationen ( + , - , * , / ) sind möglich mit numerischen Daten:
Aufgaben mit Vergleichsoperatoren
| Anzeige aller Felder des Artikels mit der Teilenummer 10008. | SELECT * FROM
Teile WHERE TeileNr="10008"; |
| Alle Rohstoffe mit Teilenummer, Bezeichnung und Teilart. |
SELECT TeileNr, Bezeichnung, TeileArt FROM Teile WHERE Teileart = "R"; |
| Alle Handelswaren und Erzeugnisse mit Bezeichnung, Teileart und Bestand. |
SELECT Bezeichnung, TeileArt, Bestand FROM Teile WHERE Teileart = "H" OR Teileart = "E"; |
| Alle Teile mit einem Einkaufspreis unter 5,00 DM sollen nach Einkaufspreisen absteigend angezeigt werden. | SELECT TeileNr, Bezeichnung, EKPreis FROM Teile WHERE EKPreis < 5 ORDER BY EKPreis DESC; |
| Alle Handelswaren, deren Einstandspreis zwischen 50,00 und 100,00 DM liegt. | SELECT * FROM
TEILE WHERE (EKPreis BETWEEN 20 AND 50) AND (TeileArt = "H"); |
Allgemeine
SQL-Syntax
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Abfragen aus mehreren Tabellen
1.3 Gruppenfunktionen
| AVG(Spalte) | = Durchschnittswert | COUNT(Spalte) | = Anzahl aller Einträge |
| MAX(Spalte) | = Maximalwert | MIN(Spalte) | = Minimalwert |
| SUM(Spalte) | = Summe aller Einträge in einer Spalte | ||
Gruppenfunktionen können nur anstelle eines Spaltennamens direkt hinter der SELECT-Anweisung stehen. Sie liefern genau einen Wert, beziehen sich jedoch auf mehrere Tabellenzeilen.
Beispiel:
| Ermittlung der Anzahl aller Artikel, die einen Einstandspreis bzw. Herstellkosten über 100,00 DM haben. | Select COUNT (*) FROM Teile WHERE EKPreis > 100; |
Allgemeine
SQL-Syntax
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Aktionsabfragen
Abfragen aus mehreren Tabellen
2. Aktionsabfragen (führen Änderungen in Tabellen durch)
| Anfügeabfrage (INSERT INTO) |
INSERT INTO
Tabelle [(Spalte [,Spalte,...)] VALUES (Wert [,Wert,...]); |
| Aktualisierungs- Abfrage (UPDATE ... SET) |
UPDATE
Tabelle SET Spalte = Ausdruck [, Spalte = Ausdruck,..] [WHERE Bedingung]; |
| Löschabfrage (DELETE FROM) |
DELETE
FROM Tabelle [WHERE Bedingung]; |
| Tabellenerstellungs- Abfrage (SELECT ... INTO) |
SELECT
Spalte[,Spalte,...] INTO Tabelle [WHERE Bedingung]; |
Beispiele:
| Löschen aller Sätze in der Tabelle mit dem Namen Teile Kopie |
DELETE * FROM [Teile Kopie]; (Klammer wegen der Leerstelle im Namen) |
| Erstellung einer Tabelle Hwaren, die nur Handelswaren enthält, mit denselben Spalten wie die Tabelle Teile. | SELECT * INTO HWAREN FROM Teile WHERE TeileArt = "H"; |
| Es sind alle EKPreise von Fremdbezugsteilen in der Tabelle Teile um 5% zu erhöhen. | UPDATE Teile SET EKPreis = EKPreis * 1.05 WHERE BArt = "F"; |
Allgemeine
SQL-Syntax
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Aktionsabfragen
Abfragen aus mehreren Tabellen
3. Auswahl-Abfragen aus verbundenen Tabellen
Es sollen alle Handelswaren mit flg. Datenfeldern ausgegeben werden:
Aus der Tabelle TEILE |
Aus der Tabelle LIEFERER |
Teilenummer, Teileart, EKPreis, Lieferernummer |
Name des Lieferers |
Die beiden Tabellen sollen über die Lieferernummer
miteinander verbunden werden,
damit die Lieferernummern in beiden Tabellen übereinstimmen.
Allgemeine Syntax für die Verbindung von Tabellen über gemeinsame Tabellenfelder:
Lösung der Aufgabe:
SELECT TeileNr, Bezeichnung, TeileArt, EKPreis, Teile.LiefNr, Name
FROM Teile INNER JOIN Lieferer ON Teile.LiefNr = Lieferer.LiefNr
WHERE TeileArt="H";
Beachte : Wenn ein oder mehrere Feldnamen in beiden Tabellen vorkommen, muss der Name der
Tabelle mit einem Punkt als Trennungszeichen vor den Feldnamen geschrieben werden.
Deshalb musste in der Lösung bei der LiefNr, die sowohl in der Tabelle TEILE als auch in der Tabelle LIEFERER vorkommt, jeweils der Tabellenname vorangestellt werden.
Allgemeine
SQL-Syntax
Vergleichsoperatoren / Logische Operatoren
Gruppenfunktionen
Aktionsabfragen
Abfragen aus mehreren Tabellen
Startseite der Beruflichen Schule
Rottenburg
| W. Schaub: |