MySQL: Effiziente Datenabfragen mit SELECT

Advertisement

MySQL ist ein beliebtes und weit verbreitetes relationales Datenbankmanagementsystem (RDBMS) in verschiedenen Bereichen. MySQL wurde für die Speicherung, Verarbeitung und Verwaltung von Daten in kleinem bis großem Maßstab entwickelt und ist die erste Wahl bei der Entwicklung von Webanwendungen, Informationssystemen und E-Commerce-Plattformen. Einer der wichtigsten grundlegenden Befehle ist die SELECT-Anweisung, die Daten aus einer oder mehreren Tabellen in einer Datenbank abruft oder anzeigt.

Advertisement
script mysql

Was ist ein SELECT Statement?

SELECT Statement ist ein grundlegender SQL-Befehl, der zum Abrufen von Daten aus einer oder mehreren Tabellen in einer MySQL-Datenbank verwendet wird. Mit diesem Befehl können Benutzer Daten nach Bedarf anzeigen, unabhängig davon, ob es sich um die Auswahl einer bestimmten Spalte oder das Abrufen des gesamten Tabelleninhalts handelt.

Der Hauptzweck des SELECT Statement besteht darin, Benutzern das Abrufen von Informationen aus der Datenbank entsprechend den spezifischen Anforderungen zu erleichtern, unabhängig davon, ob es sich um die Anzeige einer einzelnen Spalte, mehrerer Spalten oder ganzer Daten aus einer Tabelle handelt. Darüber hinaus kann das SELECT Statement auch mit anderen Befehlen wie WHERE, ORDER BY und LIMIT  kombiniert werden, um das Filtern, Sortieren oder Begrenzen der Anzahl der angezeigten Ergebnisse durchzuführen.

Advertisement

Verwenden von SELECT Statement zum Erfassen von einspaltigen Daten

SELECT Statement in SQL ist ein Befehl, der zum Abrufen von Daten aus einer bestimmten Spalte in einer Tabelle verwendet wird. Die grundlegende Syntax für die Verwendung einer SELECT-Anweisung lautet wie folgt:

Advertisement
SELECT column_name FROM table_name;

In dieser Syntax  ist SELECT die Funktion zum Auswählen der Daten, die Sie anzeigen möchten, column_name ist die Spalte, deren Daten Sie abrufen möchten, FROM gibt die Quelle der Daten an, und table_name ist die Tabelle, in der sich die Spalte befindet.

Zum Beispiel können wir Daten aus einer Spalte mit dem Namen prod_name in Tabelle products abrufen. Mit den folgenden SELECT Statement können wir alle Daten aus den prod_name Spalten anzeigen:

SELECT prod_name FROM products;

Das Ergebnis dieses Befehls sind alle Werte, die in der prod_name Spalte der Tabelle products enthalten sind. Wenn die Tabelle “products” beispielsweise Daten wie die folgenden enthält:

| prod_name     |
|---------------|
| 0.5 ton anvil |
| 1 ton anvil   |
| 2 ton anvil   |
| Oil can       |

Verwenden von SELECT Statement zum Erfassen von Daten mit mehreren Spalten

Um Daten aus mehreren Spalten in einer Tabelle abzurufen, können wir mit dem SELECT Statement mehrere Spalten gleichzeitig benennen. Auf diese Weise können wir mehrere Spalten aus derselben Tabelle in einer einzigen Abfrage anzeigen, ohne den  Befehl SELECT  wiederholt ausführen zu müssen.

Wenn wir mehrere Spalten verwenden möchten, müssen wir nur die Namen der Spalten hinzufügen, die wir nach dem Schlüsselwort SELECT anzeigen möchten, getrennt durch ein Komma (,). Der Name der Tabelle, die diese Daten enthält, wird weiterhin nach dem Schlüsselwort FROM angegeben.

Die Syntax für die Verwendung mehrerer Spalten lautet wie folgt:

SELECT column_name1, column_name2, column_name3 FROM table_name;
  • SELECT: um die Daten auszuwählen, die Sie abrufen möchten.
  • column_name1, column_name2, column_name3: die Spalte, die Sie anzeigen möchten, getrennt durch ein Komma.
  • FROM: um die Tabelle anzugeben, aus der die Daten abgerufen wurden.

Hier ist z. B. eine Abfrage zum Abrufen von Daten aus den  Spalten prod_id, prod_name und prod_price in der products Tabelle:

SELECT prod_id, prod_name, prod_price FROM products;

Wenn die Produkttabelle Daten wie die folgenden enthält:

| prod_id | prod_name     | prod_price |
|---------|---------------|------------|
| ANV01   | 0.5 ton anvil | 5.99       |
| ANV02   | 1 ton anvil   | 9.99       |
| ANV03   | 2 ton anvil   | 14.99      |
| OL1     | Oil can       | 8.99       |

Dann zeigen die Ergebnisse dieser Abfrage gleichzeitig Daten aus den Spalten prod_id, prod_name und prod_price an, sodass wir die Produkt-ID, den Produktnamen und den Preis in einer Ansicht sehen können.

Abrufen aller Spalten mit SELECT Statement

Wenn wir alle Spalten einer Tabelle anzeigen möchten, können wir die SELECT Statement mit dem Platzhaltersymbol * verwenden. Der  Platzhalter *  ermöglicht es uns, alle Spalten abzurufen, ohne sie einzeln erwähnen zu müssen.

Dies ist zwar praktisch, aber die Verwendung von *  Platzhaltern ist mit Vorsicht geboten, insbesondere wenn die Tabelle viele Spalten enthält oder wenn nur wenige Spalten benötigt werden. Das Abrufen aller Spalten ohne ersichtlichen Grund kann die Abfrageleistung verlangsamen, insbesondere wenn die abgerufenen Daten sehr groß sind. Daher ist es am besten, die *  wildcard  nur dann zu verwenden, wenn alle Daten notwendig sind.

Um alle Spalten aus der products Tabelle abzurufen, können wir die folgende Abfrage verwenden:

SELECT * FROM products;

Wenn die Produkttabelle Daten wie die folgenden enthält:

| prod_id | prod_name     | prod_price | prod_vendor | stock_qty |
|---------|---------------|------------|-------------|-----------|
| ANV01   | 0.5 ton anvil | 5.99       | Vendor A    | 20        |
| ANV02   | 1 ton anvil   | 9.99       | Vendor A    | 15        |
| ANV03   | 2 ton anvil   | 14.99      | Vendor B    | 30        |
| OL1     | Oil can       | 8.99       | Vendor B    | 50        |

Dann zeigt das Ergebnis dieses Befehls alle Spalten (prod_id, prod_name, prod_price, prod_vendor stock_qty) der Produkttabelle an.

Wichtige Hinweise

Die Verwendung von Platzhalter* erleichtert das Abrufen aller Spalten in einer einzelnen Abfrage, kann jedoch die Leistung beeinträchtigen, wenn die abgerufene Tabelle viele Spalten oder sehr große Daten enthält. Wenn wir also nur ein paar bestimmte Spalten benötigen, ist es besser, die Namen dieser Spalten direkt zu erwähnen, um die Abfrage effizient zu halten.

Einschränken von Abfrageergebnissen mit LIMIT

In SQL dient der Befehl LIMIT dazu, die Menge der angezeigten Daten aus den Abfrageergebnissen zu begrenzen. LIMIT ist besonders nützlich, wenn wir nur eine bestimmte Datenmenge aus einer Tabelle abrufen möchten, z. B. die Anzeige einer Stichprobe oder nur der ersten Daten aus einem großen Abfrageergebnis.

LIMIT wird verwendet, indem die gewünschte Datenmenge nach dem Keyword angegeben wird. Wenn auf LIMIT eine einzelne Zahl folgt, ruft MySQL mehrere Datenzeilen ab, die von der ersten Zeile bis zur angegebenen Zahl reichen.

Das folgende Beispiel zeigt, wie Sie LIMIT verwenden, um die ersten 5 Daten aus der Spalte prod_name in der Tabelle “products” abzurufen:

SELECT prod_name FROM products LIMIT 5;

Dann zeigt das Ergebnis dieser Abfrage nur die ersten 5 Zeilen an:

| prod_name     |
|---------------|
| 0.5 ton anvil |
| 1 ton anvil   |
| 2 ton anvil   |
| Oil can       |
| Fuses         |

Verwendung von LIMIT und OFFSET bei der Datenerfassung

Wir können die Anzahl der abgerufenen Zeilen begrenzen und auch bestimmen, aus welchen Zeilen die Daten abgerufen werden, indem wir OFFSET verwenden. In MySQL wird OFFSET in Verbindung mit LIMIT geschrieben, um den Startpunkt des Datenabrufs zu bestimmen. Beispiele:

SELECT prod_name FROM products LIMIT 5 OFFSET  5;

Diese Abfrage ruft 5 Datenzeilen ab, beginnend mit der 6. Zeile.

Es gibt auch andere Möglichkeiten, LIMIT zu schreiben, indem OFFSET zwei Ziffern nach LIMIT verwenden, z. B.:

SELECT prod_name FROM products LIMIT 5,  5;

Diese Schreibweise hat die gleiche Bedeutung, nämlich 5 Zeilen ab der 6. Zeile zu nehmen, wobei die erste Zahl (5) OFFSET und die zweite Zahl (5) die zu nehmende Datenmenge ist.

Vorteile von LIMIT und OFFSET

  • LIMIT ohne OFFSET erleichtert es uns, einige erste Daten aus den Abfrageergebnissen abzurufen.
  • Die Kombination aus LIMIT und OFFSET ist besonders nützlich für In-App-Dateneinstellungen, wie z. B. Seitenaufrufe (*Paginierung*), bei denen jede Seite die gleiche Datenmenge benötigt, aber von unterschiedlichen Positionen aus startet.

Erfassung einzigartiger Daten mit DISTINCT

In SQL werden DISTINCT Befehle im SELECT Statement verwendet, um Daten ohne Duplizierung zu erhalten. Wenn in einer Spalte dieselben Daten vorhanden sind und wir nur unterschiedliche Werte anzeigen möchten, stellt DISTINCT sicher, dass jeder Wert einmal in den Abfrageergebnissen angezeigt wird.

DISTINCT wird nach dem Schlüsselwort SELECT und vor dem Namen der Spalte platziert, die Sie abrufen möchten. Dieser Befehl weist MySQL an, nur die eindeutigen Daten aus dieser Spalte anzuzeigen und Zeilen mit demselben Wert zu löschen.

Die Syntax für die Verwendung DISTINCT lautet wie folgt:

SELECT DISTINCT column_name FROM table_name;
  • DISTINCT: Weist SQL an, eindeutige Werte in den angegebenen Spalten anzuzeigen.
  • column_name: Der Name der Spalte, aus der Sie Daten eindeutig abrufen möchten.
  • FROM: Gibt die Tabelle an, aus der die Daten stammen.

Zum Beispiel möchten wir eindeutige Daten aus den vend_id Spalten in der products Tabelle abrufen. Wenn ohne Verwendung von DISTINCT mehrere Produkte desselben Anbieters vorhanden sind, wird jede Anbieter-ID mehrmals in den Abfrageergebnissen angezeigt. Mit DISTINCT können wir sicherstellen, dass die Ergebnisse jede Anbieter-ID nur einmal anzeigen.

Beispiele sind wie folgt:

SELECT DISTINCT vend_id FROM products;

Wenn die Produkttabelle Daten wie diese enthält:

| vend_id |
|---------|
| 1001    |
| 1001    |
| 1002    |
| 1003    |
| 1003    |
| 1003    |
| 1004    |

Die Ergebnisse der Abfrage zeigen nur die eindeutige Anbieter-ID an, sodass sie wie folgt aussieht:

| vend_id |
|---------|
| 1001    |
| 1002    |
| 1003    |
| 1004    |

Wichtige Hinweise

  • DISTINCT gilt für die Kombination von Spalten, die in der Abfrage ausgewählt sind. Wenn mehr als eine Spalte mit DISTINCT verwendet wird, stellt SQL sicher, dass die Kombination der Spalten eindeutig ist.
  • DISTINCT entfernt nur Duplikate aus den angegebenen Spalten und wirkt sich nicht auf andere Spalten in der Tabelle aus.

Verwenden qualifizierter Spaltennamen

Die Verwendung von fully qualified column names (im Format table.column) in SQL hat mehrere wichtige Vorteile, insbesondere beim Abrufen von Daten aus Tabellen, die Spalten mit demselben Namen enthalten können.

Im Folgenden sind einige der Vorteile der Verwendung vollqualifizierter Spaltennamen aufgeführt:

  1. Mit dem Format table.column geben Sie an, aus welcher Tabelle die Spalte stammt. Dies ist besonders nützlich, wenn Sie mit mehreren Tabellen in einer einzigen Abfrage arbeiten, z. B. wenn Sie JOIN ausführen. Diese Klarheit verringert die Verwirrung darüber, auf welche Spalte verwiesen wird.
  2. Wenn zwei oder mehr Tabellen vorhanden sind, die Spalten mit demselben Namen enthalten, können durch die Verwendung vollqualifizierter Spaltennamen Konflikte vermieden werden. Wenn Sie z. B. products und orders Tabellen haben, die jeweils prod_id Spalten haben, können Sie products.prod_id und orders.prod_id  verwenden, um zwischen den beiden zu unterscheiden.
  3. Durch das Einbeziehen von Tabellennamen in Spaltenverweise wird SQL-Code von anderen Entwicklern oder in Zukunft von ihnen selbst leichter zu verstehen und zu pflegen. Dies hilft bei der kontinuierlichen Dokumentation und Entwicklung.

Schlussfolgerung

Das Erlernen von SELECT-Anweisungen in MySQL ist für die ordnungsgemäße und sichere Verwaltung von Daten unerlässlich. Mit der Möglichkeit, bestimmte Daten abzurufen, der Flexibilität bei der Auswahl von Spalten, der Übersichtlichkeit und der Verbesserung der Leistung können Sie die Effizienz und Qualität Ihrer Projekte verbessern. Das Befolgen von Best Practices, wie z. B. die Verwendung vollständiger Spaltennamen und konsistenter Formatierung, ist auch für die Dokumentation und Problembehandlung in SQL-Code von Vorteil.

Neueste Artikel