Database
 sql >> Datenbank >  >> RDS >> Database

SQL SELECT für Anfänger

Die SELECT -Anweisung ist ohne Zweifel die am häufigsten verwendete Anweisung in SQL.

Die SELECT -Anweisung wird zum Abrufen von Daten aus der Datenbank verwendet. Sie können angeben, welche Zeilen Sie zurückgeben möchten und welche Spalten.

Beispiel

Hier ist ein Beispiel, um den SELECT zu demonstrieren Aussage.

SELECT * 
FROM Pets;

Ergebnis:

+---------+-------------+-----------+-----------+------------+
| PetId   | PetTypeId   | OwnerId   | PetName   | DOB        |
|---------+-------------+-----------+-----------+------------|
| 1       | 2           | 3         | Fluffy    | 2020-11-20 |
| 2       | 3           | 3         | Fetch     | 2019-08-16 |
| 3       | 2           | 2         | Scratch   | 2018-10-01 |
| 4       | 3           | 3         | Wag       | 2020-03-15 |
| 5       | 1           | 1         | Tweet     | 2020-11-28 |
| 6       | 3           | 4         | Fluffy    | 2020-09-17 |
| 7       | 3           | 2         | Bark      | NULL       |
| 8       | 2           | 4         | Meow      | NULL       |
+---------+-------------+-----------+-----------+------------+

In diesem Beispiel haben wir das Sternchen (* ) Platzhalter, um alle Spalten zurückzugeben. Wir haben auch den FROM verwendet -Klausel, um anzugeben, aus welcher Tabelle Daten abgerufen werden sollen.

Diese Abfrage gibt also alle Zeilen und alle Spalten aus Pets zurück Tabelle.

Spalten angeben

Sie können die Spalten angeben, die Sie zurückgeben möchten.

Ersetzen Sie dazu das Sternchen als Platzhalter durch die Spaltennamen, die jeweils durch ein Komma getrennt sind, in der Reihenfolge, in der sie zurückgegeben werden sollen.

SELECT PetId, PetName, DOB 
FROM Pets;

Ergebnis:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 4       | Wag       | 2020-03-15 |
| 5       | Tweet     | 2020-11-28 |
| 6       | Fluffy    | 2020-09-17 |
| 7       | Bark      | NULL       |
| 8       | Meow      | NULL       |
+---------+-----------+------------+

Es wird im Allgemeinen als bewährte Vorgehensweise angesehen, dies auf diese Weise zu tun und nur die Spalten zurückzugeben, die Sie tatsächlich benötigen. Die Verwendung des Sternchen-Platzhalters zum Zurückgeben aller Spalten kann sich negativ auf die Leistung auswirken, insbesondere in größeren Datenbanken.

Spezifizieren Sie die Zeilen

Es gibt viele Möglichkeiten, die Ergebnisse auf die Zeilen zu filtern, die Sie interessieren. Die gebräuchlichste Methode ist die Verwendung von WHERE Klausel. Mit dieser Klausel können Sie eine Bedingung angeben, die eine Zeile erfüllen muss, um sich zu qualifizieren.

Hier ist ein Beispiel zur Veranschaulichung.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy';

Ergebnis:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

In unserem Fall gab es zwei Zeilen, die unsere Suchbedingung erfüllten.

Unsere Suchbedingung verwendet den Gleichheitsoperator (= ), um anzugeben, dass der Wert von PetName Spalte muss mit dem angegebenen Wert übereinstimmen (Fluffy ) genau.

Es gibt viele andere Operatoren, die Sie in Ihren Suchbedingungen verwenden können. Zum Beispiel könnten Sie den LIKE verwenden Operator, um Haustiere zurückzugeben, deren Name mit F beginnt oder Fluff oder Wasauchimmer.

Sie können dem WHERE weitere Bedingungen hinzufügen -Klausel, indem Sie Operatoren wie AND verwenden und OR Betreiber.

Hier ist ein Beispiel.

SELECT PetId, PetName, DOB 
FROM Pets
WHERE PetName = 'Fluffy'
OR DOB < '2020-01-01';

Ergebnis:

+---------+-----------+------------+
| PetId   | PetName   | DOB        |
|---------+-----------+------------|
| 1       | Fluffy    | 2020-11-20 |
| 2       | Fetch     | 2019-08-16 |
| 3       | Scratch   | 2018-10-01 |
| 6       | Fluffy    | 2020-09-17 |
+---------+-----------+------------+

In diesem Beispiel haben wir alle Zeilen zurückgegeben, in denen der Name des Haustiers Fluffy oder ist wo das Geburtsdatum des Haustieres (angegeben im DOB Spalte) ist kleiner als ein bestimmtes Datum. Wir haben den Kleiner-als-Operator (< ), um das anzugeben.

Nicht-Tabellendaten zurückgeben

Die SELECT -Anweisung kann auch verwendet werden, um Daten zurückzugeben, die nicht in einer Tabelle gespeichert sind. Zum Beispiel ist es vollkommen legal, dies zu tun:

SELECT 'Hey there!';

Ergebnis:

+--------------------+
| (No column name)   |
|--------------------|
| Hey there!         |
+--------------------+

Beachten Sie, dass die Spalte dabei keinen Namen hat. Wir könnten einen Alias ​​verwenden, um dem resultierenden Feld einen Namen zu geben.

Hier sind ein paar weitere Beispiele für die Auswahl von Nicht-Tabellendaten und die Bereitstellung eines Alias ​​für jedes zurückgegebene Feld:

SELECT 
    2 + 3 AS "2 + 3",
    'Fluffy' + ' ' + 'Smith' AS FullName,
    SYSDATETIME() AS "Date/time";

Ergebnis:

+---------+--------------+-----------------------------+
| 2 + 3   | FullName     | Date/time                   |
|---------+--------------+-----------------------------|
| 5       | Fluffy Smith | 2020-12-04 23:58:55.8483734 |
+---------+--------------+-----------------------------+

Hier ist ein kurzer Überblick:

  • In der ersten Spalte wurden einfach zwei Zahlen hinzugefügt.
  • Die zweite Spalte verkettete drei Zeichenfolgen (einschließlich eines Leerzeichens). Sie können bei Bedarf auch Zeichenfolgen mit Zahlen verketten.
  • Die dritte Spalte verwendete SYSDATETIME() Funktion, um das aktuelle Datum und die Uhrzeit zurückzugeben. Diese Funktion ist in SQL Server verfügbar. Andere DBMSs haben ihre eigenen Datums- und Zeitfunktionen. Siehe SQLite-Datums-/Zeitfunktionen, SQL Server-Datums-/Zeitfunktionen und PostgreSQL-Datums-/Zeitfunktionen für eine Liste der in diesen DBMS verfügbaren Datums- und Zeitfunktionen.

Unterabfragen

Es ist möglich, mehrere SELECT zu haben Anweisungen in einer einzigen Abfrage. Wir können dies mit einer Unterabfrage tun.

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );

Ergebnis:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 1           | Bird      |
| 2           | Cat       |
| 3           | Dog       |
+-------------+-----------+

In diesem Beispiel haben wir den IN verwendet -Operator zur Angabe einer Unterabfrage. Diese Unterabfrage wählte Daten aus einer anderen Tabelle und den IN aus Operator hat es auf die äußere Abfrage zurückgeführt.

Ordnen der Ergebnisse

Sie können den ORDER BY verwenden -Klausel zum Sortieren der Ergebnisse.

Beispielsweise könnten wir die vorherigen Ergebnisse nach PetTypeId sortieren Spalte in absteigender Reihenfolge:

SELECT 
    PetTypeId,
    PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets )
ORDER BY PetTypeId DESC;

Ergebnis:

+-------------+-----------+
| PetTypeId   | PetType   |
|-------------+-----------|
| 3           | Dog       |
| 2           | Cat       |
| 1           | Bird      |
+-------------+-----------+

Siehe SQL ORDER BY Abschnitt für Anfänger für weitere Beispiele und eine detaillierte Erklärung.

Erweitert SELECT Aussagen

Die SELECT -Anweisung ist eine sehr einfache Anweisung, die jedoch zum Erstellen sehr komplexer Abfragen verwendet werden kann.

Hier ist eine Abfrage, die etwas komplexer ist als die vorherigen.

SELECT 
    PetTypes.PetType,
    COUNT(Pets.PetTypeId) AS Count
FROM Pets 
LEFT JOIN PetTypes 
ON Pets.PetTypeId = PetTypes.PetTypeId
GROUP BY PetTypes.PetType
ORDER BY Count DESC;

Ergebnis:

+-----------+---------+
| PetType   | Count   |
|-----------+---------|
| Dog       | 4       |
| Cat       | 3       |
| Bird      | 1       |
+-----------+---------+

In der Welt der SQL-Abfragen ist dies immer noch ziemlich einfach, enthält jedoch viele der Elemente, die häufig in komplexeren Abfragen vorkommen.

Diese Abfrage verwendet beispielsweise einen Join, um Daten aus mehreren Tabellen abzurufen. Es verwendet auch den GROUP BY -Klausel, um die Zeilen in Gruppen zu unterteilen.

Siehe SQL GROUP BY Klausel für Anfänger für weitere Beispiele von GROUP BY Klausel.

Sehen Sie sich das SQL Joins Tutorial an, um zu sehen, wie Sie Daten aus mehreren Tabellen abrufen und sie als eine Ergebnismenge zurückgeben.

Der SELECT INTO Erklärung

Einige DBMS unterstützen den SELECT INTO Erklärung. Dies unterscheidet sich geringfügig von den vorherigen Beispielen, da es sich auf die Daten in der Datenbank auswirkt.

Der SELECT INTO -Anweisung erstellt eine neue Tabelle und fügt Daten aus einer anderen Tabelle ein.

Im Grunde geht das so:

SELECT * INTO Table2
FROM Table1;

In diesem Beispiel erstellen wir eine neue Tabelle namens Table2 , und fügen Sie alle Daten aus Table1 ein hinein. Table2 hat die gleiche Definition wie Table1 .

Siehe SQL SELECT INTO Statement für weitere Beispiele.

Wie ich bereits angedeutet habe, unterstützen nicht alle DBMS diese Aussage. Wenn Ihr DBMS den SELECT INTO nicht unterstützt -Anweisung, versuchen Sie es mit CREATE TABLE ... AS SELECT Aussage statt.

Diese Anweisungen erstellen als Teil ihrer Operation eine neue Tabelle. Um Daten in eine bereits vorhandene Tabelle einzufügen, versuchen Sie es mit INSERT INTO ... SELECT Aussage statt.