Grundlegende SQL-Befehle - Die Liste der Datenbankabfragen und -anweisungen, die Sie kennen sollten
Entdecken Sie die essenziellen SQL-Befehle in unserer umfassenden Liste! Lernen Sie Datenbankabfragen und -anweisungen kennen, die Ihnen dabei helfen, effizient mit Daten umzugehen. Alles, was Sie über SQL-Befehle wissen müssen, kompakt und verständlich erklärt. Starten Sie Ihre Reise in die Welt der Datenverwaltung noch heute!
SQL steht für Structured Query Language (strukturierte Abfragesprache). SQL-Befehle sind die Anweisungen, die zur Kommunikation mit einer Datenbank verwendet werden, um Aufgaben, Funktionen und Abfragen mit Daten durchzuführen.
Mit SQL-Befehlen können Sie die Datenbank durchsuchen und andere Funktionen wie das Erstellen von Tabellen, das Hinzufügen von Daten zu Tabellen, das Ändern von Daten und das Löschen von Tabellen ausführen.
Im Folgenden finden Sie eine Liste der grundlegenden SQL-Befehle (manchmal auch Klauseln genannt), die Sie kennen sollten, wenn Sie mit SQL arbeiten.
SELECT und FROM
Der SELECT-Teil einer Abfrage bestimmt, welche Spalten der Daten in den Ergebnissen angezeigt werden sollen. Es gibt auch Optionen, die Sie anwenden können, um Daten anzuzeigen, die keine Tabellenspalten sind.
Das folgende Beispiel zeigt drei Spalten, die aus der Tabelle "student" SELECTed wurden, und eine berechnete Spalte. Die Datenbank speichert die Schüler-ID, den Vornamen und den Nachnamen des Schülers. Wir können die Spalten Vorname und Nachname kombinieren, um die berechnete Spalte FullName zu erstellen.
FROM student;
| studentID | FirstName | LastName | FullName |
+------------+--------------------+---------------+----------------------------+
| 1 | Monique | Davis | Monique Davis |
| 2 | Teri | Gutierrez | Teri Gutierrez |
| 3 | Spencer | Pautier | Spencer Pautier |
| 4 | Louis | Ramsey | Louis Ramsey |
| 5 | Alvin | Greene | Alvin Greene |
| 6 | Sophie | Freeman | Sophie Freeman |
| 7 | Edgar Frank "Ted" | Codd | Edgar Frank "Ted" Codd |
| 8 | Donald D. | Chamberlin | Donald D. Chamberlin |
| 9 | Raymond F. | Boyce | Raymond F. Boyce |
+------------+--------------------+---------------+----------------------------+
9 rows in set (0.00 sec)
CREATE TABLE
CREATE TABLE tut genau das, wonach es klingt: Es erstellt eine Tabelle in der Datenbank. Sie können den Namen der Tabelle und die Spalten angeben, die in der Tabelle enthalten sein sollen.
column_1 datatype,
column_2 datatype,
column_3 datatype
);
ALTER TABLE
ALTER TABLE ändert die Struktur einer Tabelle. So fügen Sie eine Spalte zu einer Datenbank hinzu:
ADD column_name datatype;
CHECK
Die CHECK-Beschränkung wird verwendet, um den Wertebereich zu begrenzen, der in einer Spalte platziert werden kann.
Wenn Sie eine CHECK-Beschränkung für eine einzelne Spalte definieren, sind nur bestimmte Werte für diese Spalte zulässig. Wenn Sie eine CHECK-Beschränkung für eine Tabelle definieren, kann sie die Werte in bestimmten Spalten auf der Grundlage von Werten in anderen Spalten in der Zeile einschränken.
Das folgende SQL erstellt eine CHECK-Beschränkung für die Spalte "Alter", wenn die Tabelle "Personen" erstellt wird. Die CHECK-Beschränkung stellt sicher, dass keine Person unter 18 Jahren vorhanden sein darf.
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);
Um die Benennung einer CHECK-Beschränkung zu ermöglichen und um eine CHECK-Beschränkung für mehrere Spalten zu definieren, verwenden Sie die folgende SQL-Syntax:
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
WHERE
(AND, OR, IN, BETWEEN, und LIKE)
Die WHERE-Klausel wird verwendet, um die Anzahl der zurückgegebenen Zeilen zu begrenzen.
Als Beispiel zeigen wir Ihnen zunächst eine SELECT-Anweisung und die Ergebnisse ohne WHERE-Anweisung. Dann fügen wir eine WHERE-Anweisung hinzu, die alle fünf oben genannten Qualifier verwendet.
| studentID | FullName | sat_score | rcd_updated |
+-----------+---------------------------+-----------+-------------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 3 | Spencer Pautier | 1000 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 7 | Edgar Frank "Ted" Codd | 2400 | 2017-08-16 15:35:33 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
+-----------+---------------------------+-----------+-------------------------+
9 rows in set (0.00 sec)
Jetzt wiederholen wir die SELECT-Abfrage, schränken aber die zurückgegebenen Zeilen mit einer WHERE-Anweisung ein.
FROM student
WHERE (studentID BETWEEN 1 AND 5 OR studentID = 8)
AND
sat_score NOT IN (1000, 1400);
| studentID | FullName | sat_score | rcd_updated |
+------------+--------------------------+-----------+-------------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
+------------+--------------------------+-----------+-------------------------+
5 rows in set (0.00 sec)
UPDATE
Um einen Datensatz in einer Tabelle zu aktualisieren, verwenden Sie die UPDATE-Anweisung.
Verwenden Sie die WHERE-Bedingung, um anzugeben, welche Datensätze Sie aktualisieren möchten. Es ist möglich, eine oder mehrere Spalten auf einmal zu aktualisieren. Die Syntax lautet:
SET column1 = value1,
column2 = value2, ...
WHERE condition;
Hier ein Beispiel für die Aktualisierung des Namens des Datensatzes mit der Id 4:
SET Name = “Elton John”
WHERE Id = 4;
Sie können auch Spalten in einer Tabelle aktualisieren, indem Sie Werte aus anderen Tabellen verwenden. Verwenden Sie die JOIN-Klausel, um Daten aus mehreren Tabellen zu erhalten. Die Syntax lautet:
SET table_name1.column1 = table_name2.columnA
table_name1.column2 = table_name2.columnB
FROM table_name1
JOIN table_name2 ON table_name1.ForeignKey = table_name2.Key
Hier ist ein Beispiel für die Aktualisierung des Managers aller Datensätze:
SET Person.Manager = Department.Manager
FROM Person
JOIN Department ON Person.DepartmentID = Department.ID
GRUPPE BY
GROUP BY ermöglicht es Ihnen, Zeilen zu kombinieren und Daten zu aggregieren.
Hier ist die Syntax von GROUP BY:
FROM table_name
GROUP BY column_name;
HAVING
Mit HAVING können Sie die durch die GROUP BY-Klausel aggregierten Daten filtern, so dass der Benutzer eine begrenzte Anzahl von Datensätzen zur Ansicht erhält.
Hier ist die Syntax von HAVING:
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > value;
AVG()
"Average" wird verwendet, um den Durchschnitt einer numerischen Spalte aus der Menge der von einer SQL-Anweisung zurückgegebenen Zeilen zu berechnen.
Hier ist die Syntax für die Verwendung der Funktion:
FROM table1
GROUP BY groupingField
Hier ist ein Beispiel mit der Tabelle Schüler:
FROM student
GROUP BY studentID, FullName;
AS
Mit AS können Sie eine Spalte oder Tabelle unter Verwendung eines Alias umbenennen.
Das Ergebnis ist die unten stehende Ausgabe.
| AgeOfServer | NonWarrantyPeriod |
+---------------+--------------------------+
| 36 | 24 |
| 24 | 12 |
| 61 | 49 |
| 12 | 0 |
| 6 | -6 |
| 0 | -12 |
| 36 | 24 |
| 36 | 24 |
| 24 | 12 |
+---------------+--------------------------+
Sie können AS auch verwenden, um einer Tabelle einen Namen zuzuweisen, damit sie in Joins leichter referenziert werden kann.
JOIN order_table AS ord ON cust.cust_number = ord.cust_number
Das Ergebnis ist die folgende Ausgabe.
| product | ord_number | price | cust_name | cust_number |
+--------------+--------------+-----------+-----------------+----------------+
| RAM | 12345 | 124 | John Smith | 20 |
| CPU | 12346 | 212 | Mia X | 22 |
| USB | 12347 | 49 | Elise Beth | 21 |
| Cable | 12348 | 0 | Paul Fort | 19 |
| Mouse | 12349 | 66 | Nats Back | 15 |
| Laptop | 12350 | 612 | Mel S | 36 |
| Keyboard | 12351 | 24 | George Z | 95 |
| Keyboard | 12352 | 24 | Ally B | 55 |
| Air | 12353 | 12 | Maria Trust | 11 |
+--------------+--------------+-----------+-----------------+----------------+
ORDER BY
ORDER BY gibt uns die Möglichkeit, die Ergebnismenge nach einem oder mehreren der Elemente im SELECT-Abschnitt zu sortieren. Hier ist ein SQL, das die Schüler nach FullName in absteigender Reihenfolge sortiert. Die Standardsortierreihenfolge ist aufsteigend (ASC), aber um in der umgekehrten Reihenfolge (absteigend) zu sortieren, verwenden Sie DESC.
FROM student
ORDER BY FullName DESC;
COUNT
COUNT zählt die Anzahl der Zeilen und gibt diese Anzahl als Spalte in der Ergebnismenge zurück.
Hier einige Beispiele für die Verwendung von COUNT:
- Zählen aller Zeilen in einer Tabelle (keine Gruppierung nach erforderlich)
- Zählen der Summen von Teilmengen von Daten (erfordert einen Abschnitt "Gruppieren nach" in der Anweisung)
Diese SQL-Anweisung liefert eine Zählung aller Zeilen. Beachten Sie, dass Sie der resultierenden COUNT-Spalte mit "AS" einen Namen geben können.
DELETE
DELETE wird verwendet, um einen Datensatz in einer Tabelle zu löschen.
Seien Sie vorsichtig. Sie können alle Datensätze der Tabelle oder nur einige wenige löschen. Verwenden Sie die WHERE-Bedingung, um anzugeben, welche Datensätze Sie löschen wollen. Die Syntax lautet:
WHERE condition;
Hier ein Beispiel für das Löschen des Datensatzes mit der Id 3 aus der Tabelle Person:
WHERE Id = 3;
INNER JOIN
JOIN, auch Inner Join genannt, wählt Datensätze aus, deren Werte in zwei Tabellen übereinstimmen.
LEFT JOIN
Ein LEFT JOIN gibt alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurück. Zeilen in der linken Tabelle werden auch dann zurückgegeben, wenn es in der rechten Tabelle keine Übereinstimmung gab. Die Zeilen aus der linken Tabelle, die in der rechten Tabelle nicht übereinstimmen, haben für die Werte der rechten Tabelle den Wert Null.
RIGHT JOIN
Ein RIGHT JOIN gibt alle Zeilen aus der rechten Tabelle und die übereinstimmenden Zeilen aus der linken Tabelle zurück. Im Gegensatz zu einer linken Verknüpfung werden hier alle Zeilen aus der rechten Tabelle zurückgegeben, auch wenn es keine Übereinstimmung in der linken Tabelle gibt. Zeilen in der rechten Tabelle, die keine Übereinstimmung in der linken Tabelle haben, haben Nullwerte für Spalten der linken Tabelle.
FULL OUTER JOIN
Ein FULL OUTER JOIN gibt alle Zeilen zurück, für die es in einer der Tabellen eine Übereinstimmung gibt. Wenn es also Zeilen in der linken Tabelle gibt, die keine Übereinstimmung in der rechten Tabelle haben, werden diese einbezogen. Wenn es Zeilen in der rechten Tabelle gibt, die keine Übereinstimmungen in der linken Tabelle haben, werden diese ebenfalls einbezogen.
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName
INSERT
INSERT ist eine Methode, um Daten in eine Tabelle einzufügen.
VALUES (value_1, 'value_2', value_3);
LIKE
LIKE wird in einem WHERE oder HAVING (als Teil des GROUP BY) verwendet, um die ausgewählten Zeilen auf die Elemente zu beschränken, wenn eine Spalte ein bestimmtes Zeichenmuster enthält.
Mit dieser SQL werden Schüler ausgewählt, deren FullName mit "Monique" beginnt oder mit "Greene" endet.
FROM student
WHERE
FullName LIKE 'Monique%' OR
FullName LIKE '%Greene';
| studentID | FullName | sat_score | rcd_updated |
+-----------+------------------+-------------+-------------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
+-----------+------------------+-------------+-------------------------+
2 rows in set (0.00 sec)
Sie können NOT vor LIKE setzen, um die Zeilen mit dem Zeichenfolgenmuster auszuschließen, anstatt sie auszuwählen. Diese SQL schließt Datensätze aus, die "cer Pau" und "Ted" in der Spalte FullName enthalten.
FROM student
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
| studentID | FullName | sat_score | rcd_updated |
+-----------+-------------------------+------------+--------------------------+
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
+-----------+-------------------------+-----------+----------------------------+
7 rows in set (0.00 sec)