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

Einführung in SQL-Befehle

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 , und DELETE 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);
Hinweis

Sie 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 Tabellen Student und CourseTaken verbunden sind, um die erforderlichen Informationen abzurufen. Die Spaltennamen im SELECT und WHERE Klauseln sind der Übersichtlichkeit halber ihre Tabellennamen vorangestellt. Allerdings im Fall der SSNumber -Spalte müssen wir die entsprechenden Tabellennamenpräfixe angeben, da beide Tabellen denselben Spaltennamen verwenden. Der FROM -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.