Mit der Datenbankabfragesprache SQL (Structured Query Language) werden Tabellen erstellt, beschrieben, gelöscht und gelesen. Alle Operationen auf eine Relation, die auf der Datenbank als Tabelle abgebildet ist, werden mit SQL-Befehlen ausgeführt. SQL ist Teil des Datenbankmanagementsystems (DBMS) relationaler Systeme und ermöglicht das Lesen und Manipulieren der Datenbank.
1970 und das Ende der Hierarchie
Es dauerte rund 10 Jahre, bis Edgar Codd sein erstes relationales Modell präsentierte. Der britische Mathematiker, der in Oxford studierte und im kalifornischen San Jose in den Entwicklungslabs der IBM forschte, schaffte das, was die Datenverarbeitung revolutionierte und einen Siegeszug um die Welt antrat. Sein in 1970 vorgestelltes theoretisches Modell für eine relationale Datenbasis wurde zur Grundlage der Datenbankmodelle und es ist es bis heute.
Datenbanken werden zur Datenverwaltung in Computersystemen eingesetzt. Wenn auch andere Konzepte, um Daten strukturiert zu verwalten nach wie vor verwendet werden, so haben sie nur geringe Bedeutung. Noch während Codd in den 60ern sein relationales Modell entwickelte, wurden die Datenbestände hauptsächlich in hierarchischen Datenbanken abgelegt. Ein großer Nachteil der hierarchischen Datenverwaltung ist, dass die Strukturen nach Erstellung nicht mehr bzw. nur noch sehr eingeschränkt verändert oder erweitert werden können. Eines der bekanntesten hierarchischen Datenbanksysteme ist das von IBM entwickelte IMS/DB.
Ein erstes relationales Datenbanksystem, basierend auf Codds Modell, wurde in den 70ern im amerikanischen Berkeley an der Univerity of California entwickelt: das offene, relationale Datenbanksystem Ingres. Heute ist Ingres wieder ein eigenständiges Unternehmen, das mit seinem gleichnamigen Produkt die weltweit führende Enterprise-Open-Source-Datenbank anbietet. Zur Datenhaltung insbesondere großer Datenbestände werden heute relationale Datenbanken, die mit einem relationalen Datenbankmanagementsystem (RDBMS, Relational Database Management System) verwaltet werden, eingesetzt.
Renamed – die Geburt von SQL
Um in der relationalen Datenbank Tabellen anzulegen, zu füllen, Datensätze zu ändern oder zu löschen wird eine besondere Kommandostruktur verwendet: SQL. Die Datenbanksprache SQL ermöglicht die Definition und die Verwaltung von Datenstrukturen. Dazu gehören das Anlegen einer Tabelle, die Datenmanipulationen innerhalb dieser Datenstruktur, wie etwa das Einfügen und Löschen von Sätzen oder auch das Einfügen von Spalten (Columns bzw. Attribute) in die Tabelle sowie das Anlegen von Schlüsseln.
Die Aussprache von „SQL“, das für „Standard Query Language“ steht, gibt nicht nur Aufschluss über seinen Zweck (Query = Abfrage), sondern auch über seine Herkunft. Offiziell wird „SQL“ als [?skju???l] ausgesprochen, wobei aber auch [?si?kw?l] verwendet wird. Letzteres ist der „ursprüngliche“ Name der Datenbanksprache, die unter Beteiligung von Edgar Codd von Donald Chamberlin und Raymond Boyce entworfen wurde: SEQUEL (Structured English Query Language). SEQUEL wurde mit seiner Standardisierung zu „SQL“. Basierend auf der relationalen Algebra zeigt SQL einen einfachen Aufbau und eine enge Anlehnung an die englische Umgangssprache.
SQL und die Befehlskategorien
Die SQL-Befehle zur Bearbeitung der Strukturen in der Datenbank sind in – gemäß ihrem Zweck – in verschiedene Kategorien eingeteilt: SQL umfasst Kategorie zur Manipulation und Definition der Daten sowie zur Verwaltung der Datenbank.
Die Kategorie DML (Data Manipulation Language) enthält die SQL-Befehle zum Ändern, Einfügen und Löschen innerhalb der Tabelle. Die SQL-Sprachelemente, die der reinen Abfrage der Daten dienen, gehören grundsätzlich ebenfalls in die Kategorie DML, werden in der Literatur teilweise aber auch als Data Query Language (Datenabfragesprache, DQL) kategorisiert. DML beinhaltet alle SQL-Befehle zur Änderung und Abfrage innerhalb einer Relation (Tabelle).
Einige DML-Befehle:
- SELECT FROM relation – um Daten (Sätze, Attribute) in der Tabelle relation zu lesen
- DELETE FROM relation – um Daten (Sätze, Attribute) in der Tabelle zu löschen
- INSERT INTO relation – um Daten(Sätze, Attribute) in eine bestehende Tabelle einzufügen
Beispiel DML-Befehl:
In die Tabelle „Student“ sollen die Studenten Huber und Schulz angelegt werden. Der Primärschlüssel in der Tabelle Student ist die Matrikelnummer, die daher mit angelegt werden muss:
INSERT INTO student (matrn, name) VALUES (10001, ‚Huber‘), (15005, . ‚Schulz‘
Der Befehl legt zwei Sätze an. Einen für Huber, und einen für Schulz. Sollen weitere Daten eingefügt werden, wie etwa eingeschriebene Studiengang, das bereits als Feld in der Tabelle angelegt ist, so wird dazu nicht der INSERT-, sondern der UPDATE-Befehl verwendet.
Die Kategorie DDL (Data Definition Language) enthält die Befehle zur Definition des Datenbankschemas. Mit den zur Kategorie DDL gehörenden SQL-Befehlen werden die Relationen (Tabellen) der Datenbank angelegt, gelöscht oder geändert. Das Anlegen von Relationen (Tabellen) und Sichten, die Definition von Schlüsseln bzw. Indizes innerhalb der Tabelle sowie das Löschen von Tabellen und Sichten werden von SQL-Befehlen der Kategorie DDL ausgeführt:
Einige DDL-Befehle:
- CREATE TABLE relation – legt die Tabelle „relation“ an
- DROP INDEX indexname – löscht einen Index
- ALTER TABLE „relation“ alterdefinition – Ändern der Tabelle gemäß der mitgegebenen „alterdefinition“
Beispiel DDL-Befehl:
Die Tabelle Student wird auf der Datenbank angelegt.
CREATE TABLE Student (MatrNr INT NOT NULL PRIMARY KEY,
NACHNAME VARCHAR(30) NOT NULL
Die Tabelle Student enthält Spalten für Attribute, nämlich die Matrikelnummer, die der Primärschlüssel der Tabelle ist, sowie den Nachnamen, der eine Länge von 30 Zeichen aufnehmen kann. Wird beim Anlegen eines Satzes der Nachname nicht gefüllt, so wird – wegen der Angabe von „NOT NULL“ – die Anweisung zurückgewiesen. Soll die Tabelle um ein weiteres Feld erweitert werden, zum Beispiel um das Geburtsdatum, wird der ALTER TABLE-Befehl verwendet.
Zu den Befehlen der Kategorie DCL, der Data Control Language, zählt die Berechtigungsverwaltung. Die Rechte auf die Objekte der Datenbank sind in SQL spezifiziert, nicht jedoch die Verwaltung der Benutzerrechte. Jedes Datenbanksystem implementiert daher seine eigene Benutzerverwaltung.
Einige DCL-Befehle:
- GRANT operation ON relation TO benutzer – Weitergabe eigener Rechte (Grant) an der Tabelle „relation“ an den oder die „benutzer
- REVOKE – zum Widerrufen von Rechten
Die „operation“ kann etwa ein „SELECT“ oder ein „UPDATE“ sein, die es dem bevollmächtigten Benutzer erlaubt, die Tabelle zu lesen bzw. die Inhalte der Tabelle zu ändern.
Der Schlüssel zum Erfolg
Der Student Huber besucht viele Vorlesungen. Während die Studenten mit ihrer Matrikelnummer und dem Geburtsdatum in der Tabelle „Student“ abgelegt werden, so sind die Vorlesungen in einer eigenen Tabelle „Vorlesung“ gehalten. Die Information, welche Vorlesungen der Student Huber besucht – wird in einer eigenen Tabelle (Belegungen) abgelegt. Die Normalisierung der Datenstrukturen auf der Datenbank ermöglicht die Haltung redundanzfreier großer Datenbestände. Zur logischen Verknüpfung der Daten werden Schlüsselbeziehungen erstellt.
Wird für die Tabelle ein Primärschlüssel erstellt, so können in dieses Feld nur innerhalb der Tabelle eindeutige Werte eingetragen werden. Das Primärschlüsselfeld der Tabelle „Student“ ist die Matrikelnummer. Somit kann der Datensatz für den Studenten Huber nur ein einziges Mal in der Tabelle angelegt werden. Ein mit INSERT angelegter weiterer Satz mit der gleichen Matrikelnummer wird vom DBMS zurückgewiesen. Wird in die Tabelle Student ein Feld aufgenommen, das Primärschlüssel einer anderen Tabelle ist, so wird das Feld zum Fremdschlüssel.
Beispiel für einen Fremdschlüssel:
Die Datenbank der Uni hat für alle angebotenen Studiengänge (Master-BWL, Bachelor-BWL (Kürzel: BWL05), VWL, Mathematik etc.) eine eigene Tabelle, in dem der eindeutige Bezeichner des Studiengangs der Primärschlüssel ist. In der Tabelle „Student“ wird ein weiteres Feld eingefügt, in dem der eingeschriebene Studiengang (z.B. „BWL05“) des jeweiligen Studenten abgelegt werden kann. Das Feld „studiengang“ ist in der Tabelle „Student“ somit ein Fremdschlüssel. Das Feld „studiengang“ ist in der Tabelle „StudiengängeUni“ der Primärschlüssel. Wird ein Satz in der Tabelle „Student“ angelegt und das Feld „studiengang“ gefüllt, so muss ein Satz mit dem Inhalt des Feldes „studiengang“ in der Tabelle „StudiengängeUni“ vorhanden sein.
Nicht ohne die Schlüssel
Schlüssel verknüpfen die Informationen innerhalb der Datenbank, um so die Daten in logisch eigenständige Container – die Tabellen – abzulegen. Das Ziel der Normalisierung von Strukturen, das mit der Verschlüsselung der Daten erreicht wird, ist auch die redundanzfreie Datenhaltung, um so Zugriffskosten und physischen Speicherplatz zu sparen und Fehlerquellen zu eliminieren.
Zusammenfassung
SQL ist eine Datenbankabfragesprache, die für die Erstellung, Beschreibung, Löschung und das Lesen von Tabellen in relationalen Datenbanken eingesetzt wird. Sie ist ein unverzichtbarer Bestandteil des Datenbankmanagementsystems (DBMS) und bietet umfassende Möglichkeiten zur Datenmanipulation und -verwaltung.
Die relationalen Datenbanken haben ihre Ursprünge im theoretischen Modell, das 1970 von dem britischen Mathematiker Edgar Codd vorgestellt wurde. Relationale Datenbanken bieten gegenüber hierarchischen Systemen den Vorteil der flexiblen Strukturänderung und werden heutzutage vorrangig für die Datenhaltung großer Datenbestände verwendet.
Die Befehle in SQL sind in verschiedene Kategorien eingeteilt: DML (Data Manipulation Language) für Änderungen, Einfügungen und Löschungen in Tabellen; DDL (Data Definition Language) für die Definition von Datenbankschemas; und DCL (Data Control Language) für die Berechtigungsverwaltung.
Ein wichtiger Aspekt in relationalen Datenbanken ist die Normalisierung der Datenstrukturen, die redundanzfreie Datenhaltung ermöglicht. Schlüsselbeziehungen, wie Primär- und Fremdschlüssel, spielen eine zentrale Rolle bei der logischen Verknüpfung der Daten und unterstützen die effiziente Datenverwaltung.
Durch die Einführung von Schlüsseln können Daten in eigenständigen Tabellen logisch verknüpft und effizient verwaltet werden. Dies spart nicht nur Speicherplatz, sondern minimiert auch potenzielle Fehlerquellen.
Häufige Fragen und Antworten
Was ist SQL?
SQL (Structured Query Language) ist eine Datenbankabfragesprache, die verwendet wird, um Tabellen in relationalen Datenbanken zu erstellen, zu beschreiben, zu löschen und zu lesen. Mit SQL-Befehlen können verschiedene Operationen auf Relationen in einer Datenbank ausgeführt werden. SQL ist ein integraler Bestandteil von Datenbankmanagementsystemen und ermöglicht das Lesen und Manipulieren von Datenbankinhalten.
Was sind die Vorteile von SQL?
Der Einsatz von SQL bietet mehrere Vorteile. Erstens ermöglicht SQL die einfache Erstellung und Verwaltung von Tabellen und Datenstrukturen in relationalen Datenbanken. Zweitens bietet SQL umfangreiche Möglichkeiten zur Datenmanipulation und Abfrage, um relevante Informationen aus einer Datenbank abzurufen. Drittens ermöglicht SQL die effiziente Verwaltung großer Datenbestände und die Durchführung komplexer Operationen auf den Daten. Darüber hinaus bietet SQL die Möglichkeit zur Normalisierung von Datenstrukturen und zur Verwaltung von Schlüsselbeziehungen zwischen verschiedenen Tabellen.
Welche Kategorien von SQL-Befehlen gibt es?
SQL-Befehle sind in verschiedene Kategorien eingeteilt. Die Kategorie DML (Data Manipulation Language) umfasst Befehle zur Änderung, Einfügung und Löschung von Daten in Tabellen. Die Kategorie DDL (Data Definition Language) umfasst Befehle zur Definition und Verwaltung von Datenbankschemata. Die Kategorie DCL (Data Control Language) umfasst Befehle zur Berechtigungsverwaltung und Sicherheitskontrolle in der Datenbank. Jede Kategorie hat spezifische Befehle und Funktionen, um bestimmte Aufgaben in der Datenbank auszuführen.