|
|
| (82 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| '''topic''' kurze Beschreibung
| | '''SQL''' - Structured Query Language |
| ==Beschreibung==
| |
| '''SQL''' (offizielle Aussprache [<nowiki/>{{IPA|ɛskjuːˈɛl}}], mitunter auch [<nowiki/>{{IPA|ˈsiːkwəl}}]; auf Deutsch auch häufig die deutsche Aussprache der Buchstaben) ist eine [[Datenbanksprache]] zur Definition von [[Datenstruktur]]en in [[Relationale Datenbank|relationalen Datenbanken]] sowie zum Bearbeiten (Einfügen, Verändern, Löschen) und Abfragen von darauf basierenden Datenbeständen. | |
|
| |
|
| Die Sprache basiert auf der [[Relationale Algebra|relationalen Algebra]], ihre [[Syntax]] ist relativ einfach aufgebaut und [[Formale Semantik|semantisch]] an die englische Umgangssprache angelehnt. Ein gemeinsames Gremium von [[Internationale Organisation für Normung|ISO]] und [[International Electrotechnical Commission|IEC]] [[Standardisierung|standardisiert]] die Sprache unter Mitwirkung nationaler Normungsgremien wie [[American National Standards Institute|ANSI]] oder [[Deutsches Institut für Normung|DIN]]. Durch den Einsatz von SQL strebt man die Unabhängigkeit der Anwendungen vom eingesetzten [[Datenbank#Datenbankmanagementsystem|Datenbankmanagementsystem]] an.
| | == Beschreibung == |
| | ; Structured Query Language |
| | Strukturierte Abfrage-Sprache |
|
| |
|
| Die Bezeichnung ''SQL'' wird im allgemeinen Sprachgebrauch als Abkürzung für „'''Structured Query Language'''“ (auf Deutsch: „Strukturierte Abfrage-Sprache“) aufgefasst, obwohl sie laut Standard ein eigenständiger Name ist. Die Bezeichnung leitet sich von dem Vorgänger SEQUEL ([{{IPA|ˈsiːkwəl}}], Structured English Query Language) ab, welche mit Beteiligung von [[Edgar F. Codd]] (IBM) in den 1970er Jahren von [[Donald D. Chamberlin]] und [[Raymond F. Boyce]] entwickelt wurde. SEQUEL wurde später in SQL umbenannt, weil SEQUEL ein eingetragenes Warenzeichen der [[Hawker Siddeley]] Aircraft Company ist.<ref>[http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95-System.html ''Diskussion über System R und zur Namensänderung von SEQUEL zu SQL'']</ref>
| | ; Aussprache |
| ==Sprachelemente==
| | {| class="wikitable options" |
| [[Datei:SQL.png|mini|Bestandteile von SQL]]
| | | Aussprache || ɛskjuːˈɛl |
| | |- |
| | | Mitunter auch || siːkwəl |
| | |- |
| | | Deutsch häufig || Aussprache der Buchstaben |
| | |} |
|
| |
|
| SQL-Befehle lassen sich in fünf Kategorien unterteilen (Zuordnung nach der Theorie der [[Datenbanksprache]]n in Klammern):
| | ; Datenbanksprache |
| | * [[Datenbanksprache]] |
|
| |
|
| *[[Data Query Language]] (DQL) – Befehle zur Abfrage und Aufbereitung der gesuchten Informationen, wird auch als Untermenge der DML klassifiziert
| | ; Definition |
| *[[Data Manipulation Language]] (DML) – Befehle zur [[Datenmanipulation]] (Ändern, Einfügen, Löschen von [[Datensatz|Datensätzen]]) und lesendem Zugriff
| | * [[Datenstruktur]]en von [[Relationale Datenbank|relationalen Datenbanken]] |
| *[[Data Definition Language]] (DDL) – Befehle zur [[Datendefinition|Definition]] des [[Datenbankschema]]s (Erzeugen, Ändern, Löschen von [[Datenbanktabelle]]n, Definition von [[Primärschlüssel]]n und [[Fremdschlüssel]]n) | |
| *[[Data Control Language]] (DCL) – Befehle für die [[Mehrbenutzersystem#Rechtemanagement|Rechteverwaltung]]
| |
| *[[Transaction Control Language]] (TCL) – Befehle für die [[Transaktion (Informatik)|Transaktionskontrolle]]
| |
|
| |
|
| Die Bezeichnung SQL bezieht sich auf das englische Wort {{"|Text=query|Übersetzung=[[Abfragesprache|Abfrage]]|lang=en}}. Mit Abfragen werden die in einer Datenbank gespeicherten Daten abgerufen, also dem Benutzer oder einer Anwendersoftware zur Verfügung gestellt.
| | ; Bearbeiten |
| | * Einfügen |
| | * Verändern |
| | * Löschen |
|
| |
|
| Das Ergebnis einer Abfrage sieht wiederum aus wie eine Tabelle und kann oft auch wie eine Tabelle angezeigt, bearbeitet und weiterverwendet werden. {{Siehe auch|Datenbanktabelle}}
| | ; Abfragen |
| | * Datenbestände |
|
| |
|
| ==Installation==
| | ; Relationale Algebra |
| ==Anwendungen==
| | Basiert auf [[Relationale Algebra|relationalen Algebra]] |
| ===Fehlerbehebung===
| | * [[Syntax]] ist relativ einfach aufgebaut |
| ==Syntax==
| | * [[Formale Semantik|semantisch]] an die englische Umgangssprache angelehnt |
| ===Optionen===
| | * Ein gemeinsames Gremium von [[Internationale Organisation für Normung|ISO]] und [[International Electrotechnical Commission|IEC]] [[Standardisierung|standardisiert]] die Sprache unter Mitwirkung nationaler Normungsgremien wie [[American National Standards Institute|ANSI]] oder [[Deutsches Institut für Normung|DIN]] |
| ===Parameter===
| | * Durch den Einsatz von SQL strebt man die Unabhängigkeit der Anwendungen vom eingesetzten [[Datenbank#Datenbankmanagementsystem|Datenbankmanagementsystem]] an |
| ===Umgebungsvariablen===
| |
| ===Exit-Status===
| |
| ==Konfiguration==
| |
| ===Dateien===
| |
| ==Sicherheit==
| |
| ==Dokumentation==
| |
| ===RFC===
| |
| ===Man-Pages===
| |
| ===Info-Pages===
| |
| ===Literatur===
| |
| *Donald D. Chamberlin, Raymond F. Boyce: ''SEQUEL: A Structured English Query Language''. In: ''SIGMOD Workshop.'' Vol. 1 1974, S. 249–264.
| |
| *Donald D. Chamberlin, Morton M. Astrahan, Kapali P. Eswaran, Patricia P. Griffiths, Raymond A. Lorie, James W. Mehl, Phyllis Reisner, Bradford W. Wade: ''SEQUEL 2: A Unified Approach to Data Definition, Manipulation, and Control''. In: ''IBM Journal of Research and Development.'' 20(6) 1976, S. 560–575.
| |
| *Günter Matthiessen, Michael Unterstein: ''Relationale Datenbanken und SQL in Theorie und Praxis'' Springer Vieweg, [[index.php?title=Special:BookSources/9783642289859|ISBN 978-3-642-28985-9]].
| |
| *Edwin Schicker: ''Datenbanken und SQL – Eine praxisorientierte Einführung.'' Teubner, [[index.php?title=Special:BookSources/351902991X|ISBN 3-519-02991-X]]. | |
| *Oliver Bartosch, Markus Throll: ''Einstieg in SQL.'' Galileo Press, [[index.php?title=Special:BookSources/3898424979|ISBN 3-89842-497-9]]. | |
| *Daniel Warner, Günter Leitenbauer: ''SQL.'' Franzis, [[index.php?title=Special:BookSources/3772375278|ISBN 3-7723-7527-8]]. | |
| *H. Faeskorn-Woyke, B. Bertelsmeier, P. Riemer, E. Bauer: ''Datenbanksysteme, Theorie und Praxis mit SQL2003, Oracle und MySQL.'' Pearson-Studium, [[index.php?title=Special:BookSources/9783827372666|ISBN 978-3-8273-7266-6]].
| |
| *Jörg Fritze, Jürgen Marsch: ''Erfolgreiche Datenbankanwendung mit SQL3. Praxisorientierte Anleitung – effizienter Einsatz – inklusive SQL-Tuning.'' Vieweg Verlag, [[index.php?title=Special:BookSources/3528552107|ISBN 3-528-55210-7]].
| |
| *Can Türker: ''SQL 1999 & SQL 2003.'' Dpunkt Verlag, [[index.php?title=Special:BookSources/3898642194|ISBN 3-89864-219-4]].
| |
| *Gregor Kuhlmann, Friedrich Müllmerstadt: ''SQL.'' Rowohlt, [[index.php?title=Special:BookSources/3499612453|ISBN 3-499-61245-3]].
| |
| *Michael J. Hernandez, John L. Viescas: ''Go To SQL.'' Addison-Wesley, [[index.php?title=Special:BookSources/382731772X|ISBN 3-8273-1772-X]]. | |
| *[[Alfons Kemper|A. Kemper]], A. Eickler: ''Datenbanksysteme – Eine Einführung.'' Oldenbourg, [[index.php?title=Special:BookSources/3486250531|ISBN 3-486-25053-1]].
| |
| *Marcus Throll, Oliver Bartosch: ''Einstieg in SQL 2008.'' 2. Auflage. Galileo Computing, [[index.php?title=Special:BookSources/9783836210393|ISBN 978-3-8362-1039-3]] inklusive Übungssoftware SQL-Teacher
| |
| *Marco Skulschus: ''SQL und relationale Datenbanken'' Comelio Medien, [[index.php?title=Special:BookSources/9783939701118|ISBN 978-3-939701-11-8]].
| |
| *Michael Wagner: ''SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme'' 1. Auflage. Diplomica Verlag, [[index.php?title=Special:BookSources/3836696096|ISBN 3-8366-9609-6]].
| |
| *Christian F. G. Schendera: ''SQL mit SAS. Band 1: PROC SQL für Einsteiger''. Oldenbourg Wissenschaftsverlag, München 2011, [[index.php?title=Special:BookSources/9783486598407|ISBN 978-3-486-59840-7]].
| |
| *Christian F. G. Schendera: ''SQL mit SAS. Band 2: Fortgeschrittenes PROC SQL''. Oldenbourg Wissenschaftsverlag, München 2012, [[index.php?title=Special:BookSources/9783486598360|ISBN 978-3-486-59836-0]].
| |
| *[[Christopher J. Date|C. J. Date]] with [[Hugh Darwen]]: ''A Guide to the SQL standard: a users guide to the standard database language SQL, 4th ed.'', Addison-Wesley, USA 1997, [[index.php?title=Special:BookSources/9780201964264|ISBN 978-0-201-96426-4]]
| |
| *Jim Melton: ''Advanced SQL:1999: Understanding Object-Relational and Other Advanced Features, 1st ed.'', Morgan Kaufmann, USA, 2002, [[index.php?title=Special:BookSources/9781558606777|ISBN 978-1558606777]].
| |
|
| |
|
| ==Siehe auch== | | == Sprachelemente == |
| ==Links==
| | ; Kategorien von SQL-Befehlen |
| ===Projekt-Homepage===
| | [[Datei:SQL.png|mini|Bestandteile von SQL]] |
| ===Weblinks===
| | {| class="wikitable options" |
| {{Wikibooks|Einführung in SQL|SQL}}
| | ! Language !! !! Beschreibung |
| *[https://www.youtube.com/playlist?list=PLC4UZxBVGKte0o6iUssqQVmXhryrOqPXi Erklärvideos zu SQL], Big Data Analytics Group, Uni Saarland
| |
| *{{dmoz|World/Deutsch/Computer/Programmieren/Sprachen/SQL/}}
| |
| *[http://www.torsten-horn.de/techdocs/sql.htm SQL-Grundlagen] – Einführung mit Beispielen und Vergleich diverser Datenbanken
| |
| *[https://esb-dev.github.io/mat/sql-merkblatt.pdf Merkblatt SQL]
| |
| *[http://www.mcjones.org/System_R/SQL_Reunion_95/ The 1995 SQL Reunion: People, Projects, and Politics] – zur frühen Geschichte von SQL (englisch)
| |
| *[http://www.wiscorp.com/SQLStandards.html Frei verfügbare SQL-Standard-Dokumente], z. B. SQL:2003 und SQL:2008 (englisch)
| |
| *[http://www.1keydata.com/de/sql/ SQL-Tutorial]
| |
| *[http://sqltutor.fsv.cvut.cz/cgi-bin/sqltutor GNU SQLTutor]
| |
| *[https://sqlcoach.informatik.hs-kl.de/sqlcoach/ SQLcoach] – Freies Üben von SQL
| |
| *[https://edb2.gm.th-koeln.de/apps/sqltrainer/ Interaktiver SQL-Trainer (Anmeldung notwendig)]
| |
| *[https://blog.homepage-webhilfe.de/Artikel/mysql-tutorial-fuer-anfaenger/ Blogbeitrag zu SQL-Befehlen und deren Einsatz in PHP]
| |
| *[http://sql-tuning.com/ SQL Tuning]
| |
| *[https://docs.microsoft.com/en-us/sql/t-sql/language-reference?view=sql-server-ver15 Transact-SQL Reference (Database Engine)]
| |
| | |
| ===Einzelnachweise===
| |
| <references />
| |
| ==Testfragen==
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 1''
| |
| <div class="mw-collapsible-content">'''Antwort1'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 2''
| |
| <div class="mw-collapsible-content">'''Antwort2'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 3''
| |
| <div class="mw-collapsible-content">'''Antwort3'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 4''
| |
| <div class="mw-collapsible-content">'''Antwort4'''</div>
| |
| </div>
| |
| <div class="toccolours mw-collapsible mw-collapsed">
| |
| ''Testfrage 5''
| |
| <div class="mw-collapsible-content">'''Antwort5'''</div>
| |
| </div>
| |
| | |
| [[Kategorie:Entwurf]]
| |
| =Wikipedia=
| |
| | |
| == Abfragen ==
| |
| [[SQL:Abfragen]]
| |
| | |
| ==Einfügen von Datensätzen (<code>INSERT INTO ... VALUES ...</code>)==
| |
| siehe [[SQL:Einfügen]]
| |
| | |
| ==Ändern von Datensätzen (<code>UPDATE</code>)==
| |
| <syntaxhighlight lang="sql">
| |
| UPDATE Vorlesung
| |
| SET VorlNr = VorlNr + 1000,
| |
| PersNr = 20
| |
| WHERE PersNr = 15;
| |
| </syntaxhighlight>
| |
| ändert alle Datensätze, für die <code>PersNr</code> den Wert <code>15</code> hat. Der Wert von <code>VorlNr</code> wird um <code>1000</code> erhöht und der Wert von <code>PersNr</code> auf <code>20</code> gesetzt.
| |
| | |
| Ergebnis eines nachfolgenden <code>SELECT *</code> ist, eventuell mit anderer Reihenfolge:
| |
| {| class="wikitable" | |
| |- | | |- |
| !<code>VorlNr</code>!!<code>Titel</code>
| | | [[Data Query Language|Data Query]] || DQL || Abfrage und Aufbereitung der gesuchten Informationen, wird auch als Untermenge der DML klassifiziert |
| !<code>PersNr</code>
| |
| |- | | |- |
| |<code>1000</code> | | | [[Data Manipulation Language|Data Manipulation]]|| DML|| [[Datenmanipulation]] (Ändern, Einfügen, Löschen von [[Datensatz|Datensätzen]]) und lesendem Zugriff |
| |<code>Softwareentwicklung 1</code> | |
| |<code>12</code> | |
| |- | | |- |
| |<code>1200</code> | | | [[Data Definition Language|Data Definition]] || DDL || [[Datendefinition|Definition]] des [[Datenbankschema]]s (Erzeugen, Ändern, Löschen von [[Datenbanktabelle]]n, Definition von [[Primärschlüssel]]n und [[Fremdschlüssel]]n) |
| |<code>Netzwerke 1</code> | |
| |<code>20</code> | |
| |- | | |- |
| |<code>1600</code> | | | [[Data Control Language|Data Control]] || DCL || [[Mehrbenutzersystem#Rechtemanagement|Rechteverwaltung]] |
| |<code>Algorithmen</code> | |
| |<code>12</code> | |
| |- | | |- |
| |<code>2001</code> | | | [[Transaction Control Language|Transaction Control]] || TCL || [[Transaktion (Informatik)|Transaktionskontrolle]] |
| |<code>Datenbanken</code> | |
| |<code>20</code> | |
| |- | |
| |<code>5001</code>||<code>ET</code> | |
| |<code>12</code>
| |
| |-
| |
| |<code>5022</code>||<code>IT</code>
| |
| |<code>12</code>
| |
| |-
| |
| |<code>6045</code>||<code>DB</code>
| |
| |<code>20</code>
| |
| |} | | |} |
|
| |
|
| ==Löschen von Datensätzen (<code>DELETE</code>)==
| | ; SQL |
| <syntaxhighlight lang="sql">
| | Bezeichnung SQL bezieht sich auf das englische Wort ''query'' (Abfragesprache|Abfrage) |
| DELETE FROM Vorlesung
| | * Mit Abfragen werden die in einer Datenbank gespeicherten Daten abgerufen, also dem Benutzer oder einer Anwendersoftware zur Verfügung gestellt |
| WHERE PersNr = 12;
| | * Das Ergebnis einer Abfrage sieht wiederum aus wie eine Tabelle und kann oft auch wie eine Tabelle angezeigt, bearbeitet und weiterverwendet werden |
| </syntaxhighlight>
| |
| löscht alle Datensätze, für die <code>PersNr</code> den Wert <code>12</code> hat.
| |
|
| |
|
| Ergebnis eines nachfolgenden <code>SELECT *</code>, eventuell in anderer Reihenfolge:
| | == Syntax == |
| {| class="wikitable" | | {| class="wikitable options" |
| |- | | |- |
| !<code>VorlNr</code>!!<code>Titel</code>
| | | [[SQL/Abfragen|Abfragen]] || |
| !<code>PersNr</code>
| |
| |- | | |- |
| |<code>1200</code> | | | [[SQL/Einfügen|Einfügen]] || |
| |<code>Netzwerke 1</code> | |
| |<code>20</code> | |
| |- | | |- |
| |<code>2001</code> | | | [[SQL/Ändern|Ändern]] || |
| |<code>Datenbanken</code> | |
| |<code>20</code> | |
| |- | | |- |
| |<code>6045</code>||<code>DB</code> | | | [[SQL/Löschen|Löschen]] || |
| |<code>20</code>
| |
| |}
| |
| | |
| ===Zusammenfassung von <code>INSERT</code>, <code>UPDATE</code> und <code>DELETE</code>===
| |
| Verallgemeinert sehen die Änderungsanweisungen wie folgt aus.
| |
| | |
| <code>INSERT</code>-Anweisung:
| |
| <syntaxhighlight lang="sql">
| |
| INSERT INTO Quelle [(Auswahlliste)]
| |
| VALUES (Werteliste) | SELECT <Auswahlkriterien>;
| |
| </syntaxhighlight>
| |
| | |
| <code>UPDATE</code>-Anweisung:
| |
| <syntaxhighlight lang="sql">
| |
| UPDATE Quelle SET Zuweisungsliste
| |
| [FROM From-Klausel] | |
| [WHERE Auswahlbedingung];
| |
| </syntaxhighlight>
| |
| | |
| <code>DELETE</code>-Anweisung:
| |
| <syntaxhighlight lang="sql">
| |
| DELETE FROM Quelle
| |
| [WHERE Auswahlbedingung];
| |
| </syntaxhighlight>
| |
| | |
| =Datendefinition=
| |
| siehe [[SQL:Datendefinition]]
| |
| | |
| ==Programmieren mit SQL==
| |
| siehe [[SQL:Programmierung]]
| |
| | |
| == Chronologie ==
| |
| {| class="wikitable sortable"
| |
| |- | | |- |
| ! Jahr !! Beschreibung
| | | [[SQL/Datendefinition|Datendefinition]] || |
| |- | |
| | 1975 || ''SEQUEL'' = ''Structured English Query Language'', der Vorläufer von ''SQL'', wird für das Projekt [[System R]] von [[IBM]] entwickelt.
| |
| |-
| |
| | 1979 || ''SQL'' gelangt mit ''Oracle V2'' erstmals durch ''Relational Software Inc.'' auf den Markt.
| |
| |-
| |
| | 1986 || ''SQL1'' wird von [[American National Standards Institute|ANSI]] als Standard verabschiedet.
| |
| |-
| |
| | 1987 || ''SQL1'' wird von der [[Internationale Organisation für Normung|Internationalen Organisation für Normung]] (ISO) als Standard verabschiedet und 1989 nochmals überarbeitet.
| |
| |-
| |
| | 1992 || Der Standard ''SQL2'' oder ''SQL-92'' wird von der ISO verabschiedet.
| |
| |-
| |
| | 1999 || ''SQL3'' oder ''SQL:1999'' wird verabschiedet. Im Rahmen dieser Überarbeitung werden weitere wichtige Features (wie etwa [[Datenbanktrigger|Trigger]] oder rekursive Abfragen) hinzugefügt.
| |
| |-
| |
| | 2003 || ''SQL:2003''. Als neue Features werden aufgenommen [[SQL/XML]], Window functions, Sequences.
| |
| |-
| |
| | 2006 || ''SQL/XML:2006''. Erweiterungen für [[SQL/XML]]<ref name="SQLXML2006">{{Literatur |Titel=SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme |Autor=Michael Wagner |Datum=2010 |Verlag=Diplomica Verlag |ISBN=3-8366-9609-6 |Seiten=100}}</ref>.
| |
| |-
| |
| | 2008 || ''SQL:2008'' bzw. ISO/IEC 9075:2008. Als neue Features werden aufgenommen INSTEAD OF-Trigger, TRUNCATE-Statement und FETCH Klausel.
| |
| |-
| |
| | 2011 || ''SQL:2011'' bzw. ISO/IEC 9075:2011. Als neue Features werden aufgenommen „Zeitbezogene Daten“ (PERIOD FOR). Es gibt Erweiterungen für Window functions und die FETCH Klausel.
| |
| |-
| |
| | 2016 || ''SQL:2016'' bzw. ISO/IEC 9075:2016. Als neue Features werden aufgenommen JSON und „row pattern matching“.
| |
| |-
| |
| | 2019 || ''SQL/MDA:2019''. Erweiterungen für einen Datentyp „mehrdimensionales Feld“.
| |
| |} | | |} |
|
| |
|
| ==Sprachstandard==
| | <noinclude> |
| siehe [[SQL:Standards]]
| |
|
| |
|
| ==Siehe auch== | | == Anhang == |
| | === Siehe auch === |
| | {{Special:PrefixIndex/{{BASEPAGENAME}}/}} |
|
| |
|
| *[[Data Manipulation Language]]
| | === Links === |
| *[[Data Definition Language]]
| | ==== Weblinks ==== |
| *[[Data Control Language]]
| |
| *[[Transaction Control Language]]
| |
| *[[SQL-Injection]]
| |
| *[[SchemaSQL]]
| |
| *[[Continuous Query Language]]
| |
| *[[Liste der Datenbankmanagementsysteme]]
| |
| *[[Bereichsabfrage]]
| |
|
| |
|
| ==Einzelnachweise==
| |
| <references />
| |
| [[Kategorie:SQL]] | | [[Kategorie:SQL]] |
| [[Kategorie:Abkürzung]] | | [[Kategorie:Abkürzung]] |
| | |
| | </noinclude> |