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