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
{{#if: Relationale Datenbank|{{#ifexist:Relationale Datenbank|
|{{#if: |{{#ifexist:{{{2}}}|
|{{#if: |{{#ifexist:{{{3}}}|
|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}
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
{{#if: Netzwerkdatenbankmodell|{{#ifexist:Netzwerkdatenbankmodell|
|{{#if: |{{#ifexist:{{{2}}}|
|{{#if: |{{#ifexist:{{{3}}}|
|}}|}}|}}|}}|}}|Einbindungsfehler: Die Vorlage Hauptartikel benötigt immer mindestens ein Argument.}}
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.<ref>Kyu-Young Whang u. a.: <templatestyles src="Webarchiv/styles.css" />{{#if:20070824153601
| {{#ifeq: 20070824153601 | *
| {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20070824153601}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2023-12-09 15:03:09 InternetArchiveBot | 2023-12-09 15:03:09 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20070824153601}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2023-12-09 15:03:09 InternetArchiveBot | 2023-12-09 15:03:09 InternetArchiveBot | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: 2023-12-09 15:03:09 InternetArchiveBot | 2023-12-09 15:03:09 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }} ({{#if: {{#if: 2023-12-09 15:03:09 InternetArchiveBot | 2023-12-09 15:03:09 InternetArchiveBot | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Physical Design of Network Model Databases Using the Property of Separability | {{#invoke:WLink|getEscapedTitle|Physical Design of Network Model Databases Using the Property of Separability}} | {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}} }}
}}}}}}}}{{#if:2023-12-09 15:03:09 InternetArchiveBot
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20070824153601|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf}}
|| {{#if: || }}
}}{{#if: Physical Design of Network Model Databases Using the Property of Separability
| {{#if: {{#invoke:WLink|isBracketedLink|Physical Design of Network Model Databases Using the Property of Separability}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://dblab.kaist.ac.kr/Publication/pdf/VLDB82_p98.pdf }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} (PDF; 1,0 MB). Mexiko-Stadt, 1982.</ref> 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.
Siehe auch
- Kategorie:Datenbanksprache – Auflistung von Datenbanksprachen
Einzelnachweise
<references />