SQL-Einführung: Unterschied zwischen den Versionen

Aus IV1
Zeile 47: Zeile 47:


* Ein SQL-Befehl wird vom Benutzer geladen oder eingegeben und auf Befehl direkt verarbeitet. Das Ergebnis wird z. B. als Liste ausgegeben (''interpretierendes SQL'').
* Ein SQL-Befehl wird vom Benutzer geladen oder eingegeben und auf Befehl direkt verarbeitet. Das Ergebnis wird z. B. als Liste ausgegeben (''interpretierendes SQL'').
* Die SQL-Befehle sind in einem mittels Programmiersprache (z.B. Java, C++) erstellten Programm eingebettet. (''embedded SQL'')
* Die SQL-Befehle sind in einem mittels Programmiersprache (z. B. Java, C++) erstellten Programm eingebettet (''embedded SQL'').


Die auf dem Markt angebotenen Datenbank-Softwarepakete (SQL-Implementierungen) stellen in der Regel auch Ergänzungen der SQL durch Sprachzusätze (z. B. JDBC) zur Verfügung. Trotz ANSI- und ISO-Normung ist SQL in einer Reihe von Datenbank-Softwarepaketen im Detail unterschiedlich implementiert, d.h. nicht alle SQL-Anweisungen sind auf allen Datenbank-Implementierungen ausführbar.
Die auf dem Markt angebotenen Datenbank-Softwarepakete (SQL-Implementierungen) stellen in der Regel auch Ergänzungen der SQL durch Sprachzusätze (z. B. JDBC) zur Verfügung. Trotz ANSI- und ISO-Normung ist SQL in einer Reihe von Datenbank-Softwarepaketen im Detail unterschiedlich implementiert, d.h. nicht alle SQL-Anweisungen sind auf allen Datenbank-Implementierungen ausführbar.

Version vom 17. September 2009, 08:05 Uhr

<yambe:breadcrumb>SQL|SQL</yambe:breadcrumb>

Die selbständige Abfrage von relationalen Datenbanken gehört in zunehmendem Maße zum Repertoire qualifizierter Arbeitsplätze, z. B. im Controlling, Marketing oder Personalwesen. Die spontane, unmittelbare Nutzung von relationalen Datenbanken durch den Endbenutzer ist für die Vorbereitung einer Vielzahl von betrieblichen Entscheidungen unabdingbar geworden. Diese spontane Nutzung ist die Voraussetzung, um aus Daten mit Hilfe von weiteren Analysewerkzeugen Entscheidungsgrundlagen zur Unternehmenssteuerung zu schaffen. Zu einer modernen Standardausbildung von Wirtschaftswissenschaftern im Bereich der Informationsverarbeitung zählt daher auch das Beherrschen wichtiger SQL-Befehle und darauf aufbauender Abfragesysteme.

Bevor man mit SQL zu arbeiten beginnt, sollte man die grundsätzliche Logik von relationalen Datenbanken verstanden haben. Auf grundlegende Begriffe wie verbundene Tabellen, Datensätze, Felder, Zeilen, Spalten usw. wird hier nicht mehr eingegangen, sondern die Abfragesprache SQL, die zur Manipulation von Datenbanken dient, gezielt behandelt.

Funktionen eines DBMS

Ein Datenbank-Management-System unterstützt das Erstellen von Tabellen mit deren Feldern, das Erstellen von Views (künstlichen Tabellen, welche die Sicht der Benutzer abbilden) und Indizes. Indizes beschleunigen vor allem die Zugriffszeit und den Sortierprozess.

Eine View könnte z. B. folgendermaßen aussehen:

  • Kundenumsätze (Kunde.Nr, Kunde.Nachname, PLZ.Ort, SUMME(Auftragpos.Menge * Buch.Preis)

Ergänzt um Sortierkriterien und zeitlich/regionalen Einschränkungen (Selektion) kann diese View (künstliche Tabelle) unter dem Namen Kundenumsätze abgespeichert und durch Aufruf jederzeit auch von "Nichtprogrammieren" aktiviert werden.

Weitere Funktionen eines DBMS sind:

  • Regelungen bei Concurrency (Mehrfachzugriff)
  • Security: Wer darf welche Operation in welchen Objekten ausführen?
  • Integrity: Einschränkungen zur Aufrechterhaltung der Korrektheit der Daten
  • Back-up: Datensicherung
  • Restart: Neustart nach Fehlern oder Änderungen
  • Recovery: Wiederherstellung des fehlerfreien Zustandes

Hierzu kommen die Anwendung von Verwaltungsinstrumenten (Führen des Systemkataloges, insb. Tabellen, Tabellennamen, Eignernamen) sowie Instrumente zur Optimierung der Zugriffszeit.

Der Prozess der Entwicklung einer Datenbank (z. B. die Datenmodellierung) kann teilweise durch den Einsatz von einschlägigen Softwareentwicklungswerkzeugen (CASE-Tools, Computer Aided Software Engineering-Tools) unterstützt oder automatisiert werden.

Sichten auf eine Datenbank

Den unterschiedlichen Aufgaben und Sichtweisen im Zusammenhang mit der Planung, Implementierung und dem Betrieb einer Datenbank entsprechend sind zweckmäßigerweise drei Schichten auseinander zuhalten. Es sind dies das konzeptionelle Schema, die Benutzersichten und das interne Schema.

Die globale, logische Datenbankbeschreibung wird als konzeptionelles Schema (logische Datensicht) bezeichnet. Das bei den Normalformen vorgestellte endgültige Modell, ergänzt durch nähere Angaben über die Felder, kann als konzeptionelles Schema angesehen werden.

Die einzelnen Benutzer in den unterschiedlichen Fachabteilungen bzw. die Anwendungsprogramme aus den verschiedenen Bereichen eines Unternehmens benötigen jeweils voneinander unterschiedliche Ausschnitte aus der Wirklichkeit und somit auch aus dem konzeptionellen Schema. Diese unterschiedlichen Sichten des Datenmodells werden als Benutzersichten, Subschemata oder externe Schemata bezeichnet. Die zuvor entwickelte View kann als Beispiel für ein Subschema gelten.

Nach Festlegung des konzeptionellen Schemas bzw. der externen Schemata werden die physische Anordnung der Daten auf den Speichermedien und die Zugriffspfade gestaltet. Ergebnis ist das interne Schema. Hier geht es insbesondere um die Ausnutzung von Speichern sowie um die Optimierung von Zugriffszeiten.

Da die Verbindung des internen Schemas mit den betrieblichen Aufgaben und Geschäftsmodellen kaum mehr auszumachen ist, entzieht es sich jeglicher Darstellung in dieser Dokumentation.

SQL

SQL (Structured Query Language) ist die Standard-Datensprache für relationale Datenbankverwaltungssysteme (RDBMS) und Desktop-Datenbanken wie z. B. MS Access. SQL ist nicht prozedural und setzt eine einfache und einheitliche, normalisierte tabellarische Datenstruktur voraus. Die durch das American National Standards Institute (ANSI) normierte Sprachschnittstelle SQL wird von einer Reihe einschlägiger Softwarepakete verwendet.

SQL kann interpretierend oder als embedded-SQL verwendet werden:

  • Ein SQL-Befehl wird vom Benutzer geladen oder eingegeben und auf Befehl direkt verarbeitet. Das Ergebnis wird z. B. als Liste ausgegeben (interpretierendes SQL).
  • Die SQL-Befehle sind in einem mittels Programmiersprache (z. B. Java, C++) erstellten Programm eingebettet (embedded SQL).

Die auf dem Markt angebotenen Datenbank-Softwarepakete (SQL-Implementierungen) stellen in der Regel auch Ergänzungen der SQL durch Sprachzusätze (z. B. JDBC) zur Verfügung. Trotz ANSI- und ISO-Normung ist SQL in einer Reihe von Datenbank-Softwarepaketen im Detail unterschiedlich implementiert, d.h. nicht alle SQL-Anweisungen sind auf allen Datenbank-Implementierungen ausführbar.

SQL-Abfragen, oft auch SQL-Statement oder Query genannt, sind kleine Befehlszeilen, die an die Datenbank oder an den Datenbankserver geschickt und dort abgearbeitet werden. Als Ergebnis bekommt man entweder eine bestimmte Anzahl von Datensätzen zurück oder führt Änderungen an der Datenbank aus. SQL für sich selbst hat keinen Sinn; meist wird es in Verbindung mit anderen Programmier- oder Scriptsprachen verwendet (wie z. B. PHP, JSP und ASP.NET), die dann mit den Ergebnisdaten weiterarbeiten.

Im Gegensatz zu einer Programmiersprache gibt es Befehle der Art Tabelle zeigen in SQL nicht. Eine SQL Abfrage würde etwa so aussehen:

  • ZEIGE FELD Name IN Tabelle MIT BEDINGUNG Name=‘Mustermann’

oder auf Englisch:

  • SELECT Name FROM Table WHERE Name='Mustermann'

Letzteres wäre bereits eine voll funktionsfähige SQL-Abfrage. SELECT leitet die Art der Anweisung ein. FROM gibt an, auf welche Tabelle der Datenbank die Select-Anweisung angewendet werden soll und der letzte Teil WHERE wäre bereits eine zusätzlich eingebaute Bedingung, die nur bestimmte Datensätze aus einer Tabelle selektiert.

Die Logik dieser Syntax wird sich in den Kapiteln der SQL-Grundbefehle und den weiteren Beispielen verdeutlichen.