Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfragen

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');