MySQL SELECT-Anweisung mit Beispielen

⚡ Intelligente Zusammenfassung

Das MySQL Die SELECT-Anweisung ruft Zeilen aus einer oder mehreren Tabellen ab. Jedes der folgenden Beispiele wird anhand der myflix-Beispieldatenbank ausgeführt, wobei von der einfachen Sternabfrage über Ausdrücke und Spaltenaliase bis hin zu Zeichenkettenfunktionen vorgegangen wird.

  • 🔎 Hauptzweck: SELECT ruft gespeicherte Zeilen ab, die einem Kriterium entsprechen, entweder über die Befehlszeile oder über PHP. Python, und andere Sprachen.
  • 🧩 Syntaxreihenfolge: SELECT, FROM, WHERE, GROUP BY, HAVING und ORDER BY müssen in dieser festgelegten Reihenfolge erscheinen.
  • Sternenabkürzung: SELECT * FROM `members`; gibt alle Spalten zurück, während die explizite Benennung von Spalten die Ergebnismengen kleiner und schneller hält.
  • 🔗 Ausdrücke: Concat() verknüpft Spaltenwerte, und LEFT() entfernt Zeichen, sodass berechnete Felder direkt im Ergebnis erscheinen.
  • 🏷️ Spaltenaliase: Das optionale Schlüsselwort AS benennt jeden Ausdruck um und ersetzt unlesbare Überschriften wie Concat(`title`) durch eindeutige Bezeichnungen.
  • 🖱️ Werkbankvergleich: MySQL Workbench generiert Abfragen visuell, dennoch sind handgeschriebene SELECT-Anweisungen für komplexe und präzise Abfragen weiterhin notwendig.

Was ist eine SELECT-Abfrage? MySQL?

SELECT-Abfrage wird verwendet, um Daten aus dem MySQL Datenbank. Datenbanken speichern Daten für den späteren Abruf. Der Zweck von MySQL Die SELECT-Anweisung gibt eine oder mehrere Zeilen aus den Datenbanktabellen zurück, die bestimmten Kriterien entsprechen. Eine SELECT-Abfrage kann in einer Skriptsprache wie PHP oder Ruby verwendet oder über die Kommandozeile ausgeführt werden.

SELECT-Abfrage in MySQL

Da SELECT der Befehl ist, den Sie am häufigsten ausführen werden, lohnt es sich, seine Syntax zu lernen, bevor Sie die Beispieldaten bearbeiten.

SQL SELECT-Anweisungssyntax

SELECT ist der am häufigsten verwendete SQL-Befehl und hat folgende allgemeine Syntax:

SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];

HIER KLICKEN

  • SELECT ist das SQL-Schlüsselwort, das der Datenbank mitteilt, dass Sie Daten abrufen möchten.
  • [DEUTLICH | ALLE] sind optionale Schlüsselwörter, die die von der SQL-SELECT-Anweisung zurückgegebenen Ergebnisse genauer steuern. Wenn keines angegeben wird, wird standardmäßig ALL verwendet.
  • {*| [fieldExpression [AS newName]} Mindestens ein Teil muss angegeben werden. „*“ wählt alle Felder der angegebenen Tabelle aus; fieldExpression führt Berechnungen mit den angegebenen Feldern durch, z. B. das Addieren von Zahlen oder das Zusammenfügen zweier Zeichenkettenfelder zu einem einzigen.
  • AB Das Feld „tableName“ ist obligatorisch und muss mindestens eine Tabelle enthalten. Mehrere Tabellen müssen durch Kommas getrennt oder mit dem Schlüsselwort JOIN verknüpft werden.
  • WO Die Bedingung ist optional. Sie legt Kriterien für das von der Abfrage zurückgegebene Ergebnis fest.
  • GRUPPIERE NACH wird verwendet, um Datensätze zusammenzustellen, die die gleichen Feldwerte haben.
  • HABEN Die Bedingung wird verwendet, um Kriterien bei der Arbeit mit dem Schlüsselwort GROUP BY anzugeben.
  • SORTIEREN NACH wird verwendet, um die Sortierreihenfolge der Ergebnismenge anzugeben.

*

Das Sternsymbol wählt alle Spalten einer Tabelle aus. Eine einfache SELECT-Anweisung sieht beispielsweise so aus:

SELECT * FROM `members`;

Die obige Anweisung wählt alle Felder aus der Tabelle „members“ aus. Das Semikolon beendet die Anweisung. Es ist zwar nicht zwingend erforderlich, gilt aber als bewährte Vorgehensweise.

SELECT DISTINCT und LIMIT in MySQL

Zwei optionale Schlüsselwörter in der Syntax verdienen einen genaueren Blick, da Anfänger ihnen bereits begegnen, wenn eine Tabelle größer wird.

DISTINCT Entfernt doppelte Zeilen aus dem Ergebnissatz. Die Tabelle „movies“ enthält mehrere Filme, die 2007 erschienen sind, daher wiederholt eine einfache Abfrage dieses Jahr. DISTINCT gibt jeden Wert genau einmal zurück.

SELECT DISTINCT `year_released` FROM `movies`;

LIMIT begrenzt die Anzahl der zurückgegebenen Zeilen und schützt so den Client vor einer Abfrage, die andernfalls Millionen von Datensätzen abrufen würde.

SELECT * FROM `movies` LIMIT 5;
Stichwort (Keyword) Was sie tut, Wann man es benutzt
ALLE (Standard) Gibt alle übereinstimmenden Zeilen zurück, einschließlich Duplikaten. Zählen oder Auflisten von Rohdaten
DISTINCT Doppelte Zeilen werden zu einer einzigen zusammengefasst Erstellen einer Liste eindeutiger Werte
LIMIT Gibt nur die ersten N Zeilen zurück. Vorschau der Daten oder Seitenergebnisse

Nachdem die Syntax festgelegt wurde, erweckt die Beispieldatenbank diese Klauseln zum Leben.

SELECT-Anweisung – Praktische Beispiele

Zum Herunterladen klicken Die Myflix-Datenbank, die für die praktischen Beispiele verwendet wurde.

Sie können lernen, wie Sie die .sql-Datei importieren in MySQL Werkbank.

Die Beispiele werden an den folgenden beiden Tabellen durchgeführt.

Tabelle 1: Mitglieder Tabelle

Mitgliedsnummer ganze Namen Geschlecht Geburtsdatum physikalische Adresse Anschrift Kontaktnummer E-Mail
1 Janet Jones Weiblich 21-07-1980 Erstes Straßengrundstück Nr. 4 Private Tasche 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Weiblich 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Männlich 12-07-1989 3. Straße 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Weiblich 14-02-1984 2. Straße 23 NULL NULL NULL

Tabelle 2: Filme Tabelle

movie_id Titel Regisseur Jahr_veröffentlicht Kategorie ID
1 Fluch der Karibik 4 Rob Marshall 2011 1
2 Sarah Marshal vergessen Nicholas Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Name Black Edgar Jimz 2010 NULL
5 Papas kleine Mädchen NULL 2007 8
6 Engel und Dämonen NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey moonERS Johann Schulz 2005 8
16 67 % schuldig NULL 2012 NULL

Mitgliederliste abrufen

Angenommen, wir möchten eine Liste aller registrierten Bibliotheksmitglieder aus unserer Datenbank erhalten. Dazu würden wir das unten gezeigte Skript verwenden.

SELECT * FROM `members`;

Das Skript wird ausgeführt in MySQL Workbench liefert die folgenden Ergebnisse.

Mitgliedsnummer ganze Namen Geschlecht Geburtsdatum physikalische Adresse Anschrift Kontaktnummer E-Mail
1 Janet Jones Weiblich 21-07-1980 Erstes Straßengrundstück Nr. 4 Private Tasche 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Weiblich 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Männlich 12-07-1989 3. Straße 34 NULL 12345 rm@tstreet.com
4 Gloria Williams Weiblich 14-02-1984 2. Straße 23 NULL NULL NULL

Die Abfrage lieferte alle Zeilen und Spalten aus der Tabelle „Mitglieder“.

Auswahl bestimmter Spalten

Angenommen, wir interessieren uns nur für die Felder „full_names“, „gender“, „physical_address“ und „email“. Das folgende Skript erreicht dies.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

Das Skript wird ausgeführt in MySQL Workbench liefert die folgenden Ergebnisse.

ganze Namen Geschlecht physikalische Adresse E-Mail
Janet Jones Weiblich Erstes Straßengrundstück Nr. 4 janetjones@yagoo.cm
Janet Smith Jones Weiblich Melrose 123 jj@fstreet.com
Robert Phil Männlich 3. Straße 34 rm@tstreet.com
Gloria Williams Weiblich 2. Straße 23 NULL

Filmliste mit Ausdrücken abrufen

Ausdrücke können auch in SELECT-Anweisungen verwendet werden. Angenommen, wir möchten eine Liste von Filmen mit dem Titel und dem Namen des Regisseurs in einem Feld, dem Regisseur in Klammern und dem Erscheinungsjahr des Films. Das folgende Skript erledigt das.

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

HIER KLICKEN

  • Die Concat()-Funktion MySQL Funktion verknüpft Spaltenwerte.
  • Die Zeile „Concat(`title`, ' (', `director`, ')')“ holt sich den Titel, fügt eine öffnende Klammer gefolgt vom Namen des Regisseurs hinzu und anschließend die schließende Klammer.
  • Innerhalb der Concat()-Funktion werden die einzelnen Zeichenkettenabschnitte durch Kommas getrennt.

Das Skript wird ausgeführt in MySQL Workbench erzeugt das folgende Ergebnis-Set.

Concat(`title`, ' (', `director`, ')') Jahr_veröffentlicht
Fluch der Karibik 4 (Rob Marshall) 2011
Sarah Marshal (Nicholas Stoller) vergessen 2008
NULL 2008
Code Name Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Hinweis: Die Funktion Concat() gibt NULL zurück, wenn mindestens ein Argument NULL ist. Deshalb wird oben bei Filmen ohne Regisseur NULL angezeigt.

Alias-Feldnamen

Das obige Beispiel gab den Verkettungscode als Feldnamen zurück. Um einen aussagekräftigeren Feldnamen im Ergebnissatz zu verwenden, wenden Sie einen Spaltenalias an. Die grundlegende Syntax folgt.

SELECT `column_name|value|expression` [AS] `alias_name`;

HIER KLICKEN

  • „SELECT `Spaltenname|Wert|Ausdruck`“ ist die reguläre SELECT-Anweisung, die ein Spaltenname, ein Wert oder ein Ausdruck sein kann.
  • "[ALS]" ist das optionale Schlüsselwort vor dem Aliasnamen.
  • „`Aliasname`“ ist der Alias, der im Resultset als Feldname zurückgegeben wird.

Dieselbe Abfrage mit einem aussagekräftigeren Spaltennamen:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

Wir erhalten folgendes Ergebnis.

Konkat Jahr_veröffentlicht
Fluch der Karibik 4 (Rob Marshall) 2011
Sarah Marshal (Nicholas Stoller) vergessen 2008
NULL 2008
Code Name Black (Edgar Jimz) 2010
NULL 2007
NULL 2007
NULL 2007
Honey mooners (John Schultz) 2005
NULL 2012

Mitgliederliste mit Geburtsjahr anzeigen

Angenommen, wir möchten eine Liste aller Mitglieder mit Mitgliedsnummer, vollständigem Namen und Geburtsjahr. Wir können die LEFT-Stringfunktion verwenden, um …tracDas Geburtsjahr wird aus dem Feld „Geburtsdatum“ entnommen.

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

HIER KLICKEN

  • „LINKS(`Geburtsdatum`,4)“ die LEFT-String-Funktion Akzeptiert das Geburtsdatum als Parameter und gibt nur die ersten vier Zeichen zurück.
  • „AS `year_of_birth`“ ist das Spaltenaliasname Das Ergebnis war in unseren Ergebnissen enthalten. Das Schlüsselwort AS ist optionalSie können es weglassen, die Abfrage funktioniert trotzdem.

Die Abfrage wird ausgeführt in MySQL Die Workbench-Analyse von myflixdb liefert die unten dargestellten Ergebnisse.

Mitgliedsnummer ganze Namen Geburtsjahr
1 Janet Jones 1980
2 Janet Smith Jones 1980
3 Robert Phil 1989
4 Gloria Williams 1984

Manuell geschriebene Abfragen sind nur ein Weg zu einem Ergebnissatz. Workbench kann die Abfrage auch für Sie erstellen.

SQL-Nutzung MySQL Werkbank

Wir werden es jetzt verwenden MySQL Workbench, um das Skript zu generieren, das alle Feldnamen aus unserer Kategorientabelle anzeigt.

1. Klicken Sie mit der rechten Maustaste auf die Tabelle „Kategorien“. Klicken Sie auf „Zeilen auswählen – Limit 1000“.

2. MySQL Workbench erstellt automatisch eine SQL-Abfrage und fügt sie in den Editor ein.

3. Die Suchergebnisse werden im Raster unterhalb des Editors angezeigt.

SQL verwenden MySQL Werkbank

Wie der Screenshot zeigt, haben wir die SELECT-Anweisung nicht selbst geschrieben. MySQL Workbench hat es für uns generiert.

Warum den SELECT SQL-Befehl verwenden, wenn wir haben MySQL Werkbank?

Sie fragen sich vielleicht, warum Sie den SQL-SELECT-Befehl lernen sollten, wenn es doch ein Tool wie … gibt. MySQL Workbench liefert die gleichen Ergebnisse auch ohne SQL-Kenntnisse. Diese Abkürzung ist zwar möglich, aber den SELECT-Befehl lernen gibt dir mehr Flexibilität und Kontrolle über deine SQL SELECT-Anweisungen.

MySQL Workbench fällt in die Kategorie „Abfrage nach Beispiel„(QBE)-Tools. Sie dienen dazu, SQL-Anweisungen schneller zu generieren und die Produktivität der Benutzer zu steigern.“

Das Erlernen des SQL-SELECT-Befehls ermöglicht Ihnen Folgendes: komplexe Abfragen die nicht ohne Weiteres durch Query-by-Example-Dienstprogramme wie beispielsweise generiert werden können MySQL Werkbank.

Um die Produktivität zu steigern, können Sie den Code generieren in MySQL Werkbank und dann anpassen es erfüllen Sie Ihre AnforderungenDas ist nur möglich, wenn man versteht, wie SQL-Anweisungen funktionieren.

das Verständnis der MySQL SELECT-Anweisung

Häufig gestellte Fragen

In der Regel ja. `SELECT *` liest alle Spalten, einschließlich großer Text- und BLOB-Felder, die Sie möglicherweise nicht benötigen, und blockiert überlappende Indizes. Durch die Benennung der Spalten bleibt das Ergebnis kleiner und die Abfrage schneller.

Schlüsselwörter wie SELECT und FROM unterscheiden nicht zwischen Groß- und Kleinschreibung. Zeichenkettenvergleiche richten sich nach der Sortierung der Spalte. Daher werden bei einer Sortierung wie utf8mb4_0900_ai_ci, die die Groß- und Kleinschreibung nicht beachtet, „Janet“ und „janet“ als gleichwertig behandelt.

Ein fehlender Index ist die übliche Ursache. Führen Sie EXPLAIN vor der Abfrage aus, um zu prüfen, ob MySQL Führt einen vollständigen Tabellenscan durch, indiziert anschließend die gefilterten oder verknüpften Spalten und gibt nur die benötigten Zeilen zurück.

Ja. Text-zu-SQL-Assistenten wandeln eine einfache Anfrage in eine SELECT-Anweisung um, sobald sie Ihr Schema kennen. RevÜberprüfen Sie die generierten Joins und Filter, denn ein KI-Modell kann Spaltennamen erfinden, die nicht existieren.

Nein. Die KI erstellt zwar schnell eine Abfrage, aber Sie überprüfen trotzdem die Logik, die Joins und die Performance in MySQL WerkbankDie Kenntnis von SELECT ermöglicht es Ihnen, ein falsches Ergebnis zu erkennen, bevor es in die Produktion gelangt.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: