Modul C3: Structured Query Language

Werbung
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
ARIS II - Modellierungsmethoden, Metamodelle
und Anwendungen
C3: Structured Query Language
Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse
erworben: Sie können
•
•
•
•
•
elementaren Aufbau der Datenbanksprache SQL erläutern.
die grundlegenden Befehle der Datenbanksprache SQL anwenden.
Tabellen oder Benutzersichten erzeugen und beschreiben.
aus bestehende Tabellen durch Datenabfragen benötigte Informationen
abfragen.
Benutzersichten für Zielgruppen erzeugen.
Keywords: Structured Query Language, Data Description Language, Data
Manipulation Language, Query Language, Datendefinitionssprache, Datenabfragesprache, Datenmanipulationssprache.
3.1.1 Einteilung der Datenbanksprachen
Ein
Datenbanksystem
besteht
aus
einer
Datenbank,
einem
Datenbankverwaltungssystem und einer Kommunikationsschnittstelle. In einer
Datenbank lassen sich umfangreiche Daten- bestände (Informationsbestände)
langfristig speichern und verwalten. Die gespeicherten Daten werden vom
Datenbankverwaltungssystem verwaltet und kontrolliert. Das Arbeiten mit einer
Datenbank wird über eine Kommunikationsschnittstelle weitgehend durch
Datenbanksprachen gewährleistet [16].
Zur Erfüllung seiner Aufgaben muß das Datenbanksystem mit der Umwelt
kommunizieren können. Zur Durchführung der Kommunikation mit einem
Datenbanksystem ist eine Sprache [44] notwendig.
Allgemein unterscheidet man hierbei:
• eine Sprache zur Beschreibung einer Datenbank (Datenbeschreibungssprache DDL),
• eine Sprache, die das Arbeiten mit einer Datenbank unterstützt
(Datenmanipulationssprache DML)
• und eine (Abfragesprache (QL), um Daten aufzufinden und selektiv
darzustellen.
Dieser Zusammenhang wird Ihnen noch einmal in der Animation verdeutlicht.
Version vom 03.04.2002
Seite 1 von 6
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
Animation: Structured Query Language
Das Arbeiten mit einer Datenbank wird über eine Kommunikationsschnittstellen
weitgehend mit Datenbanksprachen gewährleistet.
Zur Erfüllung seiner Aufgaben muß das Datenbanksystem mit seiner Umwelt
kommunizieren können. Zur Durchführung der Kommunikation mit einem
Datenbanksystem ist eine Sprache notwendig, die z. B. im Dialog vom
Datenbankbenutzer genutzt werden kann. Allgemein unterscheidet man hierbei
einerseits eine Sprache, die zur Beschreibung einer Datenbank dient
(Datenbeschreibungssprache), und andererseits eine Sprache, die das Arbeiten mit
einer Datenbank unterstützt (Datenmanipulationssprache).
Hinzu kommt in den meisten Fällen eine Abfragesprache um ad-hoc-Abfragen zu
realisieren.
Die Datenbeschreibungssprache (Data Description Language (DDL) auch
Datendefinitionssprache
genannt),
ist
entweder
Teil
der
allgemeinen
Datenbanksprache
oder
eine
eigene
Sprache.
Zur
logischen
Datenbankbeschreibung stehen Kommandos zum Aufbauen, Verändern und
Löschen des Datenmodells, z. B. einer Relation, zur Verfügung.
Sprachen zum direkten Arbeiten mit der Datenbank, d. h. zur Manipulation der
gespeicherten Datenobjekte, werden als Datenmanipulationssprachen (Data
Manipulation Language (DML)) bezeichnet. Sie bieten die grundlegenden
Operationen an
·
zum Zugriff auf Datenobjekte,
·
zur Neuaufnahme von Datenobjekten,
·
zum Ändern und
·
zum Löschen bestehender Datenobjekte.
Im Datenbankbereich haben sich für ad-hoc Auswertungen sog-nannte
Abfragesprachen (Query Languages) durchgesetzt. Einfache Abfragesprachen
lassen sich ohne spezielles Wissen über Datenbanksysteme von Endbenutzern
verwenden.
Im funktionellen Bereich stellen sie jedoch i. d. R. nur eine Untermenge der zum
Datenbanksystem gehörenden DML-Operationen dar.
Im Laufe der Zeit entwickelten sich jedoch daraus die heute teilweise universell
einsetzbaren Datenbanksprachen der 4. Generation, wie die in diesem Tutorial
beschriebene Structured Query Language (SQL).
Version vom 03.04.2002
Seite 2 von 6
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
3.1.2 Regeln für die SQL Eingabe
Bei der Eingabe von SQL-Anweisungen sind einige Regeln zu beachten:
•
•
•
•
Eine SQL-Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben
werden.
Die Anweisung wird mit einem Semikolon abgeschlossen.
SQL ignoriert Groß- und Kleinschreibung bei SQL-Schlüsselwörtern,
Tabellennamen und Spaltennamen.
Bei Zellinhalten in Tabellen wird aber in Groß- und Kleinschreibung
unterschieden.
Bevor Sie konkrete SQL-Anweisungen eingeben können, bedarf es der Kenntnis der
Syntax der Anweisungen. Ähnlich wie in der deutschen Grammatik, in der man
Subjekt, Prädikat und Objekt benötigt, um einen vollständigen Satz zu bilden, braucht
die SQL-Sprache für eine vollständige Anweisung Befehle und Ausdrücke. Die
Ausdrücke geben nähere Erläuterungen zu den Befehlen. Sie beinhalten z.B. die
Tabellennamen, Feldnamen, Bedingungen und Beziehungen.
Zur übersichtlicheren Darstellung der Syntax werden folgende Vereinbarungen
getroffen:
SQL-Schlüsselwörter werden in Großbuchstaben dargestellt.
[] Der Ausdruck innerhalb der eckigen Klammer ist optional und kann evtl. entfallen.
Die Klammern werden nicht mit eingegeben.
{} Zusammengehörige Gruppen werden durch geschweifte Klammern umschlossen.
Die Klammern werden nicht mit eingegeben.
() Runde Klammern müssen dort eingegeben werden, wo sie in der Syntax angeführt
sind.
| Der senkrechte Strich trennt alternative Ausdrücke. Von den Alternativen ist jeweils
nur eine zu nutzen.
... Wiederholung
Auf den folgenden Seiten werden Ihnen die wichtigsten SQL-Anweisungen kurz
vorgestellt
Version vom 03.04.2002
Seite 3 von 6
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
3.2.1 Datenbeschreibungssprache (DDL)
CREATE TABLE
Grundlage eines Datenbanksystems ist die Datenbasis. Diese besteht aus Tabellen
mit unterschiedlichen Feldern, die nach den Erfordernissen des Benutzers
eingerichtet werden. Deshalb wird zunächst die Syntax der SQL-Anweisung zur
Erstellung von Tabellen vorgestellt.
Mit der Anweisung CREATE TABLE kann man eine neue Tabelle anlegen. In der
Anweisung wird dem Datenbanksystem mitgeteilt,
• welche Namen die neue Tabelle bekommt,
• wie die Spalten der Tabelle heißen,
• in welcher Reihenfolge die Spalten angeordnet sind,
• welche Datentypen mit den Spalten verbunden werden und
• weitere Angaben, die das System in die Lage versetzen, bei späteren
Einfügungen, Änderungen oder Löschungen von Daten dieser Tabelle die
Korrektheit der Aktionen zu überprüfen [1].
ALTER TABLE; DROP TABLE
Die Beschreibung von Tabellen kann in gewissem Rahmen interaktiv geändert
werden. So kann durch die Anweisung ALTER TABLE bspw. eine Spalte zu einer
bestehenden Tabelle hinzugefügt werden. Das Löschen einer Tabellenspalte wird
üblicherweise nicht unterstützt, um Inkonsistenzen der Datenbank vorzubeugen [1].
Wird eine Tabelle nicht mehr benötigt, so kann sie mit der Anweisung DROP TABLE
gelöscht werden. Bei den hier beschriebenen Tabellen handelt es sich um
sogenannte reale Tabellen. Diese werden physisch auf dem Datenträger gespeichert
und stehen dauerhaft zur Verfügung.
CREATE INDEX
Beim Zugriff auf die Zeilen einer Tabelle muß diese durchsucht werden. Wird ein
direkter Zugriff auf die Zeilen über die Werte in vorgegebenen Spalten gewünscht, so
muß ein Index (bzw. mehrere Indizes) für diese Spalten eingerichtet werden. Ein
solcher Index dient nicht nur zum direkten Zugriff auf die Zeilen, sondern
beschleunigt auch viele Anfragen an diese Tabelle, die von dem Index Gebrauch
machen können. Im Index werden in schnell zugreifbarer Organisation die
Spaltenwerte und die Speicherplätze der zugehörigen Zeilen abgelegt [1].
In der Regel sollte man die Schlüsselattribute indizieren. Das zusätzliche Indizieren
von Nicht-Schlüsselattributen ist dann sinnvoll, wenn man damit die Suche nach
bestimmten Datensätzen beschleunigt und die Sortierung schneller macht. Es sollten
daher Felder, die häufig zum Suchen nach Daten verwendet werden, einen Index
enthalten. Beachten Sie aber, daß zu viele Indizes das Aktualisieren von
Datensätzen verlangsamt.
Es können Indizes auf der Basis eines einzelnen Feldes oder mehrerer Felder erstellt
werden. Indizes auf Basis mehrerer Felder ermöglichen die Unterscheidung
zwischen Datensätzen, deren erstes Feld den selben Wert aufweist.
Mit der Anweisung CREATE INDEX kann man einen neuen Index für eine bereits
vorhandene Tabelle erstellen. Ebenso wie Tabellen können Indizes auch wieder
entfernt werden. Hierzu dient der Befehl DROP TABLE.
Version vom 03.04.2002
Seite 4 von 6
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
3.2.2 Datenmanipulationssprache (DML)
INSERT INTO
Nachdem die Voraussetzungen für die Dateneingabe geschaffen wurden, können
jetzt Datensätze erfaßt werden. In SQL werden die Datensätze eingefügt. Das
Einfügen eines neuen Datensatzes in eine Tabelle erfolgt mit der Anweisung
INSERT. Die INSERT-Anweisung kann auch mit einer SELECT-Klausel kombiniert
werden.
UPDATE
Mit dem Befehl UPDATE können Werte in Feldern geändert werden.
DELETE
Wird ein Datensatz nicht mehr benötigt, so sollte er gelöscht werden, um
Speicherplatz zu sparen. Mit der Anweisung DELETE werden Datensätze aus einer
oder mehreren in der FROM-Klausel aufgeführten Tabellen gelöscht, sofern diese die
in der WHERE-Klausel angegebenen Bedingungen erfüllen. Wird keine WHEREKlausel angegeben, werden alle Datensätze der Tabelle gelöscht. Das Löschen von
Datensätzen ist irreversibel.
Version vom 03.04.2002
Seite 5 von 6
ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen – Druckversion Lerneinheiten
Modul C3: Structured Query Language
3.2.3 Datenabfragesprache (QL)
Abfrage mit der SELECT-Funktion
Entscheidende Bedeutung in einem Datenbanksystem hat das "Retrieval" von Daten,
das Wiederauffinden oder Selektieren. Hierzu dient die SELECT-Anweisung. Diese
Anweisung ist so aufgebaut, daß die Eigenschaften der zu suchenden Daten
beschrieben werden, nicht hingegen die der physischen Speicherung. Man sagt, was
gesucht wird, nicht wie. Damit ist ein wesentlicher Teil zur Unabhängigkeit vom
jeweiligen Speichermedium erreicht. Jede SELECT-Anweisung erzeugt eine
Ergebnistabelle.
Unterabfragen
Zudem lassen sich Unterabfragen generieren, indem man zwei SELECTAnweisungen ineinander verschachtelt.
Verwendung von Klauseln
In manchen Fällen möchte der Benutzer in der Ergebnistabelle Zeilen mit gleichen
Werten zusammenfassen. Das Problem taucht auf, wenn beispielsweise eine Liste
erzeugt werden soll mit den Studenten, die Klausuren geschrieben haben. Bei einer
normalen Abfrage würden Studenten, die in mehreren Klausuren angetreten sind,
mehrfach in verschiedenen Zeilen auftauchen und die Tabelle daher unübersichtlich
erscheinen lassen. Die GROUP BY-Kausel innerhalb einer SELECT-Anweisung
ermöglicht jedoch eine Zusammenfassung oder Aggregatbildung. Dabei sind in der
Ergebnistabelle außer denjenigen Spalten, die zur Gruppierung herangezogen
werden, nur Spalten zugelassen, die durch Spaltenfunktionen erzeugt wurden.
Version vom 03.04.2002
Seite 6 von 6
Herunterladen