Inhaltsverzeichnis:
1. Einführung: Was ist SQL?
2. Befehl SELECT
3. Befehl DISTINCT
4. Befehl WHERE
5. AND & OR Operatoren
6. IN Operator
7. BETWEEN Befehl
8. Befehl LIKE
9. Befehl ORDER BY
10. Befehl GROUP BY
11. Befehl HAVING
12. Befehl JOIN
13. Weiterführender Link
1. Einführung: Was ist SQL?
SQL (Structured Query Language) ist eine Datenbanksprache, mit der in Datenbanken Strukturen erstellt bzw. die dort vorhandenen Daten bearbeitet und abgefragt werden können. So können mit bestimmten Befehlen alle Daten in der Labordatenbank abgerufen und dem Nutzer bereitgestellt werden.
SQL basiert auf der relationalen Algebra und ist die Standardsprache, wenn es um Datenbanken geht. Viele SQL Befehle stammen aus der englischen Sprache und sind daher einfach zu erlernen.
2. Befehl SELECT
Der SQL Befehl SELECT
bildet die Basis für viele SQL Abfragen einer Datenbank. Damit ist es möglich Daten aus einer oder auch mehreren Tabellen (s. JOIN) abzufragen. Es wird definiert, welche Spalten einer bestimmten Tabelle nach Ausführung der Abfrage dargestellt werden sollen.
Die Syntax ist folgendermaßen aufgebaut:SELECT
Spaltenname1, Spaltenname2, Spaltenname+n FROM
Tabellenname
Als Beispiel wird die Tabelle samples aus der Labordatenbank verwendet:
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name und description (rot markiert) ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples LIMIT 5
! In der Zeile vor dem FROM
wird am Ende kein Komma mehr gesetzt !
Hier wird nun zusätzlich noch der SQL Befehl LIMIT
benutzt, um in den Beispiel die Ergebnistabelle auf fünf Zeilen einzugrenzen.
So kann generell die Anzahl der Zeilen für die Ausgabe der Tabelle limitiert werden. Des Weiteren werden die Spaltenbezeichnungen mit dem SQL Befehl AS
umbenannt. Dieser Befehl kann optional verwendet werden.
Ausgabe der Labordatenbank Auswertung:
3. Befehl DISTINCT
Der SQL Befehl DISTINCT
wird benutzt, um Redundanzen, also mehrfach auftretende Werte, zu eliminieren, damit diese in der Tabelle nur einmal angezeigt werden.
Mit DISTINCT
wird die zu prüfende Spalte definiert. Der Befehl wird bei einer SQL Abfrage direkt hinter SELECT
gesetzt.
Die Syntax ist folgendermaßen aufgebaut:SELECT DISTINCT
Spaltenname FROM
Tabellenname
Um sich in der Labordatenbank aus der Tabelle samples die Spalte description redundanzfrei ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT DISTINCT description FROM samples LIMIT 5
So wird aus der Tabelle samples:
mit dem zusätzlichen SQL Befehl DISTINCT
folgendes Ergebnis angezeigt:
Die doppelt auftretende Zeile mit Testprobe 4 wird nun in der ausgewählten Spalte description nur noch einmal angezeigt. Da in der Labordatenbank Proben-, Auftrags- und Kundennummern nicht doppelt vergeben werden, wird bei einer SQL Abfrage in der Auswertung dieser Befehl nicht so häufig verwendet werden.
4. Befehl WHERE
Der SQL Befehl WHERE
wird verwendet, wenn bei einer SQL Abfrage nur bestimmte Datensätze aus einer Datenbank dargestellt werden sollen. Die WHERE
Bedingung funktioniert wie ein Filter, so dass nur Ergebnisse, die bestimmte Kriterien erfüllen, ausgegeben werden.
Die Syntax ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname = Wert
Mit WHERE
wird definiert, welche Bedingung erfüllt werden soll, um ein bestimmtes Ergebnis zu erhalten.
Folgende Vergleichsoperatoren können verwendet werden:
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name (Bedingung: nur Proben mit einer Probennummer > 210034) und description ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE name > 210034 LIMIT 5
Ausgabe der Labordatenbank Auswertung:
In der Labordatenbank ist eine gängige WHERE
Bedingung:WHERE visible_to != 'deleted'
Diese Bedingung ist wichtig, wenn gelöschte Proben ausgeblendet werden sollen.
Um eine gesamte Auswertung nach Zeiträumen zu filtern, kann folgende WHERE
Bedingung benutzt werden:WHERE date BETWEEN FROMDATE AND TILLDATE
Der Filter wird dann in der Labordatenbank über der Auswertung angezeigt:
5. AND & OR Operatoren
Um mehrere WHERE
Bedingungen zu verwenden, bzw. um Abfrageergebnisse weiter einzugrenzen, müssen die SQL Operatoren AND
& OR
eingebaut werden. Dabei wird mit dem Operator AND
SQL Bedingungen zusammengefügt und mit dem SQL Operator OR
zwischen zwei oder mehreren SQL Bedingungen unterschieden.
Die Syntax mit WHERE
und AND
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname1 = Wert1 AND
Spaltenname2 = Wert2
Die Syntax mit WHERE
und OR
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname1 = Wert1 OR
Spaltenname2 = Wert2
! Bei einer SQL Abfrage hat AND
Vorrang gegenüber OR
!
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name (Bedingung: nur Proben mit einer Probennummer > 210033 und < 210037) und description ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE name > 210033 AND name < 210037
Ausgabe der Labordatenbank Auswertung:
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name (Bedingung: nur Proben mit einer Probennummer < 210034 oder > 210036) und description ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE name < 210034 OR name > 210036
Ausgabe der Labordatenbank Auswertung:
6. IN Operator
Der SQL Operator IN
wird mit einer WHERE
Bedingung verwendet, um mehrere Abfrageergebnisse in einem SQL Befehl zusammenzufügen. So wird verhindert, dass z.B. mehrere OR
Operatoren bei einer SQL Abfrage eingebaut werden müssen.
Mit der Kombination aus dem SQL Operator IN
und NOT
können ebenfalls Ergebnismengen ausgeschlossen werden.
Die Syntax mit WHERE
und IN
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname IN
('Wert1', 'Wert2')
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name (Bedingung: nur Proben mit der Nummer 210034 und 210036) und description ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE name IN ('210034', '210036')
Ausgabe der Labordatenbank Auswertung:
7. BETWEEN Befehl
Der SQL Befehl BETWEEN
wird mit einer WHERE
Bedingung verwendet, um in einen bestimmten Bereich Ergebnisse abzufragen.
Der SQL Befehl BETWEEN
wird oft benutzt, um z.B. Abfrageergebnisse in einem bestimmten Datumsbereich anzeigen zu lassen.
Die Syntax mit WHERE
und BETWEEN
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname BETWEEN
'DATUM1' AND
'DATUM2'
Um sich in der Labordatenbank aus der Tabelle samples die Spalten name und description für einen gewünschten Zeitraum zu filtern, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE date BETWEEN _FROMDATE_ AND _TILLDATE_
Der Filter wird über der Auswertung angezeigt.
Ausgabe der Labordatenbank Auswertung:
Da das Datum in der Labordatenbank als Unixzeit gespeichert ist, wird der ausgewählte Zeitraum als Unixtimestamp in FROMDATE und TILLDATE eingesetzt.
Um sich in der Labordatenbank aus der Tabelle samples die Spalte date im Datumsformat TT.MM.YY mit dem Spaltenname Eingang ausgeben zu lassen, muss die SQL Funktion FROM_UNIXTIME
verwendet werden:
SELECT name AS Probe, description AS Bezeichnung, FROM_UNIXTIME(date, '%d.%m.%Y') as Eingang FROM samples
Ausgabe der Labordatenbank Auswertung:
! Um das Datum aus DDF Feldern zu formatieren wird folgender Befehl benutzt: DATE_FORMAT(DDF_DATUM, '%d.%m.%y') !
8. Befehl LIKE
Der SQL Befehl LIKE
wird mit einer WHERE
Bedingung verwendet, um Ergebnisse auf Grundlage eines definierten Musters abzufragen. Der Befehl LIKE
differenziert sich damit von dem Operator IN
(fester Suchbegriff) und dem SQL Befehl BETWEEN
(Bereichssuche).
Der SQL Befehl LIKE
wird oft in Texten verwendet, um mit regulären Mustern nach Ergebnissen zu suchen.
Die Syntax mit WHERE
und LIKE
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname WHERE
Spaltenname LIKE
'Muster'
Das ‚MUSTER‘ kann dabei folgende Strukturen enthalten:
Um sich z.B. in der Labordatenbank aus der Tabelle samples die Spalten name und description ausgeben zu lassen, bei denen die Bezeichnung mit "T" beginnt, 9 Folgezeichen enthält und auf "1" endet, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples WHERE description LIKE 'T_________1'
Ausgabe der Labordatenbank Auswertung:
9. Befehl ORDER BY
Der SQL Befehl ORDER BY
wird verwendet, um Ergebnisse nach einer definierten Reihenfolge zu sortieren.
Die Syntax mit ORDER BY
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname ORDER BY
Spaltenname Sortierungsparameter
Der Sortierungsparameter kann dabei folgende Strukturen enthalten:
Um sich z.B. in der Labordatenbank aus der Tabelle samples die Spalten name und description ausgeben zu lassen und dabei die Spalte description absteigend zu sortieren, wird folgender Befehl verwendet:
SELECT name AS Probe, description AS Bezeichnung FROM samples ORDER BY description DESC
Ausgabe der Labordatenbank Auswertung:
10. Befehl GROUP BY
Der SQL Befehl GROUP BY
wird verwendet, um Ergebnisse zu gruppieren. Der Befehl legt fest, welche Datenmenge gruppiert werden soll, dabei können mehrere Spalten gruppiert werden. GROUP BY
kann auch mit einer WHERE
Bedingung benutzt werden.
Die Syntax mit GROUP BY
ist folgendermaßen aufgebaut:SELECT
Spaltenname FROM
Tabellenname [WHERE
Bedingung] GROUP BY
Spaltenname
Der SQL Befehl GROUP BY
wird häufig in Verbindung mit einer Aggregatfunktion verwendet.
Zu den Aggregatfunktionen gehören folgende Befehle:
Die Syntax mit GROUP BY
in Kombination mit einer Aggregatfunktion ist folgendermaßen aufgebaut:SELECT
Spaltenname, COUNT
(Spaltenname) FROM
Tabellenname GROUP BY
Spaltenname
! Vor dem COUNT
steht ein Komma und dahinter kommt kein Leerzeichen zur Klammer !
Um sich in der Labordatenbank aus der Tabelle samples die Anzahl der Proben pro Tag ausgeben zu lassen, wird mit folgendem Befehl das Datum gruppiert und die Anzahl der Proben mit diesem Datum gezählt:
SELECT FROM_UNIXTIME(date, '%d.%m.%Y') AS Eingang, COUNT(date) AS 'Anzahl Proben' FROM samples GROUP BY date
! Die Schreibweise für das Datum wurde unter BETWEEN erläutert !
Ausgabe der Labordatenbank Auswertung:
11. Befehl HAVING
Mithilfe des SQL Befehls HAVING
wird eine gruppierte Ergebnismenge eingeschränkt. HAVING
stellt die WHERE
Bedingung in einem GROUP BY
Befehl dar. Eine WHERE
Bedingung kann nicht mit Aggregatfunktionen kombiniert werden, daher wird bei GROUP BY
der Befehl HAVING
verwendet.
Die Syntax des Befehls HAVING
in Kombination mit GROUP BY
und einer Beispiel Aggregatfunktion ist folgendermaßen aufgebaut:SELECT
Spaltenname, COUNT
(Spaltenname) FROM
Tabellenname GROUP BY
Spaltenname HAVING
Ausdruck
! HAVING
steht immer hinter GROUP BY
. Eine ggf. benutzte WHERE
Bedingung in der SQL Abfrage muss vor dem GROUP BY
stehen !
Um sich in der Labordatenbank aus der Tabelle samples die Anzahl der Proben pro Tag (Bedingung: nur Tage mit > 3 Proben) ausgeben zu lassen, wird mit folgendem Befehl das Datum gruppiert und die Anzahl der Proben mit diesem Datum gezählt:
SELECT FROM_UNIXTIME(date, '%d.%m.%Y') AS Eingang, COUNT(date) AS 'Anzahl Proben' FROM samples GROUP BY date HAVING COUNT(date) >3
Ausgabe der Labordatenbank Auswertung:
12. Befehl JOIN
Der SQL Befehl JOIN
wird verwendet, um Informationen aus verschiedenen Tabellen bei einer SQL Abfrage zu erhalten. Mithilfe von JOIN
können Tabellen verknüpft werden, die über gemeinsame Datensätze in Beziehung miteinander stehen. Die Verknüpfung der zu vergleichenden Spalten aus den gewünschten Tabellen erfolgt über eine ON
Bedingung und die Definition der JOIN
Art.
Es gibt sechs verschiedene JOIN
Typen:
Für Auswertungen in der Labordatenbank sind die JOIN
Arten Inner und Left relevant.
Um die Ergebnismenge einzugrenzen, kann auch hier eine WHERE
Bedingung verwendet werden.
INNER JOIN
und LEFT JOIN
:
Bei einer "normalen" JOIN = INNER JOIN
SQL Abfrage werden nur Ergebnisse angezeigt, die in beiden Tabellen vorkommen.
Mit einem LEFT JOIN
werden alle Ergebnisse der FROM
Tabelle angezeigt und die dazugehörigen, sofern vorhanden, Ergebnisse der gejointen Tabelle.
(Bsp. siehe Anleitung: SQL JOINs)
Die Labordatenbank basiert auf folgender Datenstruktur bzw. Tabellenverknüpfung:
Eine detaillierte Verknüpfung der Spalten der verschiedenen Tabellen in der Labordatenbank für die Bereiche Kunde-Auftrag-Probe-Ergebnis-Parameter-Spezifikation stellt folgende Abbildung dar:
Die Syntax mit JOIN
ist folgendermaßen aufgebaut:SELECT
Tabellenname1.Spaltenname, Tabellenname2.Spaltenname... FROM
Tabellenname1 JOIN
Tabellenname2 ON
Tabellenname1.SpaltennameVerknüpfung = Tabellenname2.id
! In der Labordatenbank sind alle Tabellen in der Mehrzahl (Tabs), die Spaltenbezeichnungen meist in der Einzahl (Tab). Dies erleichtert die Unterscheidung zwischen Tabellenbezeichnung und Spaltenbezeichnung !
Wenn z.B. die Tabelle orders mit der Tabelle samples verknüpft werden soll, kann in der Abbildung Verknüpfung der Tabellen in der LDB geschaut werden, über welche Spalten die beiden Tabellen miteinander verbunden sind. In dem Bild sind die Spalten, die verknüpft werden können, farblich gleich markiert. D.h. die Spalte id bei der Tabelle orders (= orders.id) kann mit der Spalte order_id bei samples (= samples.order_id), hier beide grün markiert, über ein JOIN
Befehl verknüpft werden.
Um sich in der Labordatenbank aus der Tabelle samples die Spalte name und description und aus der Tabelle orders die zugehörige Spalte name ausgeben zu lassen, wird folgender Befehl verwendet:
SELECT samples.name AS Probe, samples.description AS Bezeichnung, orders.name AS Auftrag FROM samples JOIN orders ON samples.order_id = orders.id LIMIT 5
Ausgabe der Labordatenbank Auswertung:
! Bei Verwendung vom Befehl JOIN
bzw. bei einer Abfrage aus verschiedenen Tabellen muss bei SELECT
Spaltenname immer der Tabellenname mit angegeben werden: Tabellenname.Spaltenname !
13. Weiterführender Link
Weitere SQL-Befehle und auch Hilfestellungen finden Sie unter folgendem Link:
MySQL Funktionen und Operatoren
Letzte Änderung: 10.01.2025
Allgemeines
Einführungsphase
Mitarbeiter
Aufträge
Proben
Probenvorlage
Berichte
Berichtstabellen Editor
Kunden
Kundenzone (optional)
Anlagen
Angebote
Rechnungen
Parameter
Rechnen mit Parametern
Schnittstellen
Webservice
Transformationscode
Prüfpläne / Grenzwerte / Spezifikationen
Dokumentenlenkung
Prüfmittel
Material
Mitarbeiterschulungen
8D-Report
Sonstiges
PDF-Vorlagen
Fragen und Antworten
Lieferantenbewertung
Dateiverwaltung
Auswertungen
Prozesse