SQL (Structured Query Language) - Einführung

Werbung
SQL (Structured Query Language) - Einführung
1. Auswahl-Abfragen (Syntax)
( * = alle Felder )
SELECT {Feldname, Feldname,..|*}
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;
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");
1.3 Gruppenfunktionen
AVG(Spalte)
= Durchschnittswert
COUNT(Spalte) = Anzahl aller Einträge
MAX(Spalte)
= Maximalwert
MIN (Spalte)
SUM(Spalte)
= Summe aller Einträge in einer Spalte
= Minimalwert
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;
2. Aktionsabfragen (führen Änderungen in Tabellen durch)
Anfügeabfrage
(INSERT INTO)
INSERT INTO Tabelle [(Spalte [,Spalte,...)]
VALUES (Wert [,Wert,...]);
AktualisierungsAbfrage
(UPDATE ... SET)
UPDATE Tabelle
SET Spalte = Ausdruck [, Spalte = Ausdruck,..]
[WHERE Bedingung];
Löschabfrage
(DELETE FROM)
DELETE FROM Tabelle
[WHERE Bedingung];
TabellenerstellungsAbfrage
(SELECT ... INTO)
SELECT Spalte[,Spalte,...] INTO Tabelle
[WHERE Bedingung];
Beispiele:
Löschen aller Sätze in der Tabelle
mit dem Namen Teile Kopie
Erstellung einer Tabelle Hwaren, die
nur Handelswaren enthält, mit
denselben Spalten wie die Tabelle
Teile.
Es sind alle EKPreise von
Fremdbezugsteilen in der Tabelle Teile
um 5% zu erhöhen.
DELETE *
FROM [Teile Kopie];
(Klammer wegen der Leerstelle im Namen)
SELECT * INTO HWAREN
FROM Teile
WHERE TeileArt = "H";
UPDATE Teile
SET EKPreis = EKPreis * 1.05
WHERE BArt = "F";
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.
Quelle: Beruflichen Schule Rottenburg W. Schaub
Herunterladen