MySQL-Datenfilterung und -sortierung

MySQLMySQLBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir essentielle Techniken zum Filtern und Sortieren von Daten in MySQL erkunden. Sie werden lernen, wie Sie WHERE-Klauseln verwenden, um Daten basierend auf bestimmten Bedingungen zu filtern, Ergebnisse mit ORDER BY zu sortieren und die Ausgabe mit der LIMIT-Klausel zu begrenzen. Diese Fähigkeiten sind für jeden Datenbankbenutzer grundlegend und ermöglichen es Ihnen, genau die Daten abzurufen, die Sie benötigen, in der Reihenfolge, in der Sie sie möchten. Durch praktische Übungen werden Sie praktische Erfahrung mit diesen wichtigen Datenbankoperationen sammeln und verstehen, wie Sie effektiv Daten in MySQL abfragen und organisieren können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) sql(("SQL")) -.-> sql/DataManipulationandQueryingGroup(["Data Manipulation and Querying"]) sql(("SQL")) -.-> sql/AdvancedDataOperationsGroup(["Advanced Data Operations"]) sql/BasicSQLCommandsGroup -.-> sql/select("SELECT statements") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") sql/DataManipulationandQueryingGroup -.-> sql/where("WHERE clause") sql/DataManipulationandQueryingGroup -.-> sql/order_by("ORDER BY clause") sql/DataManipulationandQueryingGroup -.-> sql/like("LIKE operator") sql/AdvancedDataOperationsGroup -.-> sql/string_functions("String functions") sql/AdvancedDataOperationsGroup -.-> sql/numeric_functions("Numeric functions") subgraph Lab Skills sql/select -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} mysql/select -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} sql/where -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} sql/order_by -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} sql/like -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} sql/string_functions -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} sql/numeric_functions -.-> lab-418305{{"MySQL-Datenfilterung und -sortierung"}} end

Grundlegendes Datenfiltern mit WHERE

In diesem Schritt werden wir lernen, wie man die WHERE-Klausel verwendet, um Daten basierend auf bestimmten Bedingungen zu filtern. Die WHERE-Klausel ist eines der wichtigsten Merkmale in SQL und ermöglicht es Ihnen, nur die Daten abzurufen, die Ihren Kriterien entsprechen.

Zunächst verbinden wir uns mit MySQL und wählen unsere Datenbank aus:

sudo mysql -u root

Sobald verbunden:

USE bookstore;

Einfache Vergleichsoperationen

Beginnen wir mit grundlegenden Vergleichsoperatoren:

-- Bücher, die mehr als 40 Dollar kosten
SELECT title, price
FROM books
WHERE price > 40;

Sie sollten eine Ausgabe wie diese sehen:

+-------------------------+-------+
| title                   | price |
+-------------------------+-------+
| The MySQL Guide         | 45.99 |
| Advanced Database Concepts | 54.99 |
| Database Administration | 49.99 |
| The Perfect Index       | 42.99 |
+-------------------------+-------+

Häufige Vergleichsoperatoren sind:

  • = (gleich)
  • <> oder != (ungleich)
  • > (größer als)
  • < (kleiner als)
  • >= (größer oder gleich)
  • <= (kleiner oder gleich)

Versuchen wir ein weiteres Beispiel, um Bücher zu finden, die in einem bestimmten Jahr veröffentlicht wurden:

SELECT title, author, publication_year
FROM books
WHERE publication_year = 2023;

Verwenden von AND und OR

Wir können mehrere Bedingungen mit AND und OR kombinieren:

-- Technische Bücher, die im Jahr 2023 veröffentlicht wurden
SELECT title, genre, publication_year, price
FROM books
WHERE genre = 'Technical'
AND publication_year = 2023;

Versuchen wir OR, um Bücher zu finden, die entweder sehr neu oder sehr teuer sind:

SELECT title, publication_year, price
FROM books
WHERE publication_year = 2023
OR price >= 50;

Arbeiten mit NULL- und Boolean-Werten

Um Bücher zu finden, die nicht auf Lager sind:

SELECT title, price, in_stock
FROM books
WHERE in_stock = FALSE;

Musterabgleich mit LIKE

In diesem Schritt werden wir den Musterabgleich mit dem LIKE-Operator erkunden, der es uns ermöglicht, nach Mustern in Textdaten zu suchen. Dies ist besonders nützlich, wenn Sie nicht wissen, welches genaue Textstück Sie suchen.

Der LIKE-Operator verwendet zwei Sonderzeichen:

  • % steht für null oder mehrere Zeichen
  • _ steht für genau ein Zeichen

Versuchen wir einige Beispiele:

-- Bücher finden, in deren Titel "SQL" irgendwo vorkommt
SELECT title, author
FROM books
WHERE title LIKE '%SQL%';

Diese Abfrage findet alle Bücher, in deren Titel "SQL" irgendwo vorkommt. Sie sollten eine Ausgabe wie diese sehen:

+------------------+----------------+
| title            | author         |
+------------------+----------------+
| SQL for Beginners| Sarah Johnson  |
| SQL Mystery Tales| Jennifer White |
+------------------+----------------+

Versuchen wir einige weitere Musterabgleiche:

-- Bücher finden, die mit "The" beginnen
SELECT title, author
FROM books
WHERE title LIKE 'The%';
-- Bücher finden, in deren Titel "Database" vorkommt
SELECT title, author, price
FROM books
WHERE title LIKE '%Database%';

Beachten Sie, dass LIKE in MySQL standardmäßig nicht case-sensitiv (groß- und kleinschreibungsegal) ist. Wenn Sie einen case-sensitiven Abgleich benötigen, können Sie BINARY verwenden:

-- Case-sensitiver Suchvorgang
SELECT title, author
FROM books
WHERE title LIKE BINARY 'The%';

Sortieren von Ergebnissen mit ORDER BY

In diesem Schritt werden wir lernen, wie man die Abfrageergebnisse mit der ORDER BY-Klausel sortiert. Dies ermöglicht es uns, unsere Daten in einer sinnvollen Reihenfolge anzuordnen, entweder aufsteigend (ASC) oder absteigend (DESC).

Sortieren nach einer einzelnen Spalte

Beginnen wir mit dem grundlegenden Sortieren nach Preis:

-- Bücher nach Preis sortieren (standardmäßig aufsteigend)
SELECT title, price
FROM books
ORDER BY price;

Sie werden sehen, dass die Bücher vom günstigsten bis zum teuersten aufgelistet sind. Um die Reihenfolge umzukehren:

-- Bücher nach Preis in absteigender Reihenfolge sortieren
SELECT title, price
FROM books
ORDER BY price DESC;

Die Ausgabe zeigt zunächst die teuersten Bücher:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
| The Perfect Index         | 42.99 |
...
+---------------------------+-------+

Sortieren nach mehreren Spalten

Wir können nach mehreren Spalten sortieren, was nützlich ist, wenn die erste Sortierspalte doppelte Werte enthält:

-- Nach Genre und dann innerhalb jedes Genres nach Preis sortieren
SELECT title, genre, price
FROM books
ORDER BY genre, price DESC;

Sie können aufsteigende und absteigende Sortierungen kombinieren:

-- Nach Genre (aufsteigend) und Preis (absteigend) sortieren
SELECT title, genre, price
FROM books
ORDER BY genre ASC, price DESC;

Begrenzen von Ergebnissen mit LIMIT

In diesem Schritt werden wir lernen, wie man die LIMIT-Klausel verwendet, um die Anzahl der von einer Abfrage zurückgegebenen Zeilen zu beschränken. Dies ist besonders nützlich, wenn Sie mit großen Datensätzen arbeiten oder wenn Sie nur einige Beispiele sehen müssen.

Grundlegende Verwendung von LIMIT

Um nur die drei teuersten Bücher anzuzeigen:

SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3;

Sie sollten nur drei Zeilen sehen:

+---------------------------+-------+
| title                     | price |
+---------------------------+-------+
| Advanced Database Concepts| 54.99 |
| Database Administration   | 49.99 |
| The MySQL Guide           | 45.99 |
+---------------------------+-------+

Verwenden von LIMIT mit Offset

LIMIT kann zwei Zahlen annehmen: den Offset (wie viele Zeilen übersprungen werden sollen) und die Anzahl (wie viele Zeilen zurückgegeben werden sollen):

-- Die ersten drei Bücher überspringen und die nächsten drei anzeigen
SELECT title, price
FROM books
ORDER BY price DESC
LIMIT 3, 3;

Dies zeigt die viert-, fünft- und sechstteuersten Bücher.

Ein häufiger Anwendungsfall ist die Paginierung. Beispielsweise, um "Seite 2" mit fünf Elementen pro Seite anzuzeigen:

SELECT title, author, price
FROM books
ORDER BY title
LIMIT 5, 5;

Dies überspringt die ersten fünf Ergebnisse (Seite 1) und zeigt die nächsten fünf (Seite 2).

Alles zusammenführen

Setzen wir alles, was wir gelernt haben, zusammen, um eine komplexere Abfrage zu erstellen:

SELECT title, author, price
FROM books
WHERE genre = 'Technical'
AND price > 30
ORDER BY price DESC
LIMIT 3;

Diese Abfrage:

  1. Filtert technische Bücher über 30 Dollar.
  2. Sortiert sie nach Preis in absteigender Reihenfolge.
  3. Zeigt nur die drei besten Ergebnisse an.

Zusammenfassung

In diesem Lab haben wir essentielle Techniken zum Filtern und Sortieren von Daten in MySQL behandelt:

  1. Verwenden von WHERE-Klauseln mit Vergleichs- und logischen Operatoren zum Filtern von Daten
  2. Musterabgleich mit dem LIKE-Operator für Textsuchen
  3. Sortieren von Ergebnissen mit ORDER BY nach einer einzelnen oder mehreren Spalten
  4. Begrenzen von Ergebnismengen mit LIMIT und OFFSET

Diese Fähigkeiten bilden die Grundlage für eine effektive Datenabfrage und -organisation in MySQL.