Inhaltsverzeichnis

Werbung
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Hochschule:
Standort:
Studiengang:
Veranstaltung:
Betreuer:
Typ:
Themengebiet:
Autor(en):
Studienzeitmodell:
Semesterbezeichnung:
Studiensemester:
Bearbeitungsstatus:
Prüfungstermin:
Abgabetermin:
Fallstudienarbeit
Hochschule für Oekonomie & Management
Dortmund
Bachelor Wirtschaftsinformatik
Fallstudie / Wissenschaftliches Arbeiten
Prof._Dr._Uwe_Kern
Fallstudienarbeit
Blended Learning
Sebastian Koch, Simon Sprenger, Antonio Porco
Abendstudium
SS12
2
Bearbeitung abgeschlossen
23.06.12
10.06.12
Inhaltsverzeichnis
• 1 Abkürzungsverzeichnis
• 2 Abbildungsverzeichnis
• 3 Tabellenverzeichnis
• 4 Einleitung
♦ 4.1 Zielsetzung
♦ 4.2 Vorgehensweise
• 5 Technologieauswahl
• 6 Kurzfassung des Inhalts
♦ 6.1 Grundlagen
◊ 6.1.1 Relationale
Datenbanken
◊ 6.1.2 Data
Manipulation
Language (DML)
◊ 6.1.3 Data
Definition
Language (DDL)
◊ 6.1.4 Data Control
Language (DCL)
◊ 6.1.5 Primär und
Fremdschlüssel
◊ 6.1.6 Datentypen
◊ 6.1.7
Grundlegende
SQL Befehle
⋅ 6.1.7.1
CREATE
⋅ 6.1.7.2
ALTER
⋅ 6.1.7.3
DROP
Inhaltsverzeichnis
1
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
⋅ 6.1.7.4
INSERT
⋅ 6.1.7.5
SELECT
⋅ 6.1.7.6
DELETE
⋅ 6.1.7.7
UPDATE
⋅ 6.1.7.8
WHERE
⋅ 6.1.7.9
ORDER
BY
◊ 6.1.8
Aggregatfunktionen
◊ 6.1.9 Erweiterte
SQL Befehle
⋅ 6.1.9.1
AND
⋅ 6.1.9.2 OR
⋅ 6.1.9.3
LIKE
⋅ 6.1.9.4 IN
♦ 6.2 Transaktionen
♦ 6.3 Funktionen
• 7 Bewertung
• 8 Schlussbetrachtung
• 9 Anhang
♦ 9.1 Screencast
♦ 9.2 Kontrollfragen
♦ 9.3 Fußnoten
• 10 Literatur- und Quellverzeichnis
1 Abkürzungsverzeichnis
Abkürzung
ANSI
ASC
DBMS
DCL
DDL
DESC
DML
DQL
FOM
Bedeutung
American National Standards Institute
ascending
Datenbankmanagementsystem
Data Control Language
Data Definition Language
descending
Data Manipulation Language
Data Query Language
Fachhochschule für Ökonomie und Management
1 Abkürzungsverzeichnis
2
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
IBM
ISO
MAC
MS
PDF
RDBMS
SEQUEL
SQL
TCL
International Business Machines Corporation
International Organization for Standards
Apple Macintosh
Microsoft
Portable Document Format (Adobe)
relationales Datenbankmanagementsystem
Structured English Query Language
Structured Query Language
Transaction Control Language
2 Abbildungsverzeichnis
Abb.Nr.
1
2
3
Bezeichnung
Ebenen eines Datenbanksystems
Datenbankmodelldiagramm - Beispiel für falsche Schlüsselvergabe
Datenbankmodelldiagramm - Beispiel für richtige Schlüsselvergabe
3 Tabellenverzeichnis
Tabelle Nr.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Bezeichnung
Gegenüberstellung von relationalen- und SQL-Begriffen
Beispielrelation "Mitarbeiter"
Datentypen - Kategorie "Genaue numerische Werte"
Datentypen - Kategorie "Ungefähre numerische Werte"
Datentypen - Kategorie "Datum und Uhrzeit"
Datentypen - Kategorie "Zeichenfolgen"
Datentypen - Kategorie "Unicode Zeichenfolgen"
Datentypen - Kategorie "Binär Zeichenfolgen"
Selektionsergebnis: Alle Mitarbeiter mit Vor- und Nachnamen
Selektionsergebnis: Alle Mitarbeiter
Selektionsergebnis mit dem Zusatz DISTINCT
Selektionsergebnis ohne den Zusatz DISTINCT
Ausgangstabelle vor dem Löschen
Tabelle nach dem Löschen
Vergleichsoperatoren
Basis Aggregatfunktionen
Mitarbeiter Beispieltabelle
Ergebnis der Aggregatfunktion "AVG"
Ergebnis der Aggregatfunktion "MAX"
Ergebnis der Aggregatfunktion "MIN"
Ergebnis der Aggregatfunktion "MAX" mit Zusatz GROUP-BY
Ergebnis der Aggregatfunktion "MIN" mit Zusatz GROUP-BY
2 Abbildungsverzeichnis
3
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
23
24
25
26
27
28
29
30
Wahrheitstabelle vom AND-Operator
Selektionsergebnis mit AND-Operator
Wahrheitstabelle vom OR-Operator
Selektionsergebnis mit OR-Operator
Verfügbare Platzhalter für den LIKE-Operator
Ergebnis mit LIKE-Operator
Ergebnisselektion mit IN-Operator
Ergebnis der Addiere-Funktion
4 Einleitung
Diese Fallstudie ist ein Baustein von vielen anderen, welche dem Projekt des ?Blended Learning? an der FOM
(Fachhochschule für Ökonomie und Management) angehören und von den Kommilitonen im Sommersemester
2012 durchgeführt wurden. Die Fallstudie ist dem Bereich des Datenbankmanagements untergeordnet und befasst
sich ausschließlich mit den Grundlagen von SQL, welche mittels eines Screenvideos erläutert werden sollen.
SQL steht für "Structured Query Language". SQL ist eine Datenbanksprache, welche von dem American National
Standards Institute (ANSI) im Jahre 1986 standardisiert wurde. Anschließend wurde der ANSI-Standard im Jahre
1987 von der International Organization for Standards (ISO) als internationaler Standard akzeptiert. Hierbei
handelt es sich um eine Datenbankensprache, welche zum Abfragen von Datensätzen angewendet wird. SQL
gehört zu der Familie der deklarativen Sprachen. Edgar Frank Codd, Mitglied des IBM Research Laboratory,
veröffentlichte in den 70er Jahren den Artikel "A Relational Model of Data for Large Shared Data Bank", welcher
den Grundstein für die Erstellung von SEQUEL setzte. So wurden im Laufe der 70er Jahre mehrere relationale
Sprachen entwickelt, jedoch hat sich aus heutiger Sicht lediglich SEQUEL durchgesetzt. Die erste
Implementierung von SEQUEL fand im Jahr 1974/75 statt. 1976/77 fand eine Überarbeitung der Sprache statt
und diese wurde dann mit SEQUEL/2 definiert. Anschließend wurde der Name jedoch in SQL umgeändert.[1]
Die Bedeutung von SQL wird in der heutigen Zeit immer wichtiger, da durch das erhöhte Aufkommen von Daten
in der heutigen Zeit, der richtige Umgang mit Datenbanken und den dazugehörigen Abfragen unumgänglich ist.
4.1 Zielsetzung
Ziel dieser Fallstudie ist es, den Lesern theoretisches Wissen zu vermitteln. Den Lesern soll auf einer gut
verständlichen Art und Weise, grundlegende SQL Statements erläutert werden. Nachdem sich ein Leser mit dieser
Fallstudie auseinander gesetzt hat, soll dieser in der Lage sein, einfache Befehle selbst schreiben zu können und
ein gutes Fundament an Grundkenntnissen zu besitzen auf welches er jeder Zeit aufbauen kann. Die Erstellung
eines Screenvideos zum Thema "Grundlagen SQL" mit einer zusätzlichen Kurzfassung des Themas im
Wirtschaftsinformatik-Wiki der FOM und der abschließenden wissenschaftlichen Präsentation komplettieren die
Zielsetzung.
4.2 Vorgehensweise
Diese Fallstudie ist so aufgebaut, dass dem Leser die theoretischen Grundlagen von SQL erläutert und
anschließend anhand von Beispielen untermautert werden. Anhand der Beispiele ist für den Leser erkenntlich, wie
die SQL Syntax aussieht und welche Auswirkungen die Befehle auf die Datensätze in einer Datenbank haben.
Zum Schluss dieser Fallstudie findet der User noch einige Kontrollfragen um selbstständig kontrollieren zu
3 Tabellenverzeichnis
4
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
können, ob sich die Inhalten bereits eingeprägt haben oder nicht.
5 Technologieauswahl
Die Erstellung eines Screenvideos umfasst mehrere Punkte wie die Präsentationserstellung, Audioaufnahme und
die Erstellung des eigentlichen Videos aus der Präsentation. Die Auswahl fiel auf die Präsentationssoftware
Keynote, welche sich zwischen Microsoft Powerpoint und OpenOffice durchgesetzt hatte. Das
ausschlaggebende Ergebnis war die schon vorhandene Version von Keynote, welche in dieser Projektgruppe
bereits vorhanden war. So mussten keine weiteren Kosten für Microsoft Powerpoint für MAC ausgegeben werden
und OpenOffice bietet weniger Funktionalität, sodass die Videoerstellung zusätzlich noch mit einem weiteren
Programm erstellt werden müsste. Keynote deckt alle technischen Anforderungen zur Erstellung von Präsentation
und Video mit Audioaufnahme ab und muss für das Projekt nicht erst neu erworben werden. Die Software ist
Bestandteil von iWorks und kann hier gekauft werden.
Die nachfolgenden Beispiele und SQL-Anweisungen werden anhand der Microsoft SQL-Server 2012 Syntax
gezeigt, da der aktuelle SQL-Standard nur die Hauptbefehle in einfachster Weise unterstützt. So gibt es
unterschiedliche Ausprägungen der SQL-Anweisungen, welche sich aber in anderen SQL-Versionen sehr ähneln
werden. Die Beispiele können mit der kostenlosen SQL-Server 2012 Express Version, welche hier
heruntergeladen werden kann, ausgetestet werden.
Die abschließende wissenschaftliche Präsentation wird mit Microsoft Powerpoint auf einem Windows-Computer
erstellt, da durch die Referenten-Ansicht zusätzliche Informationen auf einen zweiten Bildschirm dargestellt
werden können. Zusätzlich werden Microsoft Excel und Microsoft Visio für die Erstellung der Abbildungen
genutzt.
6 Kurzfassung des Inhalts
6.1 Grundlagen
In diesem Kapitel werden die wichtigsten Befehle, deren Bedeutung und weitere theoretischen Grundlagen zu
SQL erläutert. An Hand von Beispielen und Beispieldaten werden die nächsten Kapitel die Einführung in SQL so
bildlich und anschaulich wie möglich gestalten.
6.1.1 Relationale Datenbanken
Relationale Datenbanken bestehen aus Relationen, Attributen und Tupel.[2] Folgende Tabelle zeigt die
Bedeutung der Begriffe:
relational
SQL
Relation
Tabelle
Tupel
Zeile
Attribut
Spalte
Domäne
4.2 Vorgehensweise
5
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Wertebereich der Attribute
(Datentypen)
Tabelle 1: Gegenüberstellung von relationalen- und SQL-Begriffen
In Anlehnung an: Kuhlmann; Müllmerstadt (2004), S. 17
Abb. 1: Ebenen eines Datenbanksystems
Eine relationale Datenbank ist eine Sammlung von Relationen (Tabellen), in denen Datensätze (Tupel)
gespeichert sind. Jedes Tupel besteht aus mehreren Attributen oder auch Eigenschaften genannt. Jeder Datensatz
muss eindeutig über einen Schlüssel identifiziert werden können. Beziehungen zwischen Relationen werden
ebenfalls in separaten eigenen Relationen abgebildet. Das Datenbankmanagementsystem für ein relationales
Datenbankmodell nennt man relationales Datenbankmanagementsystem (RDBMS).
Im Folgenden wird ein Mitarbeiter eines Unternehmens durch folgende Attribute beschrieben: MitarbeiterID,
Vorname, Nachname, Geburtsdatum, Urlaubsanspruch und Gehalt. In dieser Mitarbeiter-Relation ist der
eindeutige Schlüssel die MitarbeiterID, wodurch ein einzelner Datensatz identifiziert werden kann.
MitarbeiterID Vorname Nachname Geburtsdatum Urlaubsanspruch
Gehalt
1
Klaus
Apfel
08.05.1967
30
3200,00
2
Max
Mustermann 26.06.1957
24
3800,00
3
Klaus
Pohl
29.05.1990
30
2600,00
4
Manfred
Lehmann
12.11.1978
28
4800,00
5
Max
Kehl
24.10.1966
30
5200,00
Tabelle 2: Beispielrelation "Mitarbeiter"
6.1.2 Data Manipulation Language (DML)
Zu der Data Manipulation Language gehören alle Befehle, um Daten zu schreiben (INSERT), zu lesen
(SELECT), zu löschen (DELETE) und zu ändern (UPDATE).[3] Da diese Befehle in Abfragen mit logischen
Operatoren, Unterabfragen und verschiedenen Parametern kombiniert und verschachtelt werden können, können
sie dadurch lang und unübersichtlich werden.[4] Die Abfragebefehle SELECT, WHERE etc. werden oft auch in
eine separate Kategorie namens DQL (Data Query Language) gesteckt.
6.1.1 Relationale Datenbanken
6
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
6.1.3 Data Definition Language (DDL)
Mit der Data Definition Language gehören alle Befehle, mit denen man Datenbanken bzw. Datenbankobjekte in
Datenbankmangementsystemen (DBMS) erstellen (CREATE), löschen (DROP) oder ändern (ALTER) kann.[5]
Zu den Datenbankobjekten zählen neben Tabellen auch Views (Sichten), Funktionen, Prozeduren und Schemata.
Wie bei der Data Manipulation Language werden diese Befehle in einer oder mehrere Abfragen ausgeführt.
6.1.4 Data Control Language (DCL)
Data Control Language ist die Datenüberwachungssprache, worunter alle sicherheitsrelevanten Befehle wie
GRANT, REVOKE und DENY fallen.[6] Dadurch lassen sich verschiedene Berechtigungen auf Benutzer- und
Rollenebene (Zusammenfassung mehrerer Benutzer) vergeben, um den Zugriff auf die Daten und
Datenbankobjekte zu steuern.
6.1.5 Primär und Fremdschlüssel
In Datenbanken gibt es viele Tabellen mit vielen Inhalten. Um diese Tabellen zu verknüpfen oder bestimmte
Datensätze wiederzufinden, werden Schlüssel, sog. Keys, verwendet.[7] Michael Ebner beschreibt den Inhalt von
Tabellen in "einer relationalen Datenbank [..] nicht sequentziell organisiert [...], es gibt also nicht den ersten, den
letzten, den 385. Datensatz".[8] Der eindeutige Schlüssel, welcher sich aus einen oder mehreren Attributen
(Spalten) zusammensetzen kann, ermöglicht es einen einzelnen Datensatz identifizieren zu können. Diesen
Schlüssel bezeichnet man als Primärschlüssel. Ein Primärschlüssel ist im einfachsten Fall eine fortlaufende
Nummer (z.B. Kundennummer oder Bestellnummer), welches aber nicht zwingend notwendig ist.[7] Die Attribute
eines Primärschlüssels dürfen sich nicht ändern.
Im folgenden Datenbankmodelldiagramm sind zwei Relationen dargestellt. Die Mitarbeiter-Relation mit dem
primären Schlüssel über die Spalten Vorname, Nachname und Geburtsdatum und die zugehörige
Beziehungsrelation IstChefVon.
Abbildung 2: Datenbankmodelldiagramm - Beispiel für falsche Schlüsselvergabe
Wenn man den Primärschlüssel über diese Spalten erstellt, gibt es aber folgende Nachteile:
6.1.3 Data Definition Language (DDL)
7
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
• Da solche Schlüssel als Verbindung von Tabellen genutzt werden (Beziehung, Referenz), müssen diese
drei Spalten in die andere Tabelle implementiert werden (siehe Tabelle IstChefVon)
♦ Der Speicherbedarf der Beziehungstabelle IstChefVon ist größer
♦ Bei Änderung des Namens, beispielsweise durch Heirat, müssen in der Mitarbeiter-Stammtabelle,
sowohl in der Beziehungstabelle die Datensätze des Mitarbeiters angepasst werden
• In großen Unternehmen kann es vorkommen, dass es mehrere Mitarbeiter mit gleichen Vornamen,
Nachnamen und Geburtsdatum gibt
♦ Dadurch wird das Hinzufügen des gleichen Mitarbeiter-Datensatzes verhindert
Fügt man eine Spalte MitarbeiterID ein, welches fortlaufende Nummern enthält, beseitigt man die Nachteile:
Abbildung 3: Datenbankmodelldiagramm - Beispiel für richtige Schlüsselvergabe
Die Spalten Chef_MitarbeiterID und Angestellter_MitarbeiterID sind zusammen der Primärschlüssel der
Tabelle IstChefVon und zusätzlich Fremdschlüssel, da sie sich auf die Spalte MitarbeiterID aus der Mitarbeiter
Tabelle beziehen. Fremdschlüssel beziehen sich also auf die Primärschlüssel der anderen Tabellen um eine
Verbindung zu dieser herstellen zu können. [9] Über diesen Fremdschlüssel können die Tabellen in Abfragen
miteinander verknüpft werden, so dass man z.B. die zugehörigen Namen und Gehälter der Chefs dazu bekommt.
6.1.6 Datentypen
Der Datentyp legt die Art und die Länge der enthaltenen Daten fest. [10] Jeder einzelne Wert in der Datenbank
besitzt einen Datentyp. Sobald man eine Tabelle erstellt, muss man in der Tabellendefinition die Datentypen der
Spalten angeben. Aber auch die Rückgabewerte von Funktionen und Prozeduren besitzen einen Datentyp.
SQL kategorisiert die Datentypen in unterschiedliche Bereiche. Hier die wichtigsten Datentypen:
Genaue numerische Werte
Datentyp
bigint
Wertebereich
Beschreibung
-263 (-9.223.372.036.854.775.808) bis 263-1 Eine ganze Zahl mit einer Größe von 8
(9.223.372.036.854.775.807)
Bytes.
6.1.5 Primär und Fremdschlüssel
8
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
smallint
decimal(p,
s)
numeric(p,
s)
-215 (-32.768) bis 215-1 (32.767)
-1038+1 und 1038-1
Eine ganze Zahl mit einer Größe von 2
Bytes.
Eine Zahl mit fester Genauigkeit und mit
fester Anzahl von Dezimalstellen. Der
Parameter p steht für Precision
(Genauigkeit). Dieser gibt die Gesamtzahl
der zu speichernden Dezimalstellen an
(sowohl links als auch rechts vom
Dezimalkomma). Der Wert muss zwischen
1-36 liegen. Der Standardwert beträgt 18.
Der Parameter s gibt die maximalen
Dezimalstellen rechts vom Dezimalkomma
an. Der Wert muss zwischen 0 und p liegen.
Mit decimal(6, 2) wird eine Zahl deklariert,
die insgesamt sechs Stellen enthält, zwei
davon als Nachkommastellen. So bleiben 4
Zahlen vor dem Komma. Das Format ist:
0000,00.
money
-922.337.203.685.477,5808 bis
922.337.203.685.477,5807
Währungswerte mit einer Größe von 8
Bytes.
smallmoney -214.748,3648 bis 214.748,3647
Währungswerte mit einer Größe von 4
Bytes.
bit
0 oder 1
SQL-Server verwendet keine boolische
Datentypen für WAHR und FALSCH.
Hierfür wird dieser Datentyp verwendet, der
nur die Werte 0 (FALSCH) und 1 (WAHR)
unterstützt.
int
-231 (-2.147.483.648) bis 231-1
(2.147.483.647)
Eine ganze Zahl mit einer Größe von 4
Bytes.
tinyint
0 bis 255
Eine ganze Zahl mit einer Größe von 1
Byte.
Tabelle 3: Datentypen - Kategorie "Genaue numerische Werte"[11]
Ungefähre numerische Werte
Datentyp
Wertebereich
Beschreibung
float(n)
-1,79e308 bis 1,79e308
Speichert Gleitkommazahlen
(Näherungswerte). Der Parameter n gibt an,
wie viel Bits zur Speicherung benutzt
werden sollen. Der Standardwert beträgt 53.
real
-3,40e38 bis 3,40e38
Speichert Gleitkommazahlen mit einer
Größe von 4 Bytes.
Tabelle 4: Datentypen - Kategorie "Ungefähre numerische Werte"[11]
Datum und Uhrzeit
6.1.6 Datentypen
9
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Datentyp
date
datetimeoffset
datetime2
Wertebereich
Beschreibung
Datum: 0001-01-01 bis 9999-12-31
Speichert Daten des gregorianischen
Kalenders im Format YYYY-MM-DD. Die
Speichergröße beträgt 3 Bytes.
Datum: 0001-01-01 bis 9999-12-31
Zeit: 00:00:00 bis 23:59:59.9999999
Speichert Daten mit Uhrzeit des
gregorianischen Kalenders im Format
YYYY-MM-DD hh:mm:ss.nnnnnnn. Die
Speichergröße beträgt 10 Bytes. Es wird die
Zeitzone beachtet.
Datum: 0001-01-01 bis 9999-12-31
Zeit: 00:00:00 bis 23:59:59.9999999
Erweiterung vom Datentyp datetime.
Besitzt eine größere Genauigkeit im
Datumsbereich und
Sekundenbruchteilbereich, die vom Nutzer
angegeben werden kann.
Datum: 1900-01-01 bis 2079-06-06
smalldatetime
Zeit: 00:00:00 bis 23:59:59
Speichert das Datum kombiniert mit der
Uhrzeit ab, wobei es keine
Sekundenbruchteile gibt. Die Speichergröße
beläuft sich auf 4 Bytes.
datetime
Datum: 1753-01-01 bis 9999-12-31
Zeit: 00:00:00 bis 23:59:59.997
Speichert das Datum kombiniert mit der
Uhrzeit inkl. Sekundenbruchteilen ab. Die
Speichergröße ist 8 Bytes.
time
Zeit: 00:00:00.0000000 bis
23:59:59.9999999
Definiert eine Uhrzeit im
24-Stunden-Format ohne Beachtung der
Zeitzonen.
Tabelle 5: Datentypen - Kategorie "Datum und Uhrzeit"[11]
Zeichenfolgen
Datentyp
Wertebereich
Beschreibung
1 bis 8.000
Speichert eine Zeichenkette (kein Unicode)
fester Länge, wobei der Parameter n die
Länge der Zeichenkette angibt. Die
Speichergröße beträgt n Bytes.
varchar(n)
1 bis 8.000 oder MAX (maximaler
Speicherplatz (2 GB) wird genutzt)
Speichert eine Zeichenkette (kein Unicode)
variabler Länge, wobei der Parameter n die
Länge der Zeichenkette angibt. Die
Speichergröße ist die tatsächlich
eingegebene Länge + 2 Bytes.
text
231-1 (2.147.483.647) Bytes (~ 2 GB)
Nicht-Unicode-Daten variabler Länge.
Wird in neuen SQL-Server Versionen durch
varchar(MAX) abgelöst.
char(n)
Tabelle 6: Datentypen - Kategorie "Zeichenfolgen"[11]
Unicode Zeichenfolgen
Datentyp
6.1.6 Datentypen
Wertebereich
Beschreibung
10
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
1 bis 4.000
Speichert eine Unicode-Zeichenkette fester
Länge, wobei der Parameter n die Länge der
Zeichenkette angibt. Die Speichergröße
beträgt zweimal n Bytes.
nvarchar(n)
1 bis 4.000 oder MAX (maximaler
Speicherplatz (2 GB) wird genutzt)
Speichert eine Unicode-Zeichenkette
variabler Länge, wobei der Parameter n
die Länge der Zeichenkette angibt. Die
Speichergröße ist zweimal die tatsächlich
eingegebene Länge + 2 Bytes.
ntext
230-1 (1.073.741.823) Bytes (~ 1 GB)
Unicode-Daten variabler Länge. Wird in
neuen SQL-Server Versionen durch
nvarchar(MAX) abgelöst.
nchar(n)
Tabelle 7: Datentypen - Kategorie "Unicode Zeichenfolgen"[11]
Binär Zeichenfolgen
Datentyp
binary(n)
Wertebereich
1 bis 8.000
varbinary(n) 1 bis 8.000 oder MAX
image
Beschreibung
Binärdaten fester Länge, wobei der
Parameter n die Länge angibt. Die
Speichergröße beträgt n Bytes.
Binärdaten variabler Länge, wobei der
Parameter n die Länge angibt. Die
Speichergröße beträgt n Bytes. Die
Speichergröße ist die tatsächlich
eingegebene Länge + 2 Bytes.
0 bis 231 - 1 (2.147.483.647) Bytes (~ 2 GB) Binärdaten variabler Länge.
Tabelle 8: Datentypen - Kategorie "Binär Zeichenfolgen"[11]
6.1.7 Grundlegende SQL Befehle
6.1.7.1 CREATE
Mit dem Befehl CREATE erstellt man Datenbankobjekte wie z.B. Tabellen, Views, Prozeduren und
Funktionen.[12]
Die SQL-Anweisung um z.B. eine Tabelle zu erstellen lautet:
CREATE TABLE Tabellenname
Nach dem Tabellennamen folgt die Tabellendefinition in geschweiften Klammern. Die Tabellendefinition
beinhaltet alle Tabellenspalten mit dem jeweiligen Datentyp und der Spaltenbedingung, welche innerhalb der
geschweiften Klammern mit Kommata getrennt aufgelistet werden.[13] Folgende SQL-Anweisung erstellt eine
Tabelle Kunde mit der Spalte KundenNr als eindeutigen Schlüssel:
CREATE TABLE Kunde
(
KundenNr int NOT NULL PRIMARY KEY,
6.1.7 Grundlegende SQL Befehle
11
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Anrede CHAR(4) NULL,
Name VARCHAR(150) NOT NULL,
Strasse VARCHAR(100) NOT NULL,
PLZ VARCHAR(20) NOT NULL,
Ort VARCHAR(50) NOT NULL,
TelefonNr VARCHAR(50)
)
Der Tabellenname darf nicht länger als 128 Zeichen sein und keine Sonderzeichen enthalten.[14] Die
Spaltenbedingung NOT NULL legt fest, dass in diesen Spalten unbedingt Werte einzugeben sind. Die Bedingung
NULL oder das Weglassen dieser Bedingung bewirkt das Gegenteil und kennzeichnet die Werteingabe als
optional.[13]
6.1.7.2 ALTER
Der ALTER-Befehl steht für das Ändern von Datenbankobjekten. Mit diesem Befehl lassen sich Funktionen und
Prozeduren anpassen, als auch Spalten zu einer vorhandenen Tabelle hinzufügen oder entfernen.[12]
Folgende Anweisung fügt eine Spalte Geburtsdatum zu der Tabelle Mitarbeiter. Die Spalte ist vom Typ datetime
und erlaubt NULL-Werte.
ALTER TABLE Mitarbeiter ADD Geburtsdatum DATETIME NULL
Folgende Syntax entfernt diese Spalte wieder:
ALTER TABLE Mitarbeiter DROP COLUMN Geburtsdatum
6.1.7.3 DROP
Mit dem SQL-Befehl DROP können Datenbankobjekte, wie z.B. Tabellen, Funktionen und Prozeduren gelöscht
werden.[15]
Diese Anweisung löscht die Tabelle Mitarbeiter:
DROP TABLE Mitarbeiter
Dieser SQL-Befehl löscht die komplette Datenbank Datapool:
DROP DATABASE Datapool
6.1.7.4 INSERT
Der INSERT-Befehl fügt Datensätze in eine Tabelle ein. Die Anweisung sieht folgendermaßen aus:
INSERT INTO Tabelle VALUES()
Um einen Datensatz vollständig in die Tabelle einzugeben, ist die Angabe der Spalten irrelevant. Die Werte
werden nach Reihenfolge der Spalten angegeben [16]:
INSERT INTO Mitarbeiter VALUES(5, 'Max', 'Mustermann', '29.05.1990', 30, 4000.00)
6.1.7.1 CREATE
12
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Die Tabellenspalten sind in folgender Reihenfolge: MitarbeiterID, Vorname, Nachname, Geburtsdatum,
Urlaubsanspruch und Gehalt. Die Werte werden zwischen den Klammern eingegeben. Dabei ist zu beachten,
dass die Datentypen der angegebenen Werte mit denen in der Tabelle übereinstimmen. Zeichenketten und
Datumswerte werden zusätzlich noch in Hochkommata (') eingeschlossen.[17]
Folgende Anweisung würde einen Datensatz nur mit Werten in den Spalten MitarbeiterID, Vorname und
Nachname erzeugen:
INSERT INTO Mitarbeiter (MitarbeiterID, Vorname, Nachname) VALUES (6, 'Moritz', 'Hofmann')
Die Angabe der Spaltennamen erfolgt hinter dem Tabellennamen in geschweiften Klammern. Folgende
Anweisung würde die Tabelle Mitarbeiter mit Datensätzen aus einer anderen Tabellen befüllen:
INSERT INTO Mitarbeiter (MitarbeiterID, Vorname, Nachname)
SELECT
fGetNewId('Mitarbeiter'),
Vorname,
Nachname
FROM Mitarbeiter_Schweiz
Solche Abfragen können Funktionen (hier z.B.: fGetNewId) enthalten, die die Werte während des Einfügens
berechnen.
6.1.7.5 SELECT
Die Hauptaufgabe von Datenbanken ist neben dem Speichern und Verwalten von großen Datenmengen auch die
Informationsgewinnung durch das Abfragen von Daten. Mit dem SELECT-Befehl können Daten aus Tabellen
abgefragt werden.[18] Mit Hilfe von Selektionskriterien in der WHERE-Klausel (LIKE, AND, OR, etc.) und das
Verknüpfen von Tabellen können gezielte Datensätze ermittelt werden.
Folgende SQL-Syntax gibt alle Mitarbeiter mit Vor- und Nachnamen zurück:
SELECT
Vorname,
Nachname
FROM Mitarbeiter
Ergebnis:
Vorname Nachname
Klaus
Apfel
Max
Mustermann
Klaus
Pohl
Manfred
Lehmann
Max
Kehl
Tabelle 9: Selektionsergebnis: Alle Mitarbeiter mit Vor- und Nachnamen
Die Spaltennamen stehen mit Kommata getrennt nach dem SELECT. Anstelle aller Spaltennamen, kann man
auch den Platzhalter * (Star) verwenden:
6.1.7.4 INSERT
13
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
SELECT * FROM Mitarbeiter
Ergebnis:
MitarbeiterID Vorname Nachname Geburtsdatum Urlaubsanspruch
Gehalt
1
Klaus
Apfel
08.05.1967
30
3200,00
2
Max
Mustermann 26.06.1957
24
3800,00
3
Klaus
Pohl
29.05.1990
30
2600,00
4
Manfred
Lehmann
12.11.1978
28
4800,00
5
Max
Kehl
24.10.1966
30
5200,00
Tabelle 10: Selektionsergebnis: Alle Mitarbeiter
Durch den Zusatz DISTINCT wird die Mehrfachausgabe gleicher Werte unterdrückt.[19] In diesem Beispiel wird
also nur einmal der Vorname Max und Klaus ausgegeben:
SELECT DISTINCT
Vorname
FROM Mitarbeiter
Ergebnis:
Vorname
Klaus
Max
Manfred
Tabelle 11: Selektionsergebnis mit dem Zusatz DISTINCT
Ohne den Zusatz DISTINCT:
SELECT
Vorname
FROM Mitarbeiter
Ergebnis:
Vorname
Klaus
Max
Klaus
Manfred
Max
Tabelle 12: Selektionsergebnis ohne den Zusatz DISTINCT
6.1.7.5 SELECT
14
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
6.1.7.6 DELETE
Mit der DELETE-Anweisung werden die Datensätze aus einer Tabelle gelöscht.[20] Die Syntax sieht
folgendermaßen aus:
DELETE [FROM] Tabelle [WHERE-Klausel]
Das Schlüsselwort FROM ist bei dem MS SQL-Server optional. Um nur bestimmte Zeilen zu entfernen, kann
eine WHERE-Bedingung eingefügt werden. Diese Bedingung ist ebenfalls optional. Wenn man diese Klausel
weglässt, werden einfach alle Zeilen der Tabelle gelöscht.
Folgende SQL-Anweisung löscht aus der Tabelle Mitarbeiter alle Mitarbeiter, welche den Vornamen Klaus
besitzen:
DELETE FROM Mitarbeiter WHERE Vorname = 'Klaus'
Vorher:
MitarbeiterID Vorname Nachname
1
Klaus
Apfel
2
Max
Mustermann
3
Klaus
Pohl
4
Manfred
Lehmann
5
Max
Kehl
Tabelle 13: Ausgangstabelle vor dem Löschen
Nacher:
MitarbeiterID Vorname Nachname
2
Max
Mustermann
4
Manfred
Lehmann
5
Max
Kehl
Tabelle 14: Tabelle nach dem Löschen
6.1.7.7 UPDATE
Der UPDATE-Befehl ist für das Ändern von Datensätzen zuständig.[21] Die Struktur des SQL-Befehls lautet:
UPDATE Tabelle
SET Spalte1 = Wert,
Spalte2 = Wert
WHERE Bedingung
Die WHERE-Bedingung, die im späteren Kapitel näher behandelt wird, kann man auch ganz weglassen. Das hat
zur Folge, dass die angegebenen Spalten aller Datensätze verändert werden. Wie bei der SELECT-Anweisung
kann man neben der WHERE-Bedingung auch noch Tabellen verknüpfen, welches dann als Bedingung dient. Es
können mehrere Spalten gleichzeitig geändert werden, indem man mehrere Spalten nach dem SET mit Kommata
6.1.7.6 DELETE
15
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
auflistet.
In der Tabelle Mitarbeiter wird der Urlaubsanspruch für alle Mitarbeiter, welche noch keine 30 Urlaubstage
haben, auf 30 erhöht:
UPDATE Mitarbeiter
SET Urlaubsanspruch = 30
WHERE Urlaubsanspruch < 30
Der Mitarbeiter Manfred bekommt zusätzliche 2 Tage Urlaub im Jahr:
UPDATE Mitarbeiter
SET Urlaubsanspruch = Urlaubsanspruch + 2
WHERE MitarbeiterID = 4
Mit dieser Anweisung erhöht man den aktuellen Wert um 2.
6.1.7.8 WHERE
Der WHERE-Befehl ist für das Filtern von Datensätzen zuständig. Die Syntax sieht folgendermaßen aus:
SELECT
*
FROM Mitarbeiter
WHERE Spalte operator value
Operatoren sind Symbole für eine ausführende Operation. Es gibt verschiedene Arten von Operatoren. [22] Hier ist
eine Tabelle mit den Vergleichsoperatoren:
Operator Bedeutung
=
gleich
<
kleiner als
>
größer als
<>
ungleich
<=
kleiner
gleich
>=
größer
gleich
In Anlehnung an: Kuhlmann; Müllmerstadt (2004), S. 80[23]
Tabelle 15: Vergleichsoperatoren
Weitere Operatoren sind z.B. IN, BETWEEN und LIKE, welche in späteren Kapiteln behandelt werden. Im
folgenden Beispiel werden alle Mitarbeiter mit einem Gehalt von mindestens 3.000 ? ausgegeben:
SELECT
*
FROM Mitarbeiter
WHERE Gehalt >= 3000
6.1.7.7 UPDATE
16
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Mit dieser Abfrage gibt es für alle Mitarbeiter mit einem Gehalt unter 3.000 ? eine Gehaltserhöhung um 5 %:
UPDATE Mitarbeiter
SET Gehalt = Gehalt * 1.05
WHERE Gehalt < 3000
6.1.7.9 ORDER BY
In vielen Fällen müssen die Daten sortiert ausgegeben werden. Dies geschieht mit dem Zusatz ORDER-BY.[24]
Die SQL-Syntax sieht folgendermaßen aus:
SELECT
*
FROM Tabelle
[WHERE Bedingung]
ORDER BY Spalte1 [ASC, DESC] [, Spalte2 [ASC, DESC], ...]
Die Anweisungen in eckigen Klammern ([]) sind optional. Die ORDER-BY Klausel steht immer am Ende einer
SELECT-Anweisung. ASC (ascending) bedeuted, das die Ergebnisse in aufsteigender und DESC (descending) in
absteigender Reihenfolge angezeigt werden. Wird keines von beiden angegeben ist es standardmäßig ASC.[25]
Es besteht auch, wie in der Syntax zu sehen, die Möglichkeit, mehrere Spalten zu sortieren. Diese werden einfach
Komma separiert aufgelistet.
Folgendes Beispiel listet alle Mitarbeiter, sortiert nach dem Geburtsdatum (Älteste zuerst), auf:
SELECT
*
FROM Mitarbeiter
ORDER BY Geburtsdatum DESC
6.1.8 Aggregatfunktionen
Aggregatfunktionen führen Berechnungen für eine Wertemenge durch. Sie werden meistens mit der SQL-Klausel
GROUP BY verwendet. Es gibt folgende Basisfunktionen:
Funktion
Beschreibung
COUNT
Gibt die Anzahl von Einträgen zurück.
MIN
Gibt den kleinsten Wert, in z.B. einer
Spalte, zurück.
MAX
Gibt den größten Wert, z.B. einer Spalte,
zurück.
SUM
Gibt die Summe aller Werte, z.B. in einer
Spalte, zurück.
AVG
Gibt den Mittelwert aller Werte, z.B. in
einer Spalte, zurück.
Tabelle 16: Basis Aggregatfunktionen[26]
Unsere Mitarbeitertabelle für die unten genannten Beispiele:
6.1.7.8 WHERE
17
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
MitarbeiterID Vorname Nachname Geburtsdatum Urlaubsanspruch
Gehalt
1
Klaus
Apfel
08.05.1967
30
3200,00
2
Max
Mustermann 26.06.1957
24
3800,00
3
Klaus
Pohl
29.05.1990
30
2600,00
4
Manfred
Lehmann
12.11.1978
28
4800,00
5
Max
Kehl
24.10.1966
30
5200,00
Tabelle 17: Mitarbeiter Beispieltabelle
Im folgendem Beispiel wird das durchschnittliche, maximale und minimale Gehalt aus unserer Mitarbeitertabelle
ausgegeben:
SELECT AVG(Gehalt) [durchschnittliche Gehalt] FROM Mitarbeiter
SELECT MAX(Gehalt) [max. Gehalt] FROM Mitarbeiter
SELECT MIN(Gehalt) [min. Gehalt] FROM Mitarbeiter
Die eckigen Klammern ([]) ermöglichen einen Spaltennamen mit Leerzeichen als Ausgabe.
Ergebnisse:
durchschnittliche
Gehalt
3920,00
Tabelle 18: Ergebnis der Aggregatfunktion "AVG"
max. Gehalt
5200,00
Tabelle 19: Ergebnis der Aggregatfunktion "MAX"
min. Gehalt
2600,00
Tabelle 20: Ergebnis der Aggregatfunktion "MIN"
Hier wird der Zusatz GROUP BY verwendet, um nicht aggregierte Spalten mit ausgeben zu können. In diesem
Beispiel der Vorname und Nachname:
SELECT Vorname, Nachname, MAX(Gehalt) [max. Gehalt] FROM Mitarbeiter GROUP BY Vorname, Nachname
SELECT Vorname, Nachname, MIN(Gehalt) [min. Gehalt] FROM Mitarbeiter GROUP BY Vorname, Nachname
Ergebnisse:
Vorname Nachname
Max
Kehl
max.
Gehalt
5200,00
Tabelle 21: Ergebnis der Aggregatfunktion "MAX" mit Zusatz GROUP-BY
6.1.8 Aggregatfunktionen
18
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
min.
Gehalt
Vorname Nachname
Klaus
Pohl
2600,00
Tabelle 22: Ergebnis der Aggregatfunktion "MIN" mit Zusatz GROUP-BY
6.1.9 Erweiterte SQL Befehle
6.1.9.1 AND
Der AND-Operator wird für Filteraktionen benutzt, wenn mehr als eine Bedingung überprüft werden soll. Dieser
Operator liefert die boolischen Werte WAHR (TRUE) oder FALSCH (FALSE) zurück.[27]
Es gilt folgende Wahrheitstabelle:
AND
TRUE
FALSE UNKNOWN
TRUE
TRUE
FALSE
UNKNOWN
FALSE
FALSE
FALSE
FALSE
UNKNOWN UNKNOWN FALSE
UNKNOWN
In Anlehnung an: Skulschus (2007), S. 95[28]
Tabelle 23: Wahrheitstabelle vom AND-Operator
Die SQL-Syntax sieht folgendermaßen aus:
SELECT
*
FROM Mitarbeiter
WHERE 1. Bedingung [AND 2. Bedingung]
Es können beliebig viele Bedingungen mit AND angehangen werden. Es müssen laut Wahrheitstabelle dann alle
Bedingungen zutreffen, um Ergebnisse zu bekommen.
Im folgenden Beispiel werden nur Mitarbeiter selektiert, welche den Vornamen Max haben und einen
Urlaubsanspruch von unter 30 Tagen haben.
SELECT
*
FROM Mitarbeiter
WHERE Vorname = "Max" AND Urlaubsanspruch < 30
Ergebnis:
MitarbeiterID Vorname Nachname Geburtsdatum Urlaubsanspruch
2
Max
Mustermann 26.06.1957
24
Gehalt
3800,00
Tabelle 24: Selektionsergebnis mit AND-Operator
Es wird nur der Mitarbeiter mit der ID 2 ausgegeben, da der andere Mitarbeiter mit dem Vornamen Max einen
Urlaubsanspruch von 30 Tagen hat. Ohne die zweite Bedingung würden beide Mitarbeiter ausgegeben werden.
6.1.9 Erweiterte SQL Befehle
19
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
6.1.9.2 OR
Der OR-Operator ist wie der AND-Operator. Der Unterschied liegt nur darin, dass mindestens nur eine
Bedingung wahr sein muss (Anders als bei dem AND-Operator, wo alle Bedingungen zutreffen müssen).[27]
Es gilt folgende Wahrheitstabelle:
OR
TRUE
FALSE
UNKNOWN
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
UNKNOWN
UNKNOWN TRUE
UNKNOWN UNKNOWN
In Anlehnung an: Skulschus (2007), S. 95[28]
Tabelle 25: Wahrheitstabelle vom OR-Operator
Die SQL-Syntax sieht folgendermaßen aus:
SELECT
*
FROM Mitarbeiter
WHERE 1. Bedingung [OR 2. Bedingung]
Im folgenden Beispiel werden alle Mitarbeiter selektiert, welche den Vornamen Max oder einen Urlaubsanspruch
von mehr als 25 Tagen besitzen.
SELECT
*
FROM Mitarbeiter
WHERE Vorname = 'Max' OR Urlaubsanspruch > 25
Ergebnis:
MitarbeiterID Vorname Nachname Geburtsdatum Urlaubsanspruch
Gehalt
1
Klaus
Apfel
08.05.1967
30
3200,00
2
Max
Mustermann 26.06.1957
24
3800,00
3
Klaus
Pohl
29.05.1990
30
2600,00
4
Manfred
Lehmann
12.11.1978
28
4800,00
5
Max
Kehl
24.10.1966
30
5200,00
Tabelle 26: Selektionsergebnis mit OR-Operator
In diesem Beispiel werden alle Mitarbeiter selektiert, da alle Mitarbeiter einen Urlaubsanspruch von mehr als 25
Tagen haben, bis auf der Mitarbeiter mit der ID 2. Dieser heißt aber Max und wird deshalb mit selektiert. Wird
die erste Bedingung abgeändert, so dass z.B. Klaus gesucht wird, so würde der Mitarbeiter Max mit der ID 2 nicht
ausgegeben werden, da dieser weder Klaus heißt noch einen Urlaubsanspruch von mehr als 25 Tagen besitzt.
6.1.9.2 OR
20
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
6.1.9.3 LIKE
Der LIKE-Operator ist ein weiteres Schlüsselwort in der WHERE-Klausel. Dieser Operator ermöglicht eine
Suche nach einer Zeichenfolge, welches mit einem bestimmtem Muster übereinstimmt. Ein Muster kann normale
Zeichen oder Platzhalter enthalten.[29]
In dieser Tabelle sind alle verfügbaren Muster/Platzhalter für den LIKE-Operator aufgelistet:
Platzhalter
%
Beschreibung
Beispiel
WHERE Name LIKE '%Max%' findet alle
Eine Zeichenfolge aus null
Namen, die das Wort Max enthalten (Max,
oder mehr Zeichen
Maximilian, Maxim, ...)
_
Ein einzelnes Zeichen
WHERE Vorname LIKE '_ean' findet alle
Vornamen mit vier Buchstaben, die auf ean enden
(Dean, Sean, ...)
[]
Beliebiges einzelnes
Zeichen im angegebenen
Bereich ([a-f]) oder in der
angegebenen Menge
([abcdef]).
WHERE Vorname LIKE '[C-P]arsen' findet alle
Namen, die auf 'arsen' enden und mit einem
einzelnen Zeichen zwischen C und P beginnen
(Carsen, Larsen, Karsen, ...)
[^]
Beliebiges einzelnes
Zeichen, das sich nicht im
WHERE Name LIKE 'de[^l]%' findet alle
angegebenen Bereich
Namen, die mit 'de' beginnen und deren dritter
([^a-f]) oder in der
Buchstabe nicht l ist.
angegebenen Menge
([^abcdef]) befindet.
In Anlehnung an: MSDN - LIKE Operator[30]
Tabelle 27: Verfügbare Platzhalter für den LIKE-Operator
Dieses Beispiel gibt alle Mitarbeiter zurück, welche mit dem Nachnamen auf "mann" enden:
SELECT
Vorname,
Nachname
FROM Mitarbeiter
WHERE Nachname LIKE '%mann%'
Ergebnis:
Vorname Nachname
Max
Mustermann
Manfred
Lehmann
Tabelle 28: Ergebnis mit LIKE-Operator
6.1.9.3 LIKE
21
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
6.1.9.4 IN
Der IN-Operator ist der letzte hier besprochene Operator. Dieser Operator erlaubt mehrere Werte in der
WHERE-Klausel.[31] Die Syntax ist sehr simpel:
SELECT
*
FROM Tabelle
WHERE Spalte IN (value1, value2, ...)
Wie bereits beim Einfügen von Datensätzen müssen die Werte den entsprechenden Datentyp der Spalte gleichen.
So sind Zeichenketten und Daten zusätzlich mit Hochkommata (') umschlossen.
Folgende Anweisung selektiert alle Mitarbeiter mit folgenden Vornamen: Max und Manfred:
SELECT
Vorname,
Nachname
FROM Mitarbeiter
WHERE Vorname IN ('Max', 'Manfred')
Ergebnis:
Vorname Nachname
Max
Mustermann
Manfred
Lehmann
Max
Kehl
Tabelle 29: Ergebnisselektion mit IN-Operator
6.2 Transaktionen
Eine Transaktion kann man als eine Arbeitseinheit bezeichnen. Jede ausgeführte SQL-Anweisung ist eine
implizite Transaktion. Transaktionen werden mit den Befehlen COMMIT und ROLLBACK gesteuert. Alle
Anweisungen in einer Transaktion müssen erfolgreich durchlaufen, denn es werden entweder alle oder keine
Anweisungen in die Datenbank abgesetzt.[32] Der COMMIT-Befehl beendet eine Transaktion, so dass die
Änderungen in die Datenbank geschrieben werden. Mit dem ROLLBACK-Befehl werden die Änderungen wieder
rückgängig gemacht. Diese Befehle werden in die Kategorie der TCL (Transaction Control Language)
eingruppiert. Eine zusätzliche Besonderheit bei dem MS SQL-Server ist, dass diese Transaktionsanweisungen
zusätzlich noch nach dem SQL-Befehl BEGIN TRANSACTION stehen.
Ein Beispiel für eine Transaktion wäre z.B. bei den Mitarbeitern das Gehalt zu verändern. Die TCL wird in den
folgenden SQL-Anweisungen noch einmal verdeutlicht:
BEGIN TRANSACTION
GO
UPDATE Mitarbeiter
SET Gehalt = Gehalt + 500
WHERE MitarbeiterID = 5
GO
COMMIT TRANSACTION
6.1.9.4 IN
22
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
In dieser Anweisung wird die Änderung in der Datenbank abgespeichert, sodass der Mitarbeiter eine
Gehaltserhöhung bekommen hat.
BEGIN TRANSACTION
GO
UPDATE Mitarbeiter
SET Gehalt = Gehalt + 500
WHERE MitarbeiterID = 5
GO
ROLLBACK TRANSACTION
Diese Anweisung wird die Änderung nicht in die Datenbank abspeichern.
6.3 Funktionen
Neben den Aggregatfunktionen und weiteren Funktionen wie z.B. ROUND (Werte runden) oder LEN (Länge
einer Zeichenkette ausgeben) können auch eigene Funktionen geschrieben werden. Folgende Syntax erstellt eine
eigene Funktion:
CREATE FUNCTION Funktionsname
(Parameter)
RETURNS (Datentyp)
AS
SQL-Anweisung
RETURN Rückgabewert
Im nächsten Beispiel wird eine Addiere-Funktion geschrieben, welche zwei Werte miteinander addiert und
zurückgibt.
CREATE FUNCTION Addiere
(
@Zahl1 FLOAT NOT NULL,
@Zahl2 FLOAT NOT NULL
)
RETURNS (FLOAT)
AS
DECLARE @ergebnis float
SET @ergebnis = @Zahl1 + @Zahl2
RETURN @ergebnis
In dieser Funktion haben wir zwei Parameter, welche mit einem @ vor dem Namen deklariert wurden. Beide
Parameter sind vom Datentyp float und es müssen beide Parameter übergeben werden.
Die Ausgabe:
SELECT Addiere(10, 10.5) Ergebnis
Ergebnis:
6.2 Transaktionen
23
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
Ergebnis
20,50
Tabelle 30: Ergebnis der Addiere-Funktion
Jede Funktion kann über den SQL-Befehl ALTER wieder geändert oder über den Befehl DROP gelöscht werden.
Funktionen können in jedem SQL-Statement benutzt werden, was bei Prozeduren nicht der Fall ist. Prozeduren
sind wie Funktionen vorgefertigte Routinen, welche weder einen Rückgabewert besitzen noch in eine
SQL-Anweisung integriert werden können. Sie werden für Routinen z.B. in Nachtverarbeitungen für die
Sicherung von Daten oder das Befüllen von Tabellen benutzt.
7 Bewertung
Ziel dieser Fallstudie war es, den Lesern die Grundlagen von SQL zu vermitteln. Zurückblickend lässt sich
festhalten, dass in den vorherigen Punkten die wichtigsten Grundlagen genannt und anhand von Beispielen
verdeutlicht wurden. Die wichtigsten Befehle wurden erläutert, so dass anschließend kleinere SQL Statements
selbstständig durchgeführt werden können. Das Hauptaugenmerk dieser Fallstudie liegt jedoch auf den
grundlegenden SQL-Befehlen.
Die Erstellung des Screenvideos ist der andere Teilbereich der Zielsetzung. Diese Dokumentation im Wiki dient
als Unterstützung zum Screenvideo und bildet zusammen ein grundlegendes Verständnis in den Einstieg von
SQL. Es dient als Kurzüberblick über die wichtigsten grundlegenden Befehle. Um sich einen besseren Einblick
über den Aufbau und die Struktur von Datenbanken zu verschaffen ist weitere Literatur notwendig. Ebenso
werden nur die einfachsten SQL-Anweisungen aufgeführt. Für komplexere Aufgaben ist ebenfalls weitere
Literatur ratsam.
8 Schlussbetrachtung
Zu Beginn dieser Fallstudie wurden dem Leser die wichtigsten Grundlagen und Begriffe zu Datenbanken
erläutert. In den Abschnitten 6.1.1 bis 6.1.6 wurden grundlegende Begriffe zu der Struktur und zu dem Aufbau
von Datenbanken aufgeführt. Dies begann mit dem Begriff der relationalen Datenbank. Hier ist es notwendig zu
wissen wie Datenbanken aufgebaut sind. Eine relationale Datenbank besteht aus Relationen, Tupel, Attributen
und Domänen. Anschließend wurden dem Leser die drei verschiedenen Kategorien in SQL vorgestellt. Hierbei
gibt es einmal die Data Manipulation Language (DML). Die DML beinhaltet die Befehle zum Schreiben,
Löschen, Lesen und Ändern von Daten. Die Data Definition Language (DDL) hingegen beinhaltet Befehle zum
Erstellen, Löschen oder Ändern von Daten. Die Data Control Language (DCL) enthält die Befehle die zur
Vergabe von Berechtigungen benötigt werden. Die einzelnen Anweisungen wurden anschließend in dem
Abschnitt 6.1.7 im Einzelnen aufgeführt und beschrieben.
Die Tabellen einer Datenbank stehen untereinander in Beziehung. Die Verknüpfung der Tabellen erfolgt anhand
der Primär- und Fremdschlüssel. Anschließend wurden im Abschnitt 6.1.6 die Datentypen erläutert. Der Datentyp
definiert die Art (Ganzzahl, Kommazahl, Zeichenkette) und den Wertebereich der Daten.
Nachdem grundlegende Kenntnisse zu dem Aufbau und der Struktur von Datenbanken gewonnen wurden,
wurden im Folgendem die grundlegenden SQL-Befehle aufgeführt. Die Befehle CREATE, UPDATE, ALTER,
DROP, DELETE, INSERT dienen dazu, vorhandene Daten zu verändern, zu löschen oder neue Daten anzulegen.
Der SELECT-Befehl dient dazu, eine Hauptaufgabe von Datenbanken ausführen zu können. Datenbanken dienen
neben der Datensammlung auch zur Informationsgewinnung. Für diesen Zweck müssen Abfragen ausgeführt
6.3 Funktionen
24
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
werden, die gezielt einzelne Daten aus einer Fülle von Daten heraus filtern können. Dies geschieht mit Hilfe des
SELECT-Befehls. Die Befehle ORDER BY und WHERE können hierzu unterstützend eingesetzt werden.
Anhand von ORDER BY lassen sich die Daten nach Belieben sortieren. Der WHERE-Befehl sorgt dafür, dass ein
Filter bzw. eine Abgrenzung auf einzelne Datensätze stattfindet, so dass nicht alle Datensätze ausgegeben werden.
Im nächsten Abschnitt wurden die Basis-Aggregatfunktionen erläutert. Dies sind Funktionen die Berechnungen
durchführen um so beispielsweise den Durchschnittswert, das Maximum oder auch das Minimum ermitteln zu
können. Im Abschnitt 6.1.9 ?Erweiterte SQL Befehle? wurden die Befehle AND, LIKE, IN und OR erläutert.
Diese Befehle dienen dazu weitere Filteraktionen durchzuführen und unterstützen somit ebenfalls den
SELECT-Befehl.
Über die grundlegenden SQL-Statements hinaus gibt es noch sogenannte Transaktionen (Abschnitt 6.2).
Transaktionen können mit dem Befehl COMMIT oder ROLLBACK versehen werden. COMMIT schließt eine
Transaktion erfolgreich ab. Hierbei werden die Änderungen gespeichert. Der Befehl ROLLBACK hingegen setzt
die Änderungen wieder zurück, sodass keine Werte verändert werden. Der letzte Punkt der sich mit den
Grundlagen von SQL befasst hat waren die Funktionen. SQL erlaubt es eigenen Funktionen zu schreiben.
Funktionen können gezielt eingesetzt werden um z.B. SELECT?Abfragen zu vereinfachen.
Diese Fallstudie bediente sich der MS SQL-Server 2012 Syntax. Neben dem SQL-Server von Microsoft gibt es
noch weitere Datenbankmanagementsysteme von z.B. Oracle und IBM (DB2). Die SQL-Befehle unterscheiden
sich nur minimal von den anderen Systemen und so können die Befehle auch in anderen Systemen angewandt
werden. Um tiefer in SQL einsteigen zu können ist weitere Fachliteratur notwendig. Microsoft liefert außerdem
mit der SQL-Server 2012 Installation neben der Einsteiger-Beispieldatenbank AdventureWorks noch viele
vorgefertigte SQL-Anweisungen mit, womit man sich über die Grundlagen hinhaus weiter qualifizieren kann.
9 Anhang
9.1 Screencast
Das Screenvideo befindet sich hier (Youtube).
9.2 Kontrollfragen
Die Kontrollfragen zum Erfassen des Kenntnisstandes können unter diesem Formular (Google Docs Formular)
aufgerufen werden. Die Lösungen zu den Fragen befinden sich hier (Adobe Acrobat PDF Datei).
9.3 Fußnoten
1. ? Vgl. Date; Darwen (1998), S. 27 f.
2. ? Vgl. Matthiessen; Unterstein (2007), S. 32
3. ? Vgl. Konopasek (2010), S. 151
4. ? Vgl. Geisler (2011), S. 211
5. ? Vgl. Geisler (2011), S. 210
6. ? Vgl. Oppel; Sheldon (2008), S. 19
7. ? 7,0 7,1 Vgl. Ebner (2002), S. 20 f.
8 Schlussbetrachtung
25
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
8. ? Ebner (2002), S. 20
9. ? Vgl. Ebner (2002), S. 23
10. ? Vgl. Weber; Schmeling (2007), S. 71
11. ? 11,0 11,1 11,2 11,3 11,4 11,5 Vgl. Weber; Schmeling (2007), S. 71 ff.
12. ? 12,0 12,1 Vgl. Geisler (2011), S. 210
13. ? 13,0 13,1 Vgl. Kuhlmann; Müllmerstadt (2004), S. 28 f.
14. ? Vgl. MSDN - Datenbankbezeichner (2012)
15. ? Vgl. Geisler (2011), S. 210 f.
16. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 31
17. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 32
18. ? Vgl. Matthiessen; Unterstein (2007), S. 201 f.
19. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 78
20. ? Vgl. Matthiessen; Unterstein (2007), S. 200 f.
21. ? Vgl. Geisler (2011), S. 212 f.
22. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 79 f.
23. ? Kuhlmann; Müllmerstadt (2004), S. 80
24. ? Vgl. Konopasek (2010), S. 179 f.
25. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 188
26. ? Vgl. MSDN - Aggregatfunktionen (2012)
27. ? 27,0 27,1 Vgl. Kuhlmann; Müllmerstadt (2004), S. 84 f.
28. ? 28,0 28,1 Vgl. Skulschus (2007), S. 95
29. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 131.
30. ? Vgl. MSDN - LIKE Operator (2012)
31. ? Vgl. Kuhlmann; Müllmerstadt (2004), S. 134 f.
32. ? Vgl. Geisler (2011), S. 318
10 Literatur- und Quellverzeichnis
Date, Chris J.; Darwen, Hugh: SQL- der Standard: SQL/92 mit den Erweiterungen
CLI und PSM, 3. Auflage, Addison-Wesley Verlag, München 1998
Matthiessen, Günter; Unterstein, Michael: Relationale Datenbanken und
Matthiessen; Unterstein
Standard-SQL: Konzepte der Entwicklung und Anwendung, aktualisierte Neuauflage,
(2007)
Addison-Wesley Verlag, München 2007
Konopasek, Klemens: SQL Server 2008 R2- Der schnelle Einstieg: Abfragen,
Konopasek (2010)
Transact-SQL, Entwicklung und Verwaltung, 4. Auflage, Addison-Wesley Verlag,
München 2010
Geisler (2011)
Geisler, Frank: Datenbanken- Grundlagen und Design, 4. Auflage, mitp Verlag, 2011
Oppel, Andy; Sheldon, Robert: SQL: A Beginner's Guide, 3. Auflage, Mcgraw-Hill
Oppel; Sheldon (2008)
Professional Verlag, 2008
Ebner (2002)
Ebner, Michael: SQL lernen, 2. Auflage, Addison-Wesley Verlag, 2002
Weber, Sebastian; Schmeling, Holger: Datenbankentwicklung mit dem Microsoft SQL
Weber; Schmeling (2007)
Server 2005, 1. Auflage, Hanser Verlag, 2007
Kuhlmann, Gregor; Müllmerstadt Friedrich; Moos, Ludwig (Hrsg.): SQL - Der
Kuhlmann; Müllmerstadt
Schlüssel zu relationalen Datenbanken, 2. Auflage, Rowohlt Taschenbuch Verlag,
(2004)
Hamburg 2004
Skulschus, Marco: SQL und relationale Datenbanken, 1. Auflage, Comelio Verlag,
Skulschus (2007)
2007
Date; Darwen (1998)
9.3 Fußnoten
26
Erstellung_eines_Screen_Videos_zum_Thema_?Grundlagen_von_SQL?
MSDN Datenbankbezeichner
(2012)
MSDN Aggregatfunktionen
(2012)
o. V.: Microsoft Developer Network: Datenbankbezeichner,
http://msdn.microsoft.com/de-de/library/ms175874.aspx (31.05.2012 18:13)
(Quellbeleg)
o. V.: Microsoft Developer Network: Aggregatfunktionen,
http://msdn.microsoft.com/de-de/library/ms173454.aspx (31.05.2012 18:16)
(Quellbeleg)
o. V.: Microsoft Developer Network: LIKE Operator,
MSDN - LIKE Operator
http://msdn.microsoft.com/de-de/library/ms179859.aspx (31.05.2012 18:14)
(2012)
(Quellbeleg)
10 Literatur- und Quellverzeichnis
27
Herunterladen