In der heutigen Welt der zunehmenden Digitalisierung, Big Data und Cloud Computing gehört das Datenmanagement zu den wichtigsten Fähigkeiten, die ein Softwareentwickler haben kann. Zu diesem Zweck ist SQL eines der leistungsstärksten Datenbankwerkzeuge.
SQL (Structured Query Language) ist die Standardprogrammiersprache, die verwendet wird, um Datenstrukturobjekte zu manipulieren. Sie arbeiten mit Daten, die in einem relationalen Datenbankverwaltungssystem (RDBMS) enthalten sind. Einige bekannte RDBMS sind MySQL und PostgreSQL.
In diesem Handbuch lernen Sie die Teilmengen der SQL-Sprache kennen und erfahren, wie Sie einige grundlegende SQL-Befehle wie SELECT
verwenden , INSERT
, UPDATE
, und DELETE
.
Subsets von SQL
Die folgende Liste enthält die verschiedenen Sprachuntergruppen verschiedener SQL-Befehle. Jede Teilmenge hat ihre eigene Funktion und ihren eigenen Zweck.
- Datendefinitionssprache (DDL):Damit können Sie Datenbankschemadefinitionen (nämlich Tabellen und Indizes) erstellen, löschen und aktualisieren, ohne die Daten in den Datenbanktabellen tatsächlich zu manipulieren.
- Datenabfragesprache (DQL):DQL wird verwendet, um Daten aus der Datenbank mit
SELECT
abzurufen Aussage. - Datenmanipulationssprache (DML):Diese Untersprache ermöglicht die Datenmanipulation in der Datenbank mit
INSERT
,UPDATE
, undDELETE
Aussagen.
Dieser Leitfaden verwendet eine Beispieldatenbank für eine Schule, um die SQL-Befehle für jede der oben aufgeführten Teilmengen weiter zu demonstrieren. Die Schuldatenbank enthält mehrere Tabellen für Schüler, Kurse, Noten usw. Die Definition des Student
Tabelle enthält Spalten für die SSNumber
des Schülers , Firstname
, und Lastname
, und die Definition von CourseTaken
Tabelle enthält Spalten für SSNumber
, CourseId
, NumericGrade
und YearTaken
.
Das Beispiel geht davon aus, dass es drei Schüler in der Schule gibt, von denen jeder zwei Kurse abgeschlossen hat. Die Beispieldaten sind in der folgenden Tabelle aufgeführt:
SSNNummer | Nachname | Vorname | Kurs-ID | Numerischer Grad | YearTaken |
---|---|---|---|---|---|
111111111 | Smith | Johannes | CSC101 | 98 | 2021 |
111111111 | Smith | Johannes | ENG101 | 95 | 2022 |
222222222 | Jones | Maria | CSC101 | 100 | 2022 |
222222222 | Jones | Maria | EEE101 | 75 | 2022 |
333333333 | Hansen | Robert | POL101 | 92 | 2021 |
333333333 | Hansen | Robert | SOC103 | 84 | 2022 |
Erstellen, ändern und löschen Sie Tabellen mit SQL-Befehlen
Verwenden Sie in der Befehlszeile CREATE TABLE
Befehl gefolgt vom Namen der Tabelle und den Tabellendaten. Der folgende Befehl erstellt den Student
Tabelle.
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
Die Klammer umschließt die Tabellendaten, beginnend mit einer Spalte, die die Daten jeder Zeile bezeichnet. Die nächste Spalte gibt den Datentyp an, den diese Zeile enthält. CHAR
gibt einen Zeichenfolgedatentyp mit fester Länge und VARCHAR
an gibt einen Zeichenfolgedatentyp mit variabler Länge an. In der letzten Spalte der NOT NULL
Attribut stellt sicher, dass ein Datensatz nicht zur Tabelle hinzugefügt werden kann, wenn einer der NOT NULL
Spalten sind keine Daten zugeordnet.
Hinweis Die CREATE TABLE
-Anweisung wird durch ein abschließendes Semikolon (;) getrennt, obwohl es möglich ist, dass einige kommerzielle relationale Datenbanksysteme dieses Trennzeichen nicht benötigen.
Hinweis Sofern nicht anders erwähnt, funktionieren alle Datenbankbefehle, die in diesem Handbuch gezeigt werden, sowohl auf MySQL als auch gut und PostgreSQL .
Um den CourseTaken
zu erstellen Tabelle, führen Sie den folgenden Befehl aus:
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
Das YearTaken
Spalte ist absichtlich nicht in CourseTaken
enthalten Tabelle, um die Verwendung von ALTER TABLE
zu demonstrieren Befehl. Zum Hinzufügen des YearTaken
Spalte in CourseTaken
Tabelle müssen Sie CourseTaken
nicht löschen Tisch ganz. Stattdessen können Sie die DDL ALTER TABLE
verwenden Befehl. Der folgende Befehl ändert den CourseTaken
Tabelle, indem Sie die fehlende Spalte zur Tabelle hinzufügen.
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
Der obige Befehl folgt einer ähnlichen Syntax wie zuvor. Es erfordert den Tabellennamen sowie drei Argumente:Zeilenname, Zeilendatentyp und NOT NULL
Attribut. Wenn Sie den CourseTaken
löschen möchten Tabelle vollständig, geben Sie die DDL DROP TABLE
aus Befehl gefolgt vom Tabellennamen.
DROP TABLE CourseTaken;
Achtung Das Löschen einer Tabelle löscht alle Daten in der Tabelle.
Einfügen von Daten in eine Tabelle in SQL
Um die Daten in die Tabelle einzufügen, verwenden Sie den SQL INSERT INTO
Erklärung. Um diesen Befehl aufzurufen, geben Sie den Tabellennamen und die Liste der Zeilennamen (in Klammern) an, in die Sie die Daten einfügen möchten. Darauf folgen die VALUES
Schlüsselwort und die eigentlichen Werte (in Klammern), die Sie einfügen möchten. Die Werte werden in der Reihenfolge ihres Aufrufs in die Zeilen eingefügt.
Hinweis
- SQL-Befehle können zeilenübergreifend aufgeteilt werden. Das Ende des SQL-Befehls wird durch ein Semikolon getrennt (
;
).- Die Zeichendaten werden durch einen öffnenden und schließenden Apostroph (
‘
), numerische Daten hingegen nicht.
Das folgende INSERT
Befehle fügen drei Zeilen in den Student
ein Tisch. Diese Befehle verwenden mehrere INSERT
Aussagen.
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
Auf ähnliche Weise können Sie auch mehrere Zeilen in einer einzigen SQL-Abfrage in die Tabelle einfügen, wie unten gezeigt:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
HinweisSie können den
INSERT INTO
verwenden Befehl ähnlich in PostgreSQL Zeilen zur Tabelle hinzufügen. Stellen Sie sicher, dass die Werte mit der Reihenfolge der Spalten in der Tabellendefinition übereinstimmen.INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Daten aus einer Tabelle löschen
Um Daten aus einer Tabelle zu löschen, verwenden Sie den SQL-Befehl DELETE FROM
Erklärung. Verwenden Sie das WHERE
-Klausel, um die Bedingung anzugeben, und wenn es mehr als eine Bedingung gibt, verwenden Sie AND
-Klausel zusammen mit WHERE
.
Beispielsweise löscht der folgende Befehl einen Datensatz aus CourseTaken
Tabelle mit SSNumber 333333333
und Kurs-ID POL101
.
Achtung Wenn Sie WHERE
weglassen -Klausel werden alle Datensätze in der Tabelle gelöscht.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
SQL-Befehl zum Aktualisieren von Daten in einer Tabelle
Um den vorhandenen Datensatz in einer Tabelle zu aktualisieren, verwenden Sie den SQL-Befehl UPDATE
Befehl. Das SET
-Klausel wird verwendet, um einen neuen Wert für eine bestimmte Spalte und das WHERE
festzulegen (zu aktualisieren). -Klausel wird verwendet, um die ausgewählten Zeilen zu aktualisieren.
Beispielsweise aktualisiert der folgende Befehl den NumericGrade
Spalte des CourseTaken
Tabelle für Datensätze mit SSNumber 222222222
und Kurs-ID EEE101
.
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
SQL-Befehl zum Abrufen von Daten aus einer Tabelle
Die wahre Stärke relationaler Datenbanksysteme liegt in ihrer Fähigkeit, Informationen in einem Mehrtabellenschema über SQL SELECT
abzurufen Befehl und die Möglichkeit, Tabellen über gemeinsame Schlüssel zu verknüpfen. Obwohl diese Einführung die Erstellung von Schlüsseln und Indizes unter Verwendung dieser Schlüssel nicht untersucht, verwendet sie die SSNumber
Spalte jeder Tabelle als Vehikel (Schlüssel), um die Tabellen in Beziehung zu setzen (oder zu verbinden), um Informationen zu generieren. Die folgenden Beispiele zeigen verschiedene Anwendungsfälle für die Verwendung von SQL SELECT
Befehl über die Befehlszeile.
Beispiel 1: Zum Abrufen der Liste aller Schüler der Schule.
SELECT * from Student;
Ausgabe:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Beispiel 2: Zum Abrufen der Liste aller Schüler und Kurse, an denen sie teilgenommen haben.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Ausgabe:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Hinweis Im obigen Befehl sind die beiden TabellenStudent
undCourseTaken
verbunden sind, um die erforderlichen Informationen abzurufen. Die Spaltennamen imSELECT
undWHERE
Klauseln sind der Übersichtlichkeit halber ihre Tabellennamen vorangestellt. Allerdings im Fall derSSNumber
-Spalte müssen wir die entsprechenden Tabellennamenpräfixe angeben, da beide Tabellen denselben Spaltennamen verwenden. DerFROM
-Klausel gibt die Tabellen an, die in dieser Abfrage verwendet werden.
Beispiel 3: Rufen Sie die Liste der Schüler mit CourseId ab CSC101
und das Jahr, in dem sie an diesem Kurs teilgenommen haben.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Ausgabe:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Beispiel 4: Rufen Sie die Liste der Studentennamen, besuchten Kurse und erhaltenen Noten für diejenigen ab, die Kursnoten über 90
hatten .
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Ausgabe:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Hinweis Das AND
-Klausel im obigen Befehl können Sie die Ergebnisse nach einem bedingten Notentest filtern.
Schlussfolgerung
Dieses Handbuch zu SQL-Befehlen ist eine Einführung in die Erstellung von Datenbankschemata und die Bearbeitung von Daten in diesen Datenbanken. Obwohl die hier vorgestellten Konzepte in Bezug auf die Nutzung relationaler Datenbanksysteme nur an der Oberfläche kratzen, sind sie ein guter Ausgangspunkt für grundlegende und wesentliche Befehle und Konzepte.