Einführung in SQL

Abgeschlossen

SQL steht für Structured Query Language und wird für die Kommunikation mit einer relationalen Datenbank verwendet. Es ist die Standardsprache für relationale Datenbankverwaltungssysteme. Mithilfe von SQL-Anweisungen werden Aufgaben wie das Aktualisieren von Daten in einer Datenbank oder das Abrufen von Daten aus einer Datenbank ausgeführt. Einige gängige Managementsysteme für relationale Datenbanken, bei denen SQL zum Einsatz kommt, sind Microsoft SQL Server, MySQL, PostgreSQL, MariaDB und Oracle.

Hinweis

SQL wurde ursprünglich 1986 vom American National Standards Institute (ANSI) und von der International Organization for Standardization (ISO) im Jahr 1987 standardisiert. Seitdem wurde der Standard mehrmals erweitert, da relationale Datenbankanbieter ihren Systemen neue Features hinzugefügt haben. Darüber hinaus enthalten die meisten Datenbankanbieter ihre eigenen proprietären Erweiterungen, die nicht Teil des Standards sind, was zu einer Vielzahl von Dialekten von SQL geführt hat.

Sie können SQL-Anweisungen wie SELECT, INSERT, UPDATE, DELETE, CREATE und DROP verwenden, um fast alles zu erreichen, was Sie mit einer Datenbank tun müssen. Obwohl diese SQL-Anweisungen Teil des SQL-Standards sind, verfügen viele Datenbankverwaltungssysteme auch über eigene proprietäre Erweiterungen, um die Besonderheiten dieses Datenbankverwaltungssystems zu verarbeiten. Diese Erweiterungen stellen Funktionen bereit, die nicht vom SQL-Standard abgedeckt werden, und umfassen Bereiche wie Sicherheitsverwaltung und Programmierbarkeit. Microsoft SQL Server und Azure-Datenbankdienste, die auf dem SQL Server-Datenbankmodul basieren, verwenden beispielsweise Transact-SQL. Diese Implementierung umfasst proprietäre Erweiterungen zum Schreiben gespeicherter Prozeduren und Trigger (Anwendungscode, der in der Datenbank gespeichert werden kann) und das Verwalten von Benutzerkonten. PostgreSQL und MySQL verfügen auch über eigene Versionen dieser Features.

Einige beliebte Dialekte von SQL umfassen:

  • Transact-SQL (T-SQL). Diese Version von SQL wird von Microsoft SQL Server- und Azure SQL-Diensten verwendet.

  • pgSQL. Dies ist der Dialekt mit Erweiterungen, die in PostgreSQL implementiert werden.

  • PL/SQL. Dies ist der Dialekt, der von Oracle verwendet wird. PL/SQL steht für Prozedursprache/SQL.

Benutzer, die speziell mit einem einzelnen Datenbanksystem arbeiten möchten, sollten die Ungenauigkeiten ihrer bevorzugten SQL-Dialekte und -Plattform erlernen.

Hinweis

Die SQL-Codebeispiele in diesem Modul basieren auf dem Transact-SQL Dialekt, sofern nicht anders angegeben. Die Syntax für andere Dialekte ist im Allgemeinen ähnlich, kann jedoch in einigen Details variieren.

SQL-Anweisungstypen

SQL-Anweisungen werden in drei haupt logische Gruppen gruppiert:

  • Data Definition Language (DDL)
  • Data Control Language (DCL)
  • Data Manipulation Language (DML, Datenbearbeitungssprache)

DDL-Anweisungen

Sie verwenden DDL-Anweisungen zum Erstellen, Ändern und Entfernen von Tabellen und anderen Objekten in einer Datenbank (Tabelle, gespeicherte Prozeduren, Ansichten usw.).

Die häufigsten DDL-Anweisungen lauten:

Erklärung BESCHREIBUNG
CREATE Erstellen Sie ein neues Objekt in der Datenbank, z. B. eine Tabelle oder eine Ansicht.
ALTER Ändern sie die Struktur eines Objekts. Ändern sie beispielsweise eine Tabelle, um eine neue Spalte hinzuzufügen.
DROP Entfernen Sie ein Objekt aus der Datenbank.
RENAME Benennen Sie ein vorhandenes Objekt um.

Warnung

Die DROP-Anweisung ist sehr leistungsfähig. Wenn Sie eine Tabelle ablegen, gehen alle Zeilen in dieser Tabelle verloren. Sofern Sie nicht über eine Sicherung verfügen, können Sie diese Daten nicht abrufen.

Im folgenden Beispiel wird eine neue Datenbanktabelle erstellt. Die Elemente zwischen den Klammern geben die Details jeder Spalte an, einschließlich des Namens, des Datentyps, ob die Spalte immer einen Wert (NOT NULL) enthalten muss und ob die Daten in der Spalte verwendet werden, um eine Zeile (PRIMARY KEY) eindeutig zu identifizieren. Jede Tabelle sollte über einen Primärschlüssel verfügen, obwohl SQL diese Regel nicht erzwingt.

Hinweis

Spalten, die als NOT NULL gekennzeichnet sind, werden als obligatorische Spalten bezeichnet. Wenn Sie die NOT NULL-Klausel weglassen, können Sie Zeilen erstellen, die keinen Wert in der Spalte enthalten. Eine leere Spalte in einer Zeile soll einen NULL-Wert aufweisen.

CREATE TABLE Product
(
    ID INT PRIMARY KEY,
    Name VARCHAR(20) NOT NULL,
    Price DECIMAL NULL
);

Die für Spalten in einer Tabelle verfügbaren Datentypen variieren zwischen Datenbankverwaltungssystemen. Die meisten Datenbankverwaltungssysteme unterstützen jedoch numerische Typen wie INT (eine ganze Zahl oder ganze Zahl), DECIMAL (eine Dezimalzahl) und Zeichenfolgentypen wie VARCHAR (VARCHAR steht für Daten mit variabler Länge). Weitere Informationen finden Sie in der Dokumentation für das ausgewählte Datenbankverwaltungssystem.

DCL-Anweisungen

Datenbankadministratoren verwenden in der Regel DCL-Anweisungen, um den Zugriff auf Objekte in einer Datenbank zu verwalten, indem Berechtigungen für bestimmte Benutzer oder Gruppen gewährt, verweigert oder widerrufen werden.

Die drei wichtigsten DCL-Anweisungen sind:

Erklärung BESCHREIBUNG
GRANT Erteilen der Berechtigung zum Ausführen bestimmter Aktionen
DENY Verweigern der Berechtigung zum Ausführen bestimmter Aktionen
REVOKE Entfernen einer zuvor erteilten Berechtigung

Beispielsweise ermöglicht die folgende GRANT-Anweisung einem Benutzer mit dem Namen "user1 " das Lesen, Einfügen und Ändern von Daten in der Produkttabelle .

GRANT SELECT, INSERT, UPDATE
ON Product
TO user1;

DML-Anweisungen

Sie verwenden DML-Anweisungen, um die Zeilen in Tabellen zu bearbeiten. Mit diesen Anweisungen können Sie Daten abrufen (Abfragen), neue Zeilen einfügen oder vorhandene Zeilen ändern. Sie können Zeilen auch löschen, wenn Sie sie nicht mehr benötigen.

Die vier wichtigsten DML-Anweisungen lauten:

Erklärung BESCHREIBUNG
SELECT Lesen von Zeilen aus einer Tabelle
INSERT Einfügen neuer Zeilen in eine Tabelle
UPDATE Ändern von Daten in vorhandenen Zeilen
DELETE Vorhandene Zeilen löschen

Die grundlegende Form einer INSERT-Anweisung fügt jeweils eine Zeile ein. Standardmäßig werden die SELECT-, UPDATE- und DELETE-Anweisungen auf jede Zeile in einer Tabelle angewendet. In der Regel wenden Sie eine WHERE-Klausel mit diesen Anweisungen an, um Kriterien anzugeben; Nur Zeilen, die diesen Kriterien entsprechen, werden ausgewählt, aktualisiert oder gelöscht.

Warnung

SQL bietet keine sind Sie sicher?-Eingabeaufforderungen, daher sollten Sie vorsichtig sein, wenn Sie DELETE oder UPDATE ohne eine WHERE-Klausel verwenden, da Sie viele Daten verlieren oder ändern können.

Der folgende Code ist ein Beispiel für eine SQL-Anweisung, die alle Spalten (angegeben durch *) aus der Tabelle "Customer " auswählt, wobei der Wert der City-Spalte "Seattle" lautet:

SELECT *
FROM Customer
WHERE City = 'Seattle';

Um nur eine bestimmte Teilmenge von Spalten aus der Tabelle abzurufen, listen Sie sie in der SELECT-Klausel auf, wie folgt:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle';

Wenn eine Abfrage viele Zeilen zurückgibt, werden sie nicht unbedingt in einer bestimmten Sequenz angezeigt. Wenn Sie die Daten sortieren möchten, können Sie eine ORDER BY-Klausel hinzufügen. Die Daten werden nach der angegebenen Spalte sortiert:

SELECT FirstName, LastName, Address, City
FROM Customer
WHERE City = 'Seattle'
ORDER BY LastName;

Sie können auch SELECT-Anweisungen ausführen, die Daten aus mehreren Tabellen mithilfe einer JOIN-Klausel abrufen. Verknüpfungen geben an, wie die Zeilen in einer Tabelle mit Zeilen in der anderen verknüpft sind, um zu bestimmen, welche Daten zurückgegeben werden sollen. Eine typische Verknüpfungsbedingung entspricht einem Fremdschlüssel aus einer Tabelle und dem zugehörigen Primärschlüssel in der anderen Tabelle.

Die folgende Abfrage zeigt ein Beispiel, das Kunden - und Bestelltabellen verknüpft. Die Abfrage verwendet Tabellenaliasen , um die Tabellennamen zu kürzen, wenn angegeben wird, welche Spalten in der SELECT-Klausel abgerufen werden sollen und welche Spalten in der JOIN-Klausel übereinstimmen sollen.

SELECT o.OrderNo, o.OrderDate, c.Address, c.City
FROM Order AS o
JOIN Customer AS c
ON o.Customer = c.ID

Das nächste Beispiel zeigt, wie Sie eine vorhandene Zeile mit SQL ändern. Er ändert den Wert der Spalte "Adresse " in der Tabelle " Kunde " für Zeilen mit dem Wert 1 in der ID-Spalte . Alle anderen Zeilen bleiben unverändert:

UPDATE Customer
SET Address = '123 High St.'
WHERE ID = 1;

Warnung

Wenn Sie die WHERE-Klausel weglassen, ändert eine UPDATE-Anweisungjede Zeile in der Tabelle.

Verwenden Sie die DELETE-Anweisung , um Zeilen zu entfernen. Sie geben die zu löschende Tabelle und eine WHERE-Klausel an, aus der die zu löschenden Zeilen identifiziert werden:

DELETE FROM Product
WHERE ID = 162;

Warnung

Wenn Sie die WHERE-Klausel weglassen, entfernt eine DELETE-Anweisungjede Zeile aus der Tabelle.

Die INSERT-Anweisung hat eine etwas andere Form. Sie geben eine Tabelle und Spalten in einer INTO-Klausel und eine Liste der Werte an, die in diesen Spalten gespeichert werden sollen. Standard SQL unterstützt nur das Gleichzeitige Einfügen einer Zeile, wie im folgenden Beispiel gezeigt. In einigen Dialekten können Sie mehrere VALUES-Klauseln angeben, um mehrere Zeilen gleichzeitig hinzuzufügen:

INSERT INTO Product(ID, Name, Price)
VALUES (99, 'Drill', 4.99);

Hinweis

In diesem Thema werden einige grundlegende SQL-Anweisungen und -Syntax beschrieben, um zu verstehen, wie SQL zum Arbeiten mit Objekten in einer Datenbank verwendet wird. Wenn Sie mehr über das Abfragen von Daten mit SQL erfahren möchten, lesen Sie den Lernpfad "Erste Schritte mit Transact-SQL " in Microsoft Learn.