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.

The SQL editor
Abbildung 4-1. Der SQL-Arbeitsbereich

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).

Running a SELECT query
Abbildung 4-2. Ausführen einer SELECT-Abfrage

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).

Selecting all records from the CUSTOMER table
Abbildung 4-3. Auswählen aller Datensätze aus der Tabelle CUSTOMER

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).

Selecting only two columns from a table
Abbildung 4-4. Auswählen von nur zwei Spalten aus einer Tabelle
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;
The PRODUCT table
Abbildung 4-5. Die Tabelle 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;
Using expressions to calculate a TAXED_PRICE column
Abbildung 4-6. Verwendung von Ausdrücken zur Berechnung einer TAXED_PRICE-Spalte
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
Aliasing the PRICE column to UNTAXED_PRICE
Abbildung 4-7. Aliasing der Spalte PRICE auf UNTAXED_PRICE
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).

Using the round() function to limit decimal places for TAXED_PRICE
Abbildung 4-8. Verwendung der Funktion round() zur Begrenzung der Dezimalstellen für TAXED_PRICE

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;
Concatenating CITY and STATE
Abbildung 4-9. Verkettung von CITY und STATE

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;
Concatenating several fields to create a SHIP_ADDRESS
Abbildung 4-10. Verkettung mehrerer Felder zur Erstellung einer SHIP_ADDRESS

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.