# Datenbanksprache

Als Datenbanksprache bezeichnet man formale Sprachen, die für den Einsatz in Datenbanksystemen entwickelt wurden. Mit Hilfe der Datenbanksprache kommuniziert ein Benutzer oder auch ein Programm mit der Datenbank bzw. dem Datenbankmanagementsystem (DBMS). Da ein wichtiger Teil der Arbeit mit Datenbanksystemen die Formulierung von Abfragen ist, gehört zum Sprachumfang in der Regel auch die (Datenbank-)Abfragesprache. Datenbanksprachen sind speziell auf die Anforderungen in diesem Umfeld (Datenbankerstellung, -pflege und -abfrage) zugeschnitten. Man kann sie als Turing-vollständig bezeichnen, aber es handelt sich nicht um Programmiersprachen im heute geläufigen Sinne – es kann keine Anwendungssoftware damit geschrieben werden.
Es gibt eine Vielzahl von Datenbanksprachen, die oft auf bestimmte Datenbankmanagementsysteme zugeschnitten sind. Eine normierte Sprache für die weit verbreiteten Relationalen Datenbanksysteme (RDBMS) ist SQL, das gleichzeitig die Obermenge vieler, proprietärer implementierter SQL-Dialekte ist. SQL selbst schreibt nicht vor, wie die Befehle implementiert werden, sondern lediglich, wie sich die Datenbank bei bestimmten Operationen nach außen verhält.

## Unterteilung relationaler Datenbanksprachen

Eine gängige Kategorisierung der Elemente relationaler Datenbanksprachen sind die drei Sparten DML, DDL und DCL.
* Data Manipulation Language (DML, deutsch „Datenverarbeitungssprache“): Sprache oder Sprachteile für das Abfragen, Einfügen, Ändern oder Löschen von Nutzdaten
* Data Definition Language (DDL, deutsch „Datenbeschreibungssprache“): Sprache oder Sprachteile für das Anlegen, Ändern und Löschen von Datenstrukturen
* Data Control Language (DCL, deutsch „Datenaufsichtssprache“): Sprache oder Sprachteile für die Zugriffskontrolle
Gelegentlich taucht in der Literatur auch eine eigene Kategorie Data Query Language (DQL) für die Abfrage von Daten auf. Diese Einteilung ist jedoch nicht allgemein anerkannt (siehe hierzu die Sonderstellung der Abfrage). Einen weiteren Sonderfall bilden die Sprachelemente zur Arbeit mit Transaktionen, die uneinheitlich entweder der DML, der DCL oder einer eigenen Kategorie Transaction Control Language (TCL) zugeordnet werden.
In SQL sind alle Elemente in einer Sprache durch unterschiedliche Anweisungen vereinigt. Beim historischen Datenbanksystem IMS gab es für DML und DDL eigene Sprachen (DL/I und Assembler-Makros), die DCL wurde mit Betriebssystemmitteln realisiert.

## Unterteilung nicht-relationaler Datenbanksprachen

Anders als im relationalen Datenbankmodell wird im Netzwerkdatenbankmodell zwischen einer Data Storage Description Language (DSDL, physische Datenbeschreibung), einer Datenbeschreibungssprache (DDL, logische Datenbeschreibung) und einer Datenmanipulationssprache (DML) unterschieden. Diese Dreiteilung basiert auf der allgemeineren ANSI-SPARC-Architektur und wurde als Standard von der Data Base Task Group vorgeschlagen, konnte sich jedoch nicht gegen das heute vorherrschende relationale Datenbankmodell durchsetzen.
Im noch älteren hierarchischen Datenbankmodell war keine Unterteilung in Teilsprachen standardisiert.

## Abfragesprache versus Datenbanksprache

Die Begriffe Abfragesprache und Datenbanksprache werden manchmal fälschlicherweise synonym verwendet.
* Eine Datenbanksprache geht in der Regel über das reine Abfragen hinaus.
* Abfragesprachen werden auch in Gebieten außerhalb von Datenbanksystemen verwendet.