Kapitel 4. SELECT
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Wenn du mit Datenbanken und SQL arbeitest, besteht die häufigste Aufgabe darin, Daten aus einer oder mehreren Tabellen abzufragen und anzuzeigen. Die Anweisung SELECT
erfüllt diese Aufgabe. Aber die SELECT
kann weit mehr als nur Daten abrufen und anzeigen. Wie wir in den nächsten Kapiteln lernen werden, können wir diese Daten auf sinnvolle Weise umwandeln und aus Millionen von Datensätzen leistungsstarke Zusammenfassungen erstellen.
Aber zuerst werden wir lernen, wie man SELECT
Spalten aus einer einzelnen Tabelle sowie Ausdrücke in ihnen zusammensetzt.
Abrufen von Daten mit SQL
Wenn du das noch nicht getan hast, klicke im oberen Menü auf Extras→SQL-Editor öffnen und stelle sicher, dass die Datenbank rexon_metals
geöffnet ist, wie im vorherigen Kapitel erwähnt. Dein SQLiteStudio-Arbeitsbereich sollte ungefähr wie in Abbildung 4-1 aussehen. Beachte, dass der SQL-Arbeitsbereich jetzt in zwei Bereiche unterteilt ist: einen Bereich für den SQL-Editor und einen Bereich für die Query-Ergebnisse.
Im Bereich SQL-Editor schreibst du dein SQL, und im Bereich Abfrageergebnisse werden die Ergebnisse deiner SQL angezeigt.
Lass uns unsere erste SQL-Anweisung schreiben. Die häufigste SQL-Operation ist eine SELECT
-Anweisung, die Daten aus einer Tabelle abruft und dann die Ergebnisse anzeigt. Klicke auf das SQL-Editor-Fenster und schreibe die folgende Anweisung:
SELECT
*
FROM
CUSTOMER
;
Klicke auf die blaue Dreiecksschaltfläche oder drücke F9, um die SQL auszuführen.
Du hast soeben deine erste Abfrage ausgeführt, und die Ergebnisse sollten im unteren Bereich angezeigt werden(Abbildung 4-2).
Schauen wir uns genau an, was passiert ist. Mit der Anweisung SELECT
kannst du auswählen, welche Spalten du aus einer Tabelle abrufen möchtest. Der erste Teil der hier gezeigten SQL-Anweisung lautet also "Alle Spalten auswählen", wobei * ein Platzhalter ist, um alle Spalten anzugeben:
SELECT
*
FROM
CUSTOMER
;
Und du erhältst diese Spalten aus der Tabelle CUSTOMER
:
SELECT
*
FROM
CUSTOMER
;
Wenn du diese SELECT
Anweisung ausführst, werden alle Spalten aus der Tabelle CUSTOMER
wiederhergestellt und dir angezeigt(Abbildung 4-3).
Du musst nicht alle Spalten in einem SELECT
Statement abrufen. Du kannst auch nur die Spalten auswählen, an denen du interessiert bist. Die folgende Abfrage bezieht sich nur auf die Spalten CUSTOMER_ID
und NAME
:
SELECT
CUSTOMER_ID
,
NAME
FROM
CUSTOMER
;
In der Ausgabe werden dann nur diese beiden Spalten angezeigt(Abbildung 4-4).
Hinweis
Eine einzelne SQL-Anweisung kann optional mit einem Semikolon (;
) abgeschlossen werden, wie in den vorherigen Beispielen gezeigt. Das Semikolon ist jedoch notwendig, um mehrere SQL-Anweisungen gleichzeitig auszuführen, was beim Schreiben von Daten, wie in Kapitel 10 beschrieben, hilfreich ist.
Die Möglichkeit, Spalten auszuwählen, mag im Moment uninteressant erscheinen, aber sie ermöglicht es uns, uns auf das zu konzentrieren, was uns interessiert. Die Beschränkung auf bestimmte Spalten hilft auch bei den Aggregationsaufgaben von GROUP BY
, wie wir in Kapitel 6 sehen werden.
Ausdrücke in SELECT-Anweisungen
Die Anweisung SELECT
kann weit mehr tun als nur Spalten auszuwählen. Du kannst auch Berechnungen mit einer oder mehreren Spalten durchführen und sie in dein Abfrageergebnis aufnehmen.
Arbeiten wir mit einer anderen Tabelle namens PRODUCT
. Führe zunächst eine SELECT
all aus, um die Daten zu sehen(Abbildung 4-5):
SELECT
*
FROM
PRODUCT
;
Angenommen, wir möchten eine berechnete Spalte mit dem Namen TAXED_PRICE
erzeugen, die 7% höher ist als PRICE
. Wir könnten eine SELECT
Abfrage verwenden, um dies dynamisch für uns zu berechnen(Abbildung 4-6):
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
;
Hinweis
Beachte in der Anweisung SELECT
, dass wir unser SQL auf mehrere Zeilen verteilen können, um es besser lesbar zu machen. Die Software ignoriert überflüssige Leerzeichen und getrennte Zeilen, sodass wir sie nutzen können, um unser SQL besser lesbar zu machen.
Beachte, dass die Spalte TAXED_PRICE
in der Abfrage SELECT
dynamisch berechnet wurde. Diese Spalte wird nicht in der Tabelle gespeichert, sondern berechnet und uns jedes Mal angezeigt, wenn wir diese Abfrage ausführen. Dies ist eine leistungsstarke Funktion von SQL, die es uns ermöglicht, die gespeicherten Daten einfach zu halten und mit Hilfe von Abfragen Berechnungen darüber zu legen.
Werfen wir einen Blick auf unsere Spalte TAXED_PRICE
und schauen wir uns an, wie sie erstellt wurde. Zuerst sehen wir, dass PRICE
mit 1,07 multipliziert wird, um den besteuerten Betrag zu berechnen. Diesen Wert TAXED_PRICE
erzeugen wir für jeden Datensatz:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Beachte auch, dass wir diesem berechneten Wert einen Namen gegeben haben, indem wir eine AS
Anweisung verwendet haben (dies ist als Alias bekannt):
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Wir können Aliase verwenden, um Ausdrücken Namen zu geben. Wir können Aliasnamen auch verwenden, um einer bestehenden Spalte in der Abfrage einen neuen Namen zu geben. Zum Beispiel können wir die Spalte PRICE
in UNTAXED_PRICE
umbenennen(Abbildung 4-7). Dadurch wird der Name der Spalte in der Tabelle nicht wirklich geändert, aber sie erhält einen neuen Namen im Rahmen unserer SELECT
Anweisung:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
AS
UNTAXED_PRICE
,
PRICE
*
1
.
07
AS
TAXED_PRICE
FROM
PRODUCT
Hinweis
Wenn du in SQL einen Namen gibst (egal ob es ein Alias, ein Spaltenname, ein Tabellenname, oder eine andere Entität ist), verwende immer einen Unterstrich (_
) als Platzhalter für Leerzeichen. Das ist die bewährte Methode.
Wenn wir die Ergebnisse dieser SQL-Anweisung als Bericht an unseren Arbeitsplatz weitergeben würden, würden wir wahrscheinlich die Rundung auf TAXED_PRICE
verbessern wollen. Mehr als zwei Dezimalstellen sind vielleicht nicht wünschenswert. Jede Datenbankplattform verfügt über integrierte Funktionen, die bei dieser Art von Operationen helfen, und SQLite bietet eine round()
Funktion, die zwei Argumente in Klammern akzeptiert, die durch ein Komma getrennt sind: die Zahl, die gerundet werden soll, und die Anzahl der Dezimalstellen, auf die gerundet werden soll. Um TAXED_PRICE
auf zwei Dezimalstellen zu runden, können wir den Multiplikationsausdruck PRICE AS UNTAXED_PRICE * 1.07
als erstes Argument und 2
als zweites Argument übergeben:
SELECT
PRODUCT_ID
,
DESCRIPTION
,
PRICE
AS
UNTAXED_PRICE
,
round
(
PRICE
AS
UNTAXED_PRICE
*
1
.
07
,
2
)
AS
TAXED_PRICE
FROM
PRODUCT
;
Wenn du die Anweisung ausführst, wirst du feststellen, dass TAXED_PRICE
gerundet wird und mit zwei Nachkommastellen viel schöner aussieht(Abbildung 4-8).
Hier ist eine kurze Zusammenfassung der mathematischen Operatoren, die du in SQL verwenden kannst (wir werden sie im Laufe des Buches immer wieder sehen):
Betreiber | Beschreibung | Beispiel |
---|---|---|
+ | Addiert zwei Zahlen | STOCK + NEW_SHIPMENT |
- | Subtrahiert zwei Zahlen | STOCK - DEFECTS |
* | Multipliziert zwei Zahlen | PRICE * 1.07 |
/ | Dividiert zwei Zahlen | STOCK / PALLET_SIZE |
% | Teilt zwei Zahlen, gibt aber den Rest zurück | STOCK % PALLET_SIZE |
Textverkettung
Ausdrücke müssen nicht nur mit Zahlen funktionieren. Du kannst Ausdrücke auch mit Text und anderen Datentypen verwenden. Ein hilfreicher Operator für Text ist die Verkettung, mit der zwei oder mehr Daten zusammengefügt werden. Der Verkettungsoperator wird durch eine doppelte Pipe (||
) angegeben, auf deren beiden Seiten du die zu verkettenden Datenwerte einfügst.
Du kannst zum Beispiel die Felder CITY
und STATE
aus der Tabelle CUSTOMER
miteinander verknüpfen und ein Komma und ein Leerzeichen dazwischen setzen, um den Wert LOCATION
zu erstellen(Abbildung 4-9):
SELECT
NAME
,
CITY
||
', '
||
STATE
AS
LOCATION
FROM
CUSTOMER
;
Du kannst sogar mehrere Felder zu einem einzigen SHIP_ADDRESS
Wert verketten(Abbildung 4-10):
SELECT
NAME
,
STREET_ADDRESS
||
' '
||
CITY
||
', '
||
STATE
||
' '
||
ZIP
AS
SHIP_ADDRESS
FROM
CUSTOMER
;
Die Verkettung sollte mit jedem Datentyp (Zahlen, Daten usw.) funktionieren und ihn beim Zusammenführen als Text behandeln. Das hier gezeigte Feld ZIP
ist eine Zahl, aber es wurde bei der Verkettung implizit in Text umgewandelt.
Weitere Textoperationen werden im nächsten Kapitel behandelt, aber die Verkettung ist definitiv eine wichtige Operation.
Hinweis
Viele Datenbankplattformen verwenden Double Pipes (||
) zur Verkettung, aber MySQL und einige andere verlangen die Verwendung einer CONCAT()
Funktion.
Zusammenfassung
In diesem Kapitel haben wir uns mit der SELECT
Anweisung, der häufigsten SQL-Operation, beschäftigt. Sie ruft Daten aus einer Tabelle ab und wandelt sie um, ohne die Tabelle selbst zu verändern. Wir haben auch gelernt, wie man Spalten auswählt und Ausdrücke schreibt. In Ausdrücken können wir Operatoren und Funktionen verwenden, um Aufgaben wie Runden, Rechnen und Verkettung zu erledigen.
Im nächsten Kapitel werden wir die Anweisung WHERE
kennenlernen, mit der wir Datensätze nach bestimmten Kriterien filtern können.
Get Erste Schritte mit SQL now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.