Bisher haben wir eine Datenbank erstellt, zwei Tabellen hinzugefügt und Daten in beide Tabellen eingefügt. Jetzt werden wir uns ansehen, wie wir diese Daten abrufen können. Aber nicht nur abrufen die Daten, sondern abzufragen die Datenbank dafür.
SQL steht für Structured Query Language . Es ist die Abfrage Bit, das SQL so mächtig macht. SQL ist eine Sprache, mit der Sie Abfragen ausführen können gegen Ihre Datenbank. Es ermöglicht Ihnen Abfragen die Datenbank für die gewünschten Daten.
Die SQL SELECT Erklärung
Wenn es um die Abfrage Ihrer MySQL-Datenbank geht, ist die SQL SELECT Aussage macht es möglich. Dies ist wahrscheinlich Ihre am häufigsten verwendete SQL-Anweisung bei der Arbeit mit MySQL. Die SELECT -Anweisung können Sie MySQL genau beschreiben, welche Daten abgerufen werden sollen.
Betrachten Sie die folgende SQL-Anweisung:
SELECT * FROM Fruit;
Hier ist das Ergebnis:
Dies ist das SELECT Aussage in ihrer einfachsten Form. Die obige SQL-Anweisung ruft alle Datensätze aus
Fruit
ab Tabelle.
Das Sternchen (* ) weist MySQL an, alle Spalten zurückzugeben. Das spart uns Zeit und Mühe. Ohne dies müssten wir die Namen aller Spalten schreiben, die wir zurückgeben möchten.
Allerdings können Sie MySQL auch anweisen, nur die Spalten zurückzugeben, die Sie zurückgeben möchten. Benennen Sie dazu nur die Spalten, die Sie zurückgegeben haben möchten. So:
SELECT FruitId, FruitName FROM Fruit;
Hier ist das Ergebnis:
Die obige SQL-Anweisung wählt die FruitId aus und Fruchtname Spalten aus Fruit Tabelle.
Dadurch kann Unordnung reduziert werden, sodass Sie nur die Spalten sehen, die Sie interessieren. Es kann auch die Leistung steigern, da MySQL (und jede von Ihnen verwendete Anwendung) keine wertvollen Ressourcen verwenden muss, um unnötige Daten zurückzugeben.
Auch diese Abfrage ruft alle ab Datensätze aus der Tabelle — MySQL gibt alle Datensätze zurück, sofern nicht anders angegeben.
Das WHERE Klausel
Sie können das WHERE hinzufügen -Klausel, um die Ergebnismenge auf nur die Datensätze einzugrenzen, an denen Sie interessiert sind. So:
SELECT * FROM Fruit WHERE UnitId = 1;
Ergebnis:
Die obige Abfrage gibt alle Datensätze aus
Fruit
zurück Tabelle, in der die
UnitId
Spalte hat den Wert 1 .
Unterabfragen – Verschachteltes SELECT Aussagen
Was wäre, wenn wir die
UnitId
nicht kennen würden ? Was wäre, wenn wir nur nach diesen Datensätzen mit dem Einheitsnamen Piece suchen müssten? ?
Leicht! Wir könnten das obige Beispiel umschreiben, um ein verschachteltes SELECT zu verwenden -Anweisung (auch bekannt als Unterabfrage ), die eine andere Tabelle abfragt (die
Units
Tisch). Dadurch können wir den tatsächlichen Namen der Einheit verwenden (anstelle seiner ID), da die zweite Tabelle diese im UnitName enthält Feld:
SELECT * FROM Fruit
WHERE UnitId =
(SELECT UnitId
FROM Units
WHERE UnitName = 'Piece'); Ergebnis:
Hier verwenden wir ein verschachteltes SELECT Anweisung (also ein SELECT -Anweisung innerhalb eines SELECT -Anweisung), um die
Units
abzufragen Tabelle für die
UnitId
des Datensatzes, der Piece enthält als sein
UnitName
Wert. Wir können dies tun, weil
Fruit.UnitId
Spalte ist ein Fremdschlüssel zu
Units.UnitId
Säule.
Hier sind weitere Beispiele für Unterabfragen, falls Sie interessiert sind.
Einen SQL-JOIN verwenden
Wenn wir noch einen Schritt weiter gehen, könnten wir unser verschachteltes SELECT umschreiben -Anweisung in einen INNER JOIN .
In SQL ein JOIN ermöglicht es Ihnen, mehrere Tabellen abzufragen, die Daten gemeinsam nutzen. In unserem Fall teilen sich beide Tabellen die UnitId man könnte also sagen, dass sie durch dieses Feld "verbunden" sind.
Es gibt verschiedene Arten von Joins in SQL, wir interessieren uns jedoch hauptsächlich für den INNER JOIN vorerst.
Der INNER JOIN Syntax sieht so aus:
SELECT * FROM table_name_1 INNER JOIN table_name_2 ON table_name_1.column_name = table_name_2.column_name
Wir könnten also unsere Unterabfrage aus dem vorherigen Beispiel wie folgt umschreiben:
SELECT Fruit.* FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId WHERE Units.UnitName = 'Piece';
Ergebnis:
Wir haben Fruit.* angegeben statt nur * weil wir nur alle Spalten von
Fruit
zurückgeben wollten Tisch. Wenn wir * verwendet hätten , hätte die Abfrage alle Spalten aus beiden Tabellen zurückgegeben.
Sehen Sie sich auch den LEFT JOIN an und RIGHT JOIN um zu sehen, wie Sie je nach Join-Typ unterschiedliche Daten erhalten.
Unterabfrage vs. JOIN ?
Jetzt, da Sie zwei Methoden zum Erzielen des gleichen Ergebnisses gesehen haben, fragen Sie sich wahrscheinlich, welche besser ist?
Unterabfragen sind tendenziell besser lesbar (und vielleicht leichter zu verstehen), was Anfängern das Verständnis erleichtern kann.
Viele SQL-Programmierer finden jedoch JOIN ist effizienter und leistungsfähiger. Wenn bei Ihren Abfragen oder einer Anwendung Leistungsprobleme auftreten, versuchen Sie, alle Unterabfragen in JOIN umzuwandeln s oder umgekehrt (in einigen Fällen könnte eine Unterabfrage eine bessere Leistung erbringen).
Außerdem kann es Fälle geben, in denen eine Unterabfrage Ihre einzige Option ist, daher ist dies ebenfalls eine Überlegung.
Weitere Operatoren
Unsere bisherigen Abfragen enthielten alle ein Gleichheitszeichen (= ). Dies wird als Operator bezeichnet . Genauer gesagt ist es ein Vergleichsoperator wie es einen Ausdruck mit einem anderen vergleicht.
Es gibt viele weitere Operatoren, die Sie in Ihren Abfragen verwenden können. Diese können sehr hilfreich sein, um die Ergebnismenge auf die Datensätze einzugrenzen, die Sie benötigen. Es ist nicht ungewöhnlich, dass eine Datenbank Millionen von Datensätzen enthält. Selbst wenn Sie nur Tausende von Datensätzen haben, wäre der Versuch, einen Datensatz (oder auch nur eine Handvoll) unter Tausenden zu finden, eine sehr beängstigende Aufgabe, wenn Ihnen diese Operatoren nicht zur Verfügung stünden.
Hier sind einige der häufiger verwendeten SQL-Operatoren.
Der > Betreiber
Sie können den > verwenden Operator, um Daten auszuwählen, die größer sind als ein bestimmter Wert.
SELECT * FROM Fruit WHERE Inventory > 10;
Der < Betreiber
Sie können den < verwenden Operator, um weniger Daten auszuwählen als ein bestimmter Wert.
SELECT * FROM Fruit WHERE Inventory < 10;
Der <> Betreiber
Sie können den <> verwenden -Operator, um Daten auszuwählen, die kleiner als und sind größer als ein bestimmter Wert.
SELECT * FROM Fruit WHERE Inventory <> 10;
Der >= Betreiber
Sie können den >= verwenden Operator zum Auswählen von Daten, die größer oder gleich einem bestimmten Wert sind.
SELECT * FROM Fruit WHERE Inventory >= 10;
Der <= Betreiber
Sie können den <= verwenden Operator zum Auswählen von Daten, die kleiner oder gleich einem bestimmten Wert sind.
SELECT * FROM Fruit WHERE Inventory <= 10;
Das AND Betreiber
Sie können ein AND hinzufügen Operator zu WHERE -Klausel, um Ihre Auswahl auf nur die Datensätze zu beschränken, die zwei Bedingungen erfüllen (oder mehr, wenn Sie mehr AND angeben Betreiber).
Hier ist ein Beispiel:
SELECT * FROM Fruit WHERE Inventory > 10 AND DateEntered > '2015-01-15';
Das OR Betreiber
Sie können ein OR verwenden Operator, um Ihre Auswahl auf mehr als ein Kriterium zu erweitern. Wie der Name schon sagt, das OR -Klausel können Sie Daten auswählen, bei denen das Kriterium entweder dieses ODER ist das. Also das AND Betreiber Grenzen Ihre Auswahl und das OR Operator erweitert es.
Hier ist ein Beispiel:
SELECT * FROM Fruit WHERE UnitId = 1 OR UnitId = 2;
Der BETWEEN Betreiber
Verwenden Sie den BETWEEN Operator, um Daten auszuwählen, die zwischen zwei gegebenen Werten liegen.
SELECT * FROM Fruit WHERE DateEntered BETWEEN '2015-01-25' AND '2015-02-25';
Das NOT Betreiber
Verwenden Sie das NOT Operator, um Daten auszuwählen, die nicht sind entspricht einer gegebenen Bedingung.
SELECT * FROM Fruit WHERE NOT (FruitName = 'Apple');