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}]]

1.1 SQL - Klauseln

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: