13_8335_300-SQL - Offene

Werbung
Das diesem Dokument zugrundeliegende Vorhaben wurde mit
Mitteln des Bundesministeriums für Bildung und Forschung
unter dem Förderkennzeichen 16OH21005 gefördert.
Die Verantwortung für den Inhalt dieser Veröffentlichung liegt
beim Autor/bei der Autorin.
1
In diesem Abschnitt geht es um das Programmieren mit der
Programmiersprache SQL.
Im Vordergrund steht die Praxis und der Umgang mit der SQL.
Im einzelnen wollen wir dabei folgenden Fragen nachgehen:
• Was ist SQL und was ist das besondere daran?
• Wo kommt die Sprache SQL überhaupt her?
• Und natürlich die Sprache selbst. Hier ist es wichtig zum einen die Syntax
selbst zu erlernen und anhand von Übungen auch selbst anzuwenden.
Sofern Sie es nicht bereits getan haben, ist jetzt der Zeitpunkt gekommen, die
Datenbank H2 zu installieren.
Ein entsprechende Kurzanleitung finden Sie in einem gesonderten Abschnitt in
den Unterlagen.
TIPP:
• Der Abschnitt: „Überblick über die Sprache“, Listet die wichtigsten Elemente
2
in Tabellenform auf, die Sie zum Nachschlagen verwenden und ggf. ausducken sollten.
• Für Android finden Sie unter anderem folgende nützlichen Apps
a. Learn SQL : https://play.google.com/store/apps/details?id=com.sololearn.sql
b. Learn SQL – Easy Way :
https://play.google.com/store/apps/details?id=com.rfb.learnsql
Diese beiden API eignen sich sehr gut zum Nachschlagen der jeweiligen SQL
Sprach-Elemente
2
Zunächst: Was ist SQL überhaupt?
SQL ist eine Abkürzung für „Structured Query Language“
Die Sprache ist so ausgelegt, dass man
• sowohl die Tabellen in einer Datenbank anlegen und pflegen kann
• als auch die Daten in den Tabellen bearbeiten kann.
Es handelt sich um eine Programmiersprach, die speziell für die Programmierung
von relationalen Datenbanken entwickelt wurde und sich dort sehr schnell zu
einer Standard-Sprache entwickelt hat.
3
Die Anfänge von SQL gehen bis aus das Jahr 1974 zurück.
Den ersten Standard gab es 1992.
Jedoch deckt der SQL Standard nicht alles ab, was in der Praxis benötigt wird.
Daher haben viele Datenbankhersteller eigene Spracherweiterungen eingeführt.
Dies bedeutet, dass die SQL Skripte herstellerspezifisch sind und bei einem
Wechsel es DB-Herstellers angepasst werden müssen.
Innerhalb des Kurses werden wir nur auf die wichtigsten SQL StandardSprachelemente eingehen.
Das Erlernen von herstellerspezifischen Sprachelementen würde den Rahmen der
Grundlagen weit übersteigen, da wir uns dann auch mit den unterschiedlichen
Paradigmen der einzelnen Hersteller auseinandersetzen müssten.
4
Was ist nun das Besondere an SQL?
Um dies zu ergründen, schauen wir uns noch mal die unterschiedlichen Ansätze
bei den Programmiersprachen an.
Man unterscheidet im wesentlichen 2 Arten von Programmiersprachen.
Da sind zum einen die imperativen Sprachen und zum anderen die deskriptive
Sprachen:
Imperative Sprachen:
Imperative Sprachen basieren auf Sprachelementen wie Abfragen und Schleifen
etc. Dies bedeutet, das man als Programmierer / Programmiererin genau
spezifiziert, WIE der Programmablauf sein soll
Wie in der Abbildung ersichtlich wird, findet man dieses Paradigma sowohl in
klassischen prozedur-orientierten Programmiersprachen (wie zum Bespiel C ) als
auch in objekt-orientierte Programmiersprachen ( wie zum Beispiel Java, C‘#) .
Deskriptive Sprachen
5
Deskriptive Sprachen sind nicht prozedural. Sie beinhalten keine Anweisungen für
Schleifenbildung. Stattdessen stellen sie Sprachelemente bereit, die es erlauben, genau
zu spezifizieren, WAS das Ergebnis sein soll. Es bleibt dem Laufzeitsystem überlassen,
wie das Ergebnis berechnet werden soll.
SQL ist genau eine solche deskriptive Sprache. Sie wird oft als Sprache der 4ten
Generation( 4GL) bezeichnet.
5
Bevor wir uns der Syntax und einzelnen Anweisungen zuwenden, schauen wir
uns zunächst einmal an, für welche Aufgabenstellungen SQL geeignet ist bzw.
entworfen wurde.
Die Intention von SQL ist es, eine Programmiersprache bereitzustellen, die für
folgende Aufgabengebiete verwendet werden kann.
• Datenbankschema anlegen pflegen  SQL DDL – Data Definition Language
• Datenbankinhalte einfügen und bearbeiten  SQL DML – Data Manipulation
Language
• Zugriffrechte auf Tabellen verwalten  SQL DCL – Data Control Language
SQL DDL
DDL ist eine Abkürzung für „Data Definition Language“. Zu diesem Bereich
gehören alle Anweisungen, um Tabelle anzulegen, zu ändern oder zu löschen.
Es geht hier im wesentlich darum, wie kommt unser Datenmodell in die
Datenbank. Mit anderen Worten: Wie können wir einem Datenbanksystem
mitteilen, wie unser Datenmodell aussieht , damit das System die entsprechenden
Regeln verwalten und überprüfen kann.
6
SQL DML
DML ist eine Abkürzung für „Data Manipulation Language“. Zu diesem Bereich gehören
alle Anweisungen, um die Inhalte von Tabellen zu lesen, zu ändern und auch Inhalte in
Tabellen eintragen zu können.
Hier steht im Mittelpunkt:
• Daten in der Datenbank anzulegen
• Die abgelegten Daten ändern oder auch löschen zu können
• Das Suchen von bestimmten Daten innerhalb einer Datenbank
SQL DCL
DCL ist eine Abkürzung für „Data Control Language“. Zu diesem Bereich gehören alle
Anweisungen, um Zugriffsrechte für Benutzer definieren zu können.
Da nicht alle Daten einer Datenbank für alle Benutzer gleich sichtbar und zugreifbar sein
sollen, ist es notwendig einem Datenbanksystem mitzuteilen,:
• Wer darf auf eine Datenbank zugreifen  Authentifizierung
• Was darf ein Benutzer mit den Daten machen  Autorisierung
In diesem Bereich finden wir die meisten Unterschiede bei den einzelnen RDBMS
Herstellern.
6
Diese Abbildung gibt Ihnen einen Überblick über die wichtigsten SQL Befehle
in den jeweiligen Kategorien.
SQL-DDL
In diese Kategorie fallen
• CREATE TABLE  dient zum Anlegen von Tabellen (TabellenDefinitionen)
• ALTER TABLE  dient zum Ändern von Tabellen-Definitionen
• DROP TABLE  dient zum Löschen von Tabellen-Definitionen
SQL-DML
• SELECT .. FROM .. WHERE  dient zum Lesen von Daten einer oder
mehreren Tabellen
• INSERT INTO  dient zum Einfügen von Daten /Zeilen in eine Tabelle
• UPDATE  dient zum Ändern von Inhalten einer Tabelle
• DELETE FROM  dient zum Löschen von Daten/Zeilen aus einer Tabelle
7
SQL-DCL
• GRANT  dient zum Erteilen von Zugriffsrechten
• REVOKE  dient zum Entziehen von Zugriffsrechten
7
Für die Sprache selbst gelten die in der Abbildung aufgeführten Regeln.
Hinweis:
Ob bei Tabellennamen und Attributnamen die Groß- und Klein-Schreibweise
unterschieden wird oder nicht, hängt von der Einstellung des jeweiligen
Datenbanksystems ab.
In der Praxis sind Datenbanken meist so konfiguriert, dass sie „Case-Insensitive“
( Keine Unterscheidung)
8
In dieser Tabelle sehen Sie eine Liste der wichtigsten Datentypen für Attribute
einer Tabelle.
Hinweis:
Viele Hersteller haben noch weitere Datentypen, die zum Teil auch
herstellerspezifisch sind.
Nützliche Quellen
Einen Überblick über die Datentypen finden sie unter:
• http://www.w3schools.com/sql/sql_datatypes_general.asp
Angaben zum Wertebereich und Genauigkeit sind in der Dokumentation der
jeweiligen Datenbankherstellern zu entnehmen.
Hier einige Links:
• MySQL: http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html
• Oracle:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm
• MS SQL: https://msdn.microsoft.com/de-de/library/ms187752.aspx
9
• H2: http://www.h2database.com/html/datatypes.html
9
Hier sehen Sie weitere Datentypen, die in der Praxis vielfach Anwendung finden.
10
In der Praxis kommt es sehr oft vor, dass Attribute immer einen Wert haben
müssen. Damit das Datenbanksystem dies überprüfen kann, kann man bei der
Definition von Attributen angeben, dass Werte angegeben werden müssen.
Jedoch kommt es auch oft vor, dass Attribute nicht immer einen Wert haben
müssen. Damit man unterscheiden kann, ob ein Attribut einen Wert besitzt oder
nicht, gibt es die Definition von NULL. NULL ist ein ganz spezieller Wert der
anzeigt, dass KEIN WERT vorhanden ist.
Bei dem Anlegen eines Attributes für eine Tabelle kann man daher folgende
Vorgaben machen
• NOT NULL – dies bedeutet, dass NULL Werte nicht erlaubt sind. Eine
Anwendung muss daher immer einen Wert angeben.
Bei den meisten Datenbanken sind standardmäßig immer NULL Werte erlaubt
und nur in den Fällen, bei denen keine NULL Wert erlaubt ist, kann man beim
Anlegen die Bedingung „NOT NULL“ angeben.
11
In dieser Abbildung sind die wichtigsten Aussagen zur Verwendung von NULLWerten nochmals aufgeführt.
12
Wie wir später noch sehen werden, wenn es darum geht Daten zu suchen,
müssen wir bestimmte Bedingungen angeben, um zu bestimmen, für welche
Daten wir uns interessieren.
In der Tabelle sehen Sie nun die wichtigsten Vergleichsoperatoren, die
angewendet werden können.
13
In dieser Tabelle sehen Sie sogenannte Wildcard Zeichen. Diese werden
verwendet, wenn wir nach Daten in Zeichenketten suchen, die einem bestimmten
Muster unterliegen.
14
Dies Tabelle gibt Ihnen einen Überblick über die wichtigsten Funktionen, die wir
verwenden können, um Daten zu „verdichten“
Hinweis:
Eine vollständige Auflistung der H2 Funktionen finden Sie unter :
http://www.h2database.com/html/functions.html
15
In dieser Tabelle sehen Sie die wichtigsten Funktionen für numerische
Berechnungen
Hinweis:
Eine vollständige Auflistung der H2 Funktionen finden Sie unter :
http://www.h2database.com/html/functions.html
16
In der Praxis sind String-Operationen sehr häufig anzutreffen. In dieser Tabelle
werden daher die wichtigsten Funktionen aufgeführt, die dazu dienen
Zeichenketten zu untersuchen bzw. zu manipulieren.
Hinweis:
Eine vollständige Auflistung der H2 Funktionen finden Sie unter :
http://www.h2database.com/html/functions.html
17
Datum und Uhrzeit Operationen sind ebenfalls häufig in der Praxis anzutreffen.
Die Tabelle enthält daher die wichtigsten Funktionen für den Umgang mit Datum
und Uhrzeit.
Hinweis
Eine vollständige Auflistung der H2 Funktionen finden Sie unter :
http://www.h2database.com/html/functions.html
18
Die abschließend wohl wichtigste Frage ist:
Wie kann ich nun SQL Befehle auf einer Datenbank ausführen?
Die einfachste Art SQL Anweisungen auszuführen, ist die Verwendung eines
SQL Interpreters.
Jedes DBMS (Datenbank-Managementsystem) stellt eine sogenannte SQLKonsole zur Verfügung.
Wenn wir die SQL-Konsole starten, erhalten wir eine Eingabemöglichkeit, um
SQL einzugeben und zur Ausführung zu bringen.
Im einfachsten Fall ist die SQL Konsole, die es erlaubt auf einer Kommandozeile
ein SQL Statement einzugeben.
Beim SQL-Server verbirgt sich der SQL –Interpreter hinter der Anwendung
osql.exe (Windows).
In einigen Fällen (so auch wie bei unserer H2-Datenbank) wird auch die
Möglichkeit gegeben mehrere SQL Anweisungen einzugeben und auszuführen
19
Hinweis:
In dem Abschnitt „Schnittstellen“ kommen wir nochmals auf die SQL Konsole bzw. SQLInterpreter zurück. Die ist deshalb interessant, da man hierdurch mittels Batch-Scripts
Datenbanken anlegen und verändern kann.
Für diesen Kurs wird die Datenbank H2 empfohlen. Hier erhalten wir beim Starten von
H2 ein Fenster in einem Web-Browser, über den wir die SQL Befehle eingeben und
ausführen lassen können. Selbstverständlich wir dort auch das Ergebnis eines SQL
Befehle sofort angezeigt.
19
20
21
Herunterladen