Die strukturierte Abfragesprache (Structured Query Language, SQL) ist eine domänenspezifische, standardisierte Programmiersprache, die zur Interaktion mit relationalen Datenbankmanagementsystemen (RDBMS) wie MySQL, SQL Server, IBM Db2, PostgreSQL und Oracle Database verwendet wird.
SQL-Abfragen (auch als SQL-Befehle oder SQL-Anweisungen bezeichnet) ermöglichen es Benutzern, Daten in einer relationalen Datenbank (oder SQL-Datenbank) auf einfache Weise hinzuzufügen, abzurufen, zu aktualisieren, zu löschen, zu aggregieren und anderweitig zu verwalten. In diesen Systemen werden strukturierte Daten in Zeilen und Spalten angeordnet, die zusammen Tabellen bilden. Daten sind in der Regel über mehrere miteinander verbundene Tabellen verteilt, die über Primär- oder Fremdschlüssel miteinander verknüpft werden können.
Im Gegensatz zu anderen Programmiersprachen ist SQL eine deklarative Sprache, d. h., sie beschreibt, was der Benutzer vom Computer erwartet, und nicht, wie dies zu erreichen ist. Das ist konträr zu imperativen oder prozeduralen Sprachen (wie Java und COBOL), die schrittweise Anweisungen erfordern.
Schreibt ein Benutzer eine SQL-Abfrage zum Abrufen von Daten, muss er der Datenbank nicht sagen, wie sie die Daten erfassen soll. Stattdessen beschreibt er, wie das Ergebnis aussehen soll.
SELECT Name, E-Mail
FROM Kunden
WHERE Ort = 'Bonn' ;
SQL ist ein grundlegendes und vielseitiges Tool im modernen Tech-Stack, das für seine Datenbearbeitungsfunktionen, schnelle Abfrageverarbeitung und starken Sicherheitsmerkmale bekannt ist. Darüber hinaus bietet es Kompatibilität zwischen verschiedenen Systemen, Skalierbarkeit für wachsende Datenanforderungen sowie einen zuverlässigen Open-Source-Support und Community-Support.
SQL wurde in den 1970er Jahren von den IBM-Wissenschaftlern Donald Chamberlin und Raymond Boyce entwickelt. Sie geht auf das Konzept relationaler Modelle zurück und wurde zunächst als strukturierte englische Abfragesprache (SEQUEL) bezeichnet, bevor sie zu SQL abgekürzt wurde. Auf den Markt kam sie 1979 und hat sich seitdem zum weltweiten Standard für Verwaltungssysteme für relationale Datenbanken entwickelt.
SQL wurde 1986 vom American National Standards Institute (ANSI) und 1987 von der International Organization for Standardization (ISO) normiert. Trotz ihrer Standardisierung gibt es verschiedene SQL-Dialekte, z. B. T-SQL für Microsoft SQL Server und PL/SQL für Oracle. Diese SQL-Dialekte erfüllen spezifische Systemanforderungen und sind gleichzeitig mit den zentralen ANSI-Standardbefehlen wie SELECT, UPDATE, DELETE, INSERT und WHERE kompatibel.
Branchen-Newsletter
Bleiben Sie mit dem Think-Newsletter über die wichtigsten – und faszinierendsten – Branchentrends in den Bereichen KI, Automatisierung, Daten und mehr auf dem Laufenden. Weitere Informationen finden Sie in der IBM Datenschutzerklärung.
Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.
Seit ihrer Entstehung in den 1970er Jahren hat sich SQL zum Rückgrat moderner Datenbanksysteme entwickelt.
Im Gegensatz zu allgemeinen Programmiersprachen wurde SQL speziell für relationale Datenbanken entwickelt – und relationale Datenbanken sind wiederum für SQL optimiert. Dieses kollaborative Design macht SQL zu einem äußerst effizienten Tool für die Datenverwaltung.
Der deklarative Charakter von SQL macht es auch für Benutzer mit begrenzten Programmierkenntnissen zugänglich und somit zu einer idealen Sprache für Einsteiger. Ihre weit verbreitete Verwendung und Integration in andere Programmiersprachen wie Python und Java machen sie auch zu einer wertvollen Kompetenz in umfassenderen Programmier- und Datenumgebungen.
Datenanalysten, Data Scientists und Datenbankadministratoren verwenden SQL regelmäßig, da es sich hervorragend für Aufgaben wie Datenverarbeitung, Datendefinition, Zugriffskontrolle, Datennutzung, Datenintegration und Big-Data-Analysen eignet.
In Data Science werden mit SQL Datenbanken erstellt, in denen große, zur Analyse benötigte Datensätze gespeichert werden. Die Fähigkeit, Daten aus diesen umfangreichen, strukturierten Datensätzen zu bearbeiten und abzurufen, ist auch für die Entwicklung von Anwendungen im Bereich der künstlichen Intelligenz (KI) und des maschinellen Lernens (ML) von entscheidender Bedeutung, da diese für das Training auf hochwertige Daten angewiesen sind.
Durch die Einhaltung der ACID-Eigenschaften – Atomizität, Konsistenz, Isolation und Dauerhaftigkeit – trägt SQL dazu bei, eine zuverlässige Transaktionsverarbeitung für kritische Anwendungsfälle und den Umgang mit sensiblen Daten sicherzustellen. Darüber hinaus unterstützt es eine präzisere datengestützte Entscheidungsfindung, fortschrittliche Analysen und verbesserte Business Intelligence.
SQL bietet viele Vorteile, weshalb es nach wie vor eine der am häufigsten verwendeten und beständigsten Programmiersprachen ist.
Die einfachen Befehle von SQL (wie GROUP BY, ORDER BY, GRANT und REVOKE) ermöglichen Nutzern mit unterschiedlichen Qualifikationen die Arbeit mit Datenbanken.
SQL-Indizes und Techniken zur Abfrageoptimierung verbessern die Geschwindigkeit der Datenabfrage und damit die Datenbankleistung.
SQL-Datenbanken verfügen über Sicherheitsfunktionen wie Benutzerauthentifizierung, Zugriffskontrollen und Verschlüsselung zum Schutz der Daten.
SQL entspricht den ANSI- und ISO-SQL-Standards, wodurch die Kompatibilität mit verschiedenen Systemen und Plattformen, einschließlich Cloud-Umgebungen und Big-Data-Tools, gewährleistet ist.
Mit SQL lassen sich sowohl kleine als auch große Datenbanken effektiv verwalten und ohne nennenswerte Leistungseinbußen an wachsende Datenanforderungen anpassen.
Viele SQL-Datenbanken sind quelloffen (Open Source) und werden von einer großen, aktiven Community gepflegt, die zur kontinuierlichen Verbesserung und Problemlösung beiträgt.
Eine relationale Datenbank organisiert Daten in einem tabellarischen Format (Zeilen und Spalten) und erleichtert die Verknüpfung zwischen verschiedenen Tabellen. Eine Datenbank „Kundendienst“ verwendet beispielsweise verschiedene Tabellen für Kundeninformationen, Käufe, Produktcodes und Kontakte. Durch Schlüssel wie eine eindeutige Kunden-Nr. sind die Datensätze miteinander verknüpft.
Mit SQL können Benutzer Abfragen (und Unterabfragen) schreiben, um diese Daten zu bearbeiten. Diese Befehle durchlaufen während des SQL-Prozesses mehrere Softwarekomponenten:
Ein Parser verifiziert die Korrektheit von SQL-Anweisungen und wandelt sie in ein Format um, das die Datenbank verstehen kann, beispielsweise in tokenisierte Symbole. Dieser Schritt umfasst die Syntaxanalyse und die semantische Überprüfung. Der Parser stellt außerdem sicher, dass der Benutzer zur Ausführung des Vorgangs berechtigt ist.
Anschließend plant eine relationale Engine – auch als Abfrageoptimierer bezeichnet – die effizientesten Strategien für den Abruf, die Änderung oder das Hinzufügen von Daten. Dazu werden verschiedene Abfrageausführungspläne bewertet. Der Plan wird in Bytecode geschrieben, einer Sprache für virtuelle Maschinen. Dieser Schritt ist entscheidend, um Leistung und Ressourcennutzung der Datenbank zu optimieren.
Schließlich verarbeitet eine Speicher-Engine den Bytecode, führt die SQL-Anweisung aus und verwaltet den physischen Datenspeicher. Es ist für die physische Darstellung von Daten zuständig, einschließlich Dateiformaten und Datenpufferung. Außerdem wird das Ergebnis an den Benutzer oder die Anwendung zurückgegeben. Dieser Schritt trägt dazu bei, einen effizienten Datenzugriff und Aktualisierungen auf dem Datenträger sicherzustellen. Diese Verknüpfung kann eine 1:n- oder n:n-Beziehung sein, die mithilfe von Primär- und Fremdschlüsseln Datenintegrität gewährleistet.
Relationale Datenbankmanagementsysteme (auch SQL-Systeme genannt) bestehen aus vielen Komponenten, darunter:
SQL-Befehle werden üblicherweise in die folgenden Kategorien unterteilt:
Datendefinitionssprache verwaltet Datenbankobjekte wie Tabellen, Ansichten und Indizes. Sie definiert die Struktur und Organisation der gespeicherten Daten sowie die Beziehungen zwischen den gespeicherten Artikeln.
Die Datenbearbeitungssprache verwaltet Daten in Datenbanken durch Operationen wie INSERT, UPDATE und OUTER JOIN, mit denen Daten hinzugefügt, geändert und kombiniert werden können.
Die Datenkontrollsprache regelt den Datenzugriff über Befehle wie GRANT (zum Erteilen von Berechtigungen) und REVOKE (zum Entziehen von Berechtigungen). Es kann die Möglichkeiten eines Benutzers zum Abrufen, Hinzufügen und Ändern von Daten einschränken.
Eine Datenabfragesprache führt Datenabfragen durch, um Informationen abzurufen, in der Regel mithilfe des Befehls SELECT. Es kann bestimmte Datenartikel oder eine Reihe von Artikeln abrufen.
Die Transaktionssteuerungssprache verwaltet Transaktionsänderungen, um die Datenintegrität sicherzustellen, und unterstützt die Operationen ROLLBACK und COMMIT zum Rückgängigmachen bzw. Speichern von Änderungen. Es dient zur Koordinierung der Datennutzung durch mehrere Benutzer gleichzeitig.
SQL-Datenbanken unterstützen verschiedene SQL-Anweisungen für Datenoperationen. SQL-Befehle können jedoch je nach Datenbank variieren, da diese möglicherweise eine eigene SQL-Syntax verwenden.
Zu den grundlegenden SQL-Befehlen gehören:
Ruft Daten aus einer oder mehreren Tabellen ab.
SELECT Name, E-Mail
FROM Kunden
WHERE Ort = 'Bonn' ;Diese Anweisung ruft den Namen und die E-Mail-Adresse aller Kunden aus der Tabelle „Kunden“ ab, die in Bonn leben.
Fügt einer Tabelle neue Zeilen hinzu.
INSERT INTO Kunden (Name, E-Mail, Stadt)
VALUES ('Max Mustermann', 'max.mustermann@beispiel.de', 'Bochum') ;
Diese Anweisung fügt eine neue Zeile zur Tabelle „Kunden“ mit dem Namen „Max Mustermann“ und E-Mail-Adresse „max.mustermann@beispiel.de“ sowie dem Ort „Bochum“ hinzu.
Ändert vorhandene Daten in einer Tabelle.
UPDATE Kunden
SET E-Mail = 'muster@beispiel.de'
WHERE name = 'John Doe' ;
Diese Anweisung aktualisiert die E-Mail-Adresse des Kunden namens „Max Mustermann“ in der Kundentabelle auf „neu.e-mail@beispiel.de“.
Entfernt Zeilen aus einer Tabelle basierend auf einer Bedingung.
DELETE FROM Kunden
WHERE Ort = 'Bonn' ;
Diese Anweisung löscht alle Zeilen aus der Tabelle „Kunden“, in denen der Ort „Bonn“ lautet.
Definiert eine neue Tabelle und deren Struktur.
CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;
Diese Anweisung erstellt eine neue Tabelle mit dem Namen „Produkte“ und drei Spalten: „Produkt_Nr“ als ganzzahliger Primärschlüssel, „Name“ als variable Zeichenfolge mit bis zu 100 Zeichen und „Preis“ als Dezimalzahl mit zehn Ziffern und zwei Dezimalstellen.
Ändert die Struktur einer vorhandenen Tabelle.
ALTER TABLE Kunden
ADD COLUMN Geburtstag DATE ;
Mit dieser Anweisung wird der vorhandenen Tabelle „Kunden“ eine neue Spalte „Geburtstag“ vom Typ DATE hinzugefügt.
Löscht die Tabelle mit allen Daten.
DROP TABLE Alte_Kunden
Diese Anweisung löscht die Tabelle „Alte_Kunden“ mitsamt aller Daten.
Kombiniert Zeilen aus zwei oder mehr Tabellen basierend auf einer zugehörigen Spalte.
SELECT c.name, P.Name AS Produkt_Name FROM Kunden c JOIN Bestellungen o ON K.Kunden = O.Kunden_Nr JOIN Produkte p ON O.Produkt_Nr = P.Produkt_Nr WHERE K.Ort = 'Bonn'
Die SQL-Anweisung JOIN ruft die Namen der Kunden sowie die Namen der von ihnen bestellten Produkte ab. Sie vereint die Tabellen „Kunden“, „Bestellungen“ und „Produkte“ basierend auf „Kunden_Nr“ und „Produkt_Nr“ und wählt dabei nur die Kunden aus, die in Bonn leben.
SQL-Datenbanken sind relationale Datenbanken, in denen strukturierte Daten in Zeilen und Tabellen gespeichert werden, die auf verschiedene Weise miteinander verknüpft sind. SQL ist die Standardsprache für die Interaktion mit diesen Datenbanken.
NoSQL-Datenbanken (oder nicht relationale Datenbanken) entstanden Ende der 2000er Jahre, um Daten mit weniger Struktur zu verarbeiten. Diese Arten von Datenbanken (wie MongoDB) bieten im Vergleich zu SQL-Datenbanken flexiblere Datenmodelle.
Die wichtigsten Unterschiede:
NoSQL-Datenbanken sind horizontal skalierbar und bewältigen höheren Datenverkehr durch Hinzufügen weiterer Server. Im Gegensatz dazu sind SQL-Datenbanken traditionell vertikal skalierbar und erfordern leistungsfähigere Hardware, um eine höhere Last zu bewältigen.
Dank robuster Index- und Verknüpfungsfunktionen verwenden SQL Databases eine tabellenbasierte Struktur, die sich ideal für mehrzeilige Transaktionen und komplexe Abfragen über zusammengehörige Daten eignet. NoSQL bietet verschiedene Strukturen, wie z. B. Schlüsselwert-, Dokument-, Diagramm- oder spaltenorientierte Datenbanken, die unterschiedlichen Anforderungen gerecht werden und mit halbstrukturierten oder unstrukturierten Daten mehr Flexibilität ermöglichen.
SQL-Datenbanken sind für komplexe Abfragen mit strikter Datenkonsistenz gemäß den ACID-Prinzipien optimiert. NoSQL-Datenbanken, die den BASE-Prinzipien (basically available, soft state, eventual consistency) folgen, bieten eine schnellere Leistung für bestimmte Typen von Daten, jedoch mit unterschiedlichen Konsistenzgarantien.
SQL-Datenbanken werden häufig für Anwendungen ausgewählt, die komplexe Transaktionen, konsistente Daten und die strikte Einhaltung von Schemas erfordern, wie beispielsweise Finanzsysteme, E-Commerce-Plattformen oder CRM-Datenbanken. NoSQL wird für sich schnell ändernde, umfangreiche oder halbstrukturierte Daten bevorzugt, z. B. in sozialen Netzwerken, Echtzeitanalysen oder Content-Management-Systemen.
SQL-Datenbanken verfügen aufgrund ihrer längeren Geschichte und weit verbreiteten Nutzung über umfangreichere Ressourcen, wie beispielsweise SQL-Tutorials und Community-Support. NoSQL erfordert oft weniger Vorabdesign und kann einfacher zu skalieren sein, erfordert aber öfter mehr individuelle Entwicklung für komplexe Abfragen und Datenkonsistenz.
SQL-Datenbanken erfordern ein sorgfältiges Schema-Design und sind bei Schema-Änderungen oft sehr wartungsintensiv. NoSQL-Datenbanken bieten eine einfachere Skalierbarkeit und Anpassungsfähigkeit für Schemaänderungen ohne große Ausfallzeiten oder Umstrukturierungen.
Trotz der Sicherheitsvorteile vieler SQL-Datenbanken können andere Unternehmensanwendungen anfällig für Sicherheitsprobleme sein, beispielsweise schwache Authentifizierung, unsichere Konzeption und Fehlkonfigurationen. Aufgrund dieser Schwachstellen stellt die SQL-Injection nach wie vor eine reale Bedrohung für Unternehmen dar.
Eine SQL-Injection tritt auf, wenn Hacker SQL-Abfragen manipulieren, um auf Datenbankinformationen zuzugreifen oder diese zu beschädigen. Solche Schwachstellen zu kennen und solide Sicherheitsmaßnahmen zu implementieren, ist zum Schutz der SQL-Daten von entscheidender Bedeutung.
Erstellen und verwalten Sie intelligente Streaming-Datenpipelines über eine intuitive grafische Benutzeroberfläche, die eine nahtlose Datenintegration in Hybrid- und Multicloud-Umgebungen ermöglicht.
Watsonx.data ermöglicht es Ihnen, Analysen und KI mit all Ihren Daten zu skalieren, unabhängig davon, wo sie sich befinden, und zwar über einen offenen, hybriden und kontrollierten Datenspeicher.
Erschließen Sie den Wert von Unternehmensdaten mit IBM Consulting® und bauen Sie ein erkenntnisgesteuertes Unternehmen auf, das Ihnen geschäftliche Vorteile verschafft.