|
Standard Query Language (SQL) ist eine standardisierte
'Sprache' zur Erstellung, Wartung und Abfrage von Datenbanken. SQL ist ein Offener Standard, daher nicht lizenzpflichtig und an keinen Hersteller gebunden. |
Praktisch alle professionellen Datenbanken verwenden den SQL-Standard, allerdings in verschiedenen 'Dialekten' je nach Hersteller. Wenn nicht anders erwähnt, gelten alle hier erwähnten Angaben für MySQL. |
| Geschichte | Eine Erfolgs-Story |
| Architektur | PC-Datenbank, Datenbank-Server, Cloud-Computing |
| SQL-Übersicht | Daten-Struktur, Änderung von Daten, Suche nach Daten |
Spezielle Themen: |
|
| Datum & Zeit | Spezielle Feld-Typen und Funktionen |
| Dump | Struktur und Daten sichern, transportieren und übersiedeln |
| Kommentare | Nicht ausführbare Anweisungen (in Batch-Dateien) |
| RegExp | Reguläre Ausdrücke für Analyse und Verarbeitung von Strings (SQL) |
| Sortierung | Sortier-Regeln (Collation), Sortierung und Gruppierung |
| Typen | Variablen-Typen in MySQL |
| Zahlensysteme | Hexadezimal, Dezimal, Octal, Binär - Eingabe und Ausgabe |
| Verwandte Themen | Zufalls-Zahlen, MySQL-Server (Windows) |
| Links |
Ausgewählte
|
Die Geschichte von SQL |
|
Um 1970 wurde von IBM im
Rahmen der "System R" Forschungsgruppe der erste Prototyp eines
SQL-Vorläufers SEQUEL entwickelt.► 1986 definierte das American National Standards Institute (ANSI) SQL als Standard X3.135-1986. |
1987 wurde der Standard erstmals international von der International Organization for
Standardization (ISO) als ISO 9075-1987
definiert. Zu diesem Zeitpunkt verwendeten die DB-Hersteller bereits mehrere
SQL-"Dialekte". Der Standard orientierte sich an jenen SQL-Elementen,
welche in gleicher Form von allen Herstellern unterstützt wurden und
entsprach daher einem Minimal-Standard, über den jede erhältliche
DB-Software hinausging.
|
| ► Damals hielt man Programmiersprachen noch für langlebige Standards, daher wurde der SQL-Zugriff vom ANSI auch in den (von IBM verwendeten) Programmiersprachen COBOL, FORTRAN, Pascal und PL/I geregelt. | ► 1989 definierte die ISO den Standard IEC 9075:1989 als Nachfolger (SQL 89). Im gleichen Jahr publizierte auch das ANSI den Nachfolge-Standard X3.135-1989, welcher u.a. den SQL-Zugriff in den Programmiersprachen Ada und C regelte. |
►
1992 definierte die ISO den
Standard IEC 9075:1992 als Nachfolger (SQL 92).
ANSI publizierte X3.135-1992.
IBM schloss sich mit Fujitsu, HP und Hitachi zur OpenGroup
(XOpen)
zusammen. Dort werden die SQL-Standards dieser Hersteller koordiniert.
Man wollte besondere Rücksicht auf die Eigenheiten der Sponsoren nehmen
und entwickelte daraus ein Schichten-Konzept: 1992 erschien
Entry SQL als unterste Ebene.Die nächste Ebene - Intermediate SQL - war großteils vor-definiert, d.h. noch nicht praktisch realisiert. Damit wurde ein vernünftiges Entwicklungsziel gesetzt und nicht der Standard an die reale Entwicklung angepasst. |
►
Das US-National Institute of Standards and Technology (NIST) entwickelte
für SQL-89 Tests: FIPS 127-1 für SQL-89, FIPS 127-2 für SQL-92,
später FIPS 127-2). ► 1993 startete XOpen die Entwicklung seiner nächsten SQL Common Application Environment Specification, mit dem Ziel, die nächste Generation (SQL 3) abzudecken. |
|
►
2003: Die derzeit
aktuellen Standards der ISO stammen aus dem Jahre 2003. Standard ISO/IEC 9075-x:YYYY (Information technology - Database languages - SQL) enthält 14 Teile (x=1..14, YYYY=1999..2003). Standard ISO/IEC 9579:2000 regelt den Remote database access for SQL. Standard ISO/IEC 13249-x:YYYY (Information technology -- Database languages -- SQL multimedia and application packages) enthält 6 Teile (X=1..6, YYYY=2002..2003). |
Heute ist SQL einer der ganz wenigen Standards, die international praktisch
ohne Ausnahme beachtet werden. Je nach Hersteller gibt es einige SQL-Dialekte: Sie enthalten geringfügige Abweichungen, meist als zusätzliche Optionen). Daher ist es für AnwenderInnen und EntwicklerInnen vergleichsweise einfach, den Hersteller der SQL-Datenbank oder die Programmiersprache für die Zugriffs-Programme zu wechseln - genau das sollte ein guter Standard garantieren. |
XQuery(XML Query Language) ist ein Mitglied der → XML-Familie, welches auf Datenbank-Bedienung spezialisiert ist. Dabei wird ein Prozessor ähnlich → XSL verwendet, um SQL-Befehlstexte zu erzeugen. |
Alle modernen Programmiersprachen bieten Unterstützung für SQL, meist auch schon für XQuery. Heute sind diese Funktionen in leicht austauschbare Module organisiert. |
Datenbank-Achitektur: PC-Lösung, Datenbank-Server, Cloud |
|
Alleinstehende PC-LösungenIn der IT-Urzeit wurden Datenbanken an fast jedem einzelnen Groß-Computer betrieben. Später wurden kleine Datenbanken auch auf den ersten Personal Computern installiert. Solche alleinstehenden Lösungen kommen auch heute noch ohne Netzwerk aus.Für eine alleinstehende PC-Datenbank kann man die meisten theoretischen Regeln vernachlässigen und sich ganz auf rasche Entwicklung und einfache Anwendung konzentrieren. Eine Tabelle typischer Personen-Daten mit Adressen und Telefon kann man auch ohne Theorie, d.h. mehr oder weniger intuitiv erstellen. |
● Einfache Einzel-Lösungen sind die Stärke typischer PC-Programme, z.B. LibreOffice-Base (kostenfrei), MS-Access, FileMaker, ... Solche Programme bieten neben der Verwaltung der Daten die Möglichkeit zur Gestaltung eines einfachen User-Interface. Die Datenbank-Sprache SQL hat in diesen Fällen keine oder nur untergeordnete Bedeutung. In diesem Web sind vorläufig keine weiteren Informationen zu Datenbank Einzel-Lösungen vorgesehen. ♣ Tipp: Investieren sie nur die unbedingt notwendige Arbeit und versuchen sie besser nicht, derartige Lösungen in ein Netzwerk zu portieren. Wenn sich ein Bedarf abzeichnet, die Daten durch mehrere AnwenderInnen zu verwenden, dann ist meist jede weitere Investition in eine PC-Lösung verloren. |
Datenbank-ServerTypische (professionelle) Datenbank-Lösungen werden von einem DB-Server-Programm zentral verwaltet und in einem lokalen Netwzerk (LAN) und/oder im Internet verwendet.Das ist ohne einen eigenen Server-PC kaum möglich. Ein typischer Server-PC zur Versorgung eines kleinen Netzwerks braucht lediglich die Leistung jedes anderen typischen Arbeits-PC. Am Server-PC befindet sich kein Arbeitsplatz, dort werden Dienstleistungs-Programme für alle im Netzwerk arbeitenden AnwenderInnen eingerichtet. Mindestens erforderliche Server-Programme sind → Webserver und → Datenbank-Server. Dazu kommen meistens noch weitere praktische Dienste: Printserver, → Fileserver, → Zeitserver, Mailserver, ... |
Das gesamte User-Interface zur Bedienung einer Datenbank ist auf (dynamischen) Webseiten untergebracht. Dazu braucht man am Server mindestens eine Programmiersprache, deren Programme als Webserver-(CGI)-Hilfsprogramme zwischen AnwenderInnen und Datenbank vermitteln. Solche Programme sind z.B. → Java, → Perl, → PHP, ... Die Zugangs-Rechte werden zentral (Name und Passwort, evtl. → IP-Adresse) verwaltet. Das folgende Diagramm zeigt den Weg eines typischen Datenbank-Auftrags vom Arbeits-PC zum Datenbank-Server und danach den Weg der Ergebnis-Daten zurück zum Arbeits-PC. |
|
An dieser Stelle ist eine →
SVG Objekt-Grafik eingebettet. Sie wird von allen modernen Browsern angezeigt. Lediglich
veraltete Versionen des MSIE-Browsern beherrschen kein SVG. Dieser Text wird nur angezeigt,
wenn es Hinweise gibt, dass die SVG-Grafik evtl. nicht angezeigt wird.
Er verschwindet beim Anklicken.
|
|
|
Hinweise zum Diagramm: • Die strichlierten Linien sollen andeuten, dass sich die beiden Server-Programme am gleichen PC befinden können oder (in größeren Organisationen) auf getrennten PC. |
• Das Diagramm zeigt die meist-verwendete Programmiersprache PHP. Alternativ kann man auch jede andere als Webserver-Hilfsprogramm nutzbare Programmiersprache einsetzen. ♦ Details zur Datenbank-Programmierung mit PHP und Perl |
Vorteile der Standard Server-DatenbankDas im Diagramm vorgestellte System aus Netzwerk, Webserver und Datenbank-Server wird in dieser Form besonders häufig eingesetzt. Es stützt sich auf bewährte Standard-Bausteine und wird meist als → LAMP-Server bezeichnet: • Alle Software-Komponenten sind kostenfrei (!) und in professioneller Qualität verfügbar.• Da man keine besondere Client-Software braucht, fallen auch die Kosten der Software an den Arbeits-PC sowie deren Installation und laufende Wartung weg. Man kann die Datenbank ohne Installation an jedem beliebigen PC des Netzwerks verwenden, auch an einem neu hinzugekommenen. • Es gibt keine Bindung an einen Hersteller oder ein Produkt, weil alle Komponenten austauschbar sind. |
• Es gibt zahlreiche fertige Web-Programm-Pakete, die man auf einer vorhandenen Standard LAMP-Architektur einsetzen kann. Viele dieser Pakete sind darüber hinaus kostenfrei. Ein Web-Programm-Paket besteht aus zahlreichen einzelnen Script-Programmen, meist in der Programmiersprache PHP. Die Datenbank ist vor-programmiert und wird bei der Installation automatisch installiert und konfiguriert. Die gesamte Installation erfordert selten mehr als 1 Stunde. danach ist das Programm im gesamten Netzwerk verwendbar. Beispiele für Web-Programm-Pakete: Content Management (CMS), GroupWare (gemeinsame Kontakte, Termine, ...), Projekt-Management, Diskussions-Foren, Bild- und Ton-Archive, Betriebs-Verwaltung (Buchhaltung, Fakturierung, Kostenrechnung, ...) Man kann beliebig viele Web-Programm-Pakete parallel verwenden und darüber hinaus eigene Datenbank-Lösungen programmieren. |
Nachteile der Server-Datenbank• Die Installation und Konfiguration aller Komponenten erfordert fortgeschrittene Kenntnisse und einigen Aufwand (typisch: 1-2 Tage). Dazu kann man durchaus professionelle Hilfe in Anspruch nehmen. |
Nach der Inbetriebnahme fallen nur wenige einfache Wartungs-Arbeiten an. • Die Fachkenntnisse zumindest für einfache Wartungs-Arbeiten (First Level Support) sollten jedoch unbedingt 'im eigenen Hause' verfügbar sein. |
Virtuelle ServerEin virtueller Computer ist ein PC, der von einem Virtualisierungs-Programm 'simuliert' wird. Das ist kein Spielzeug, sondern ein professionelles Werkzeug der modernen Informatik. ● Es ist möglich und sehr empfehlenswert, einen virtuellen LAMP-Server als Standard-Server im eigenen lokalen Netzwerk einzusetzen. Damit kann man alle Vorteile der Standard LAMP-Architektur nutzen und deren Nachteile größtenteils vermeiden.
Bei der Konfiguration ist besoders auf eine saubere Trennung von Software und Daten zu achten:• Betriebssystem, Server-Programme, Programmiersprachen usw. werden am virtuellen PC organisiert. • Sämtliche Daten müssen sich am realen PC befinden. Auch die Datensicherung erfolgt auf einem realen Datenträger. • Der Zugriff des virtuellen Servers auf die Daten erfolgt mit den Standard-Methoden der Netzwerk-Technik, evtl. auch mit der 'Shared-Folder'-Option der Virtualisierungs-Programme. |
Vorteile eines virtuellen Servers: • Für Installation und Konfiguration der gesamten Server-Software ist kein Fachwissen erforderlich. Der virtuelle Server (lediglich eine einzige größere Datei) wird fertig eingekauft oder sogar kostenfrei aus dem Internet geladen. Man kann sich auf den geringen Aufwand für die laufende Wartung beschränken. • Wenn ein Problem auftaucht oder sogar der virtuelle Server beschädigt wird, dann löscht man dessen Datei und ersetzt sie durch eine neue Kopie, die nach wenigen Minuten in Betrieb gehen kann. • Das Auswechseln einzelner Komponenten ist besonders einfach: Man tauscht den virtuellen Server (eine Datei !) gegen eine neue Version. • Auch die Entwicklung neuer Komponenten vereinfacht sich: Man kann die Lösung mit einer Kopie des virtuellen Servers entwickeln und unter realen Bedingungen testen. ♦ Details zur Virtualisierung |
Cloud ComputingUnter diesem nicht ganz eindeutigen Begriff versteht man die Auslagerung von IT-Dienstleistungen. Die Wolke (Cloud) symbolisiert einen entfernten Anbieter, dessen Dienste man in Anspruch nimmt.Dahinter verbirgt sich normalerweise genau die gleiche klasssiche LAMP-Architektur wie oben vorgestellt. Der Server befindet sich jedoch nicht im eigenen lokalen Netzwerk (LAN) sondern im Internet. Für einzelne AnwenderInnen oder ganze Organisationen ergibt sich in der Anwendung kein Unterschied, mit Ausnahme der Notwendigkeit, ein sicheres verschlüsseltes Protokoll (HTTPS) an Stelle des einfachen (HTTP) zu verwenden. |
Vorteile:
•
Man spart Hardware, Software und Fachwissen für die gesamte auf diese Weise
eingekaufte IT-Leistung.• Das Angebot ist skalierbar, d.h. man kauft nur soviel ein wie notwendig, und kann das Ausmaß bei Bedarf ausweiten. • Die Verfügbarkeit (der Server-Programme) ist wegen des beim Anbieter konzentrierten Fachwissens meist höher als im eigenen Netzwerk (jedoch niemals 100% - im Vertrag verankert). Nachteile:
•
Man ist von einer funktionierenden Internet-Verbindung abhängig. Deren Verfügbarkeit
wird jedoch vom Cloud-Anbieter normalerweise nicht garantiert.• Man muss dem Cloud-Anbieter ebenso vertrauen wie z.B. einem Steuerberater. Die IT-Branche unterliegt jedoch keiner vergleichbaren gesetzlichen Regelung oder Aufsicht. Das gilt verstärkt für persönlich unbekannte, ausländische ... Anbieter. |
ExperimenteWenn sie mit wenig Aufwand einfache SQL-Experimente ausführen wollen, dann gibt es einige Möglichkeiten, kostenfrei eine minimale Entwicklungs-Umgebung am eigenen PC zu installieren.Das kostenfreie Office-Paket LibreOffice enthält u.a. ein komplettes Datenbank-Programm. Damit kann man sowohl private PC-Datenbanken erstellen, als auch vorhandene Datenbank-Server oder andere Daten-Quellen verwenden. LibreOffice-Base kann in einfachen Fällen als User-Interface zu einem SQL Datenbank-Server dienen, eine professionelle Lösung jedoch nicht ersetzen. |
ist eine Programm-Bibliothek zur Herstellung und Verwaltung von PC-Datenbanken. Man kann damit außerordentlich kompakte und effiziente lokale Lösungen erstellen. Viele professionelle Programme enthalten zur Verwaltung ihrer 'mitgebrachten' Daten-Basis SQLite als Teil-Programm. Man kann SQLite kostenfrei installieren und mit dem Firefox-Addin SQLite-Manager bedienen. Das ermöglicht Experimente mit SQL. Die Herstellung einer professionellen Einzel-PC Datenbank-Lösung mit SQLite erfordert jedoch fortgescchrittene Kenntnisse einer Programmiersprache (vorzugsweise → C/C++) und von SQL. |
SQL-Übersicht |
|
|
Die praktische Arbeit mit SQL und Datenbanken ist vergleichsweise einfach. Voraussetzung ist eine fertig eingerichtete Infrastruktur (Datenbank-Server, Webserver, PHP, phpMySQL, ...) so wie im ↑ Diagramm dieser Seite skizziert). |
Moderne SQL Server-Programme bieten eine große (und oft unübersichtliche) Vielfalt an Optionen. In diesem Webs wird auf selten verwendete Elemente verzichtet. Wenn man sich auf wenige wirklich unverzichtbare Elemente beschränkt, dann sollte auch wenig geübten EntwicklerInnen die Übersicht leichter fallen. |
SQL als Data Definition Language (DDL)Diese Gruppe von SQL-Anweisungen dient ausschließlich zur Konfiguration der Daten-Struktur, z.B. Erstellung von Datenbanken, Tabellen und Feldern und zur Festlegung ihrer Eigenschaften.Die Struktur muss vor allen anderen DB-Arbeiten eingerichtet werden. Unmittelbar danach fügt man normalerweise Test-Daten ein, um die Funktion zu überprüfen. Die Test-Daten werden vor der praktischen Inbetriebnahme wieder gelöscht. |
Die Daten-Struktur ist meist relativ langlebig: Erstens ändert sich die Struktur in der Praxis nur selten, zweitens erfordert eine nachträgliche Änderung meist aufwändige Arbeiten am User-Interface. Die Qualität der Daten-Struktur bestimmt in hohem Ausmaß den praktischen Wert der Anwendung. Die Planung und Umsetzung der Daten-Struktur erfordert das meiste Fachwissen und sollte nach Möglichkeit professionell ausgeführt werden. Je nach Datenbank-Lösung haben sie oft nur mit einigen oder gar keinen Arbeiten zur Daten-Struktur zu tun: • An der Datenbank ihres Web-Providers beschränken sich ihre Rechte und Aufgaben auf die Tabellen einer einzigen (ihrer privaten) Datenbank. • Web-Programm-Pakete sind normalerweise fertig konfiguriert. Eine Änderung der Daten-Struktur ist nicht notwendig und kann zur Unbrauchbarkeit des Programms führen. |
SQL als Data Manipulation Language (DML)In diese Gruppe von SQL-Anweisungen fällt die Erstellung neuer Datensätze und die Änderung vorhandener Daten.Dazu verwendet man nur die beiden SQL-Anweisungen insert und update Daten werden normalerweise nicht gelöscht, sondern in ein Archiv ausgelagert, wenn sie nicht mehr gebraucht werden. |
In der Praxis kann man sich auf eine einzige vor-programmierte insert-Anweisung beschränken, d.h. man kann sich das Erlernen der insert Syntax ersparen. Es bleibt daher einzig die SQL-Anweisung update, die man sich genauer ansehen muss, um Änderungen an Daten durchzuführen. |
SQL als Data Query Language (DQL)In diese Gruppe fällt lediglich die SQL-Anweisung select, die allerdings umfangreiche Möglichkeiten der individuellen Gestaltung bietet. Mit select wird die Suche nach Daten ausgeführt. |
Die Anweisung select ist die einzige, die Ergebnis-Daten zurückgibt. Alle anderen SQL-Anweisungen geben lediglich ein logisches Ergebnis zurück, aus dem man erfährt, ob die Anweisung funktioniert oder einen Fehler ergeben hat. |
|
|
Standard SQLInternational Standards Organization ( ISO ): SQL StandardsAmerican National Standards Institute ( ANSI ) Open Systems Consortium ( X/Open ) (SQL-Standard) Object-oriented Database consortium ( ODMG ) XQuery als internationaler W3C-Standard |
SQL-ReferencesIBM: DB2 SQL Reference, Sample DB tables,Microsoft SQL Server, SQL für Access & SQL-Server, VBA & SQL, Oracle Technology Network: Oracle9i Database Online Documentation SS64: Index of (Oracle) SQL Commands |
SQL Tutorials:University of California, Davis (DBIS): ORACLE SQL tutorial (download)LittleIdiot - MySQL (Guido Stepken) |
Wikipedia: SQL,
XQuery
HTML 5Offline Web Applications - Verwendung lokaler SQL Datenbanken |
|
|