T-SQL-Abfragen für Microsoft SQL-Server 2022 - Dirk Angermann - E-Book

T-SQL-Abfragen für Microsoft SQL-Server 2022 E-Book

Dirk Angermann

0,0

Beschreibung

  • Fundierter Einstieg in SQL-Datenbankabfragen
  • Von SELECT-Abfragen über das Verwenden von Tabellenwertausdrücken bis zum Ausführen gespeicherter Prozeduren
  • Praktische Beispiele mit Aufgabenstellung, Kommentaren und Ergebnissen

T-SQL-Abfragen Schritt für Schritt

Der Datenbank-Experte Dirk Angermann zeigt Ihnen, wie Sie über das SQL Server Management Studio Ihre ersten T-SQL-Datenbankabfragen vornehmen. Als Grundlage dient eine einfach strukturierte Datenbank, damit Sie immer den Überblick behalten.

Praktische Anleitung

Anhand vieler praktischer Beispiele führt Sie der Autor in die Verwendung der verschiedenen Sprachelemente wie Funktionen, Variablen, Operatoren und Ausdrücke ein. Sie lernen unter anderem, wie Sie SELECT-Abfragen vornehmen, Daten filtern und sortieren, mit den verschiedenen SQL-Server-Datentypen arbeiten sowie Unterabfragen schreiben. So erfahren Sie, wie effizienter und präziser T-SQL-Code geschrieben wird, um die abzurufende Datenmenge ordnungsgemäß zu beschreiben.

Bessere Abfrageleistung und Umgang mit Fehlermeldungen

Sie erhalten aber nicht nur praktische Hilfe für Ihre Datenauswertungen, sondern lernen zudem, die Abfrageleistung zu verbessern und mit Fehlerinformationen umzugehen.

Aus dem Inhalt:

  • Schreiben von SELECT-Abfragen und Unterabfragen
  • Arbeiten mit SQL-Server-Datentypen
  • Gruppieren und Aggregieren von Daten
  • Verwenden von integrierten Funktionen
  • Pivotieren und Groupingsets
  • Verwenden von Fensterrangfolge- und Aggregatfunktionen
  • Ausführen von gespeicherten Prozeduren
  • Programmieren mit T-SQL
  • Implementieren von Transaktionen
  • Fehlerbehandlung und Verbesserung der Abfrage

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 246

Veröffentlichungsjahr: 2024

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Dirk Angermann
T-SQL-Abfragen für
Microsoft SQL Server 2022
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen
Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über <http://dnb.d-nb.de>
abrufbar.
ISBN 978-3-7475-0633-2
1. Auflage 2024
www.mitp.de
Telefon: +49 7953 / 7189 - 079
Telefax: +49 7953 / 7189 - 082
© 2024 mitp-Verlags GmbH & Co. KG, Frechen
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk
berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne
der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von
jedermann benutzt werden dürften.
Dieses E-Book verwendet das EPUB-Format und ist optimiert für die Nutzung mit Apple Books auf
dem iPad von Apple. Bei der Verwendung von anderen Readern kann es zu Darstellungsproblemen
kommen.
Der Verlag räumt Ihnen mit dem Kauf des E-Books das Recht ein, die Inhalte im Rahmen des
geltenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist
urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des
Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Dies gilt
insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung
und Verarbeitung in elektronischen Systemen.
Der Verlag schützt seine E-Books vor Missbrauch des Urheberrechts durch ein digitales
Rechtemanagement. Bei Kauf im Webshop des Verlages werden die E-Books mit einem nicht
sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert. Bei Kauf in anderen E-Book-
Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den
Seiten der jeweiligen Anbieter.
Lektorat: Katja Völpel
Sprachkorrektorat: Petra Heubach-Erdmann
Covergestaltung: Christian Kalkert
Bildnachweis: didiksaputra/stock.adobe.com
Satz: Petra Kleinwegen
electronic publication: CPI books GmbH, Leck
5
Inhaltsverzeichnis
Einleitung
11
Aufbau des Buches
11
Begleitmaterial
12
Danksagung
19
Über den Autor
19
1 Arbeiten mit dem SQL Server Management Studio
21
1.1 Starten von SQL Server Management Studio
21
1.2 Herstellen einer Verbindung mit SQL Server
21
1.3 Einstellungen im SQL Server Management Studio
22
1.4 Arbeiten mit Skriptdateien und Projekten
34
2 Einführung in T-SQL-Abfragen
39
2.1 Einführung in T-SQL
39
2.1.1 Über T-SQL
39
2.1.2 Kategorien von T-SQL-Anweisungen
41
2.1.3 T-SQL-Sprachelemente
41
2.2 Grundlegendes zu Mengen
48
2.2.1 Mengenlehre und SQL Server
48
2.2.2 Auf SQL Server-Abfragen angewendete Mengenlehre
50
2.3 Grundlegendes zur Prädikatlogik
50
2.3.1 Prädikatlogik und SQL Server
50
2.3.2 Auf SQL Server angewendete Prädikatlogik
51
2.4 Grundlegendes zur logischen Reihenfolge der Vorgänge in
SELECT-Anweisungen
51
2.4.1 Elemente einer SELECT-Anweisung
52
2.4.2 Logische Abfrageverarbeitung
52
2.4.3 Anwenden der logischen Reihenfolge von Vorgängen
zum Schreiben von SELECT-Anweisungen
54
3 Schreiben von SELECT-Abfragen
55
3.1 Übersicht
55
3.1.1 Schreiben von einfachen SELECT-Anweisungen
55
3.1.2 Entfernen von Duplikaten mit DISTINCT
63
3.1.3 Verwenden von Spaltenaliassen
64
3.1.4 Schreiben von einfachen CASE-Ausdrücken
67
Inhaltsverzeichnis
6
4 Filtern von Daten
71
4.1 Filtern von Daten in der WHERE-Klausel
71
4.2 Arbeiten mit unbekannten Werten
77
5 Gruppieren und Aggregieren von Daten
79
5.1 Verwenden von Aggregatfunktionen
79
5.2 Einsatz von DISTINCT und ALL
82
5.3 Verwenden der GROUP BY-Klausel
84
5.4 Filtern von Gruppen mit HAVING
88
6 Daten sortieren
91
6.1 Sortieren von Daten
91
6.2 Filtern von Daten mithilfe der TOP-Option
93
6.3 Filtern von Daten mithilfe der OFFSET FETCH-Option
96
7 Arbeiten mit SQL Server-Datentypen
99
7.1 Einführung in SQL Server-Datentypen
99
7.1.1 SQL Server-Datentypen
99
7.1.2 Numerische Datentypen
100
7.1.3 Datentypen der Binärzeichenfolge
102
7.1.4 Sonstige Datentypen
102
7.1.5 Datentypenrangfolge
103
7.1.6 Wann werden Dateitypen konvertiert?
104
7.2 Arbeiten mit Zeichendaten
106
7.2.1 Zeichendatentypen
106
7.2.2 Sortierung
107
7.2.3 Zeichenfolgenverkettungen
108
7.2.4 Zeichenfolgenfunktionen
110
7.2.5 Arbeiten mit Datum- und Uhrzeitdaten
114
7.3 Datums- und Uhrzeitdatentypen
115
7.3.1 Datums- und Uhrzeitdatentypen: Literale
115
7.3.2 Getrenntes Arbeiten mit Datum und Uhrzeit
116
7.3.3 Abfragen von Datums- und Uhrzeitwerten
117
7.3.4 Datums- und Uhrzeitfunktionen
117
8 Verwenden von integrierten Funktionen
123
8.1 Schreiben von Abfragen mit integrierten Funktionen
123
8.1.1 Typen von in SQL Server integrierten Funktionen
123
8.1.2 Skalarfunktionen
124
8.1.3 Aggregatfunktionen
126
8.1.4 Fensterfunktionen
126
8.1.5 Rowsetfunktionen
127
Inhaltsverzeichnis
7
8.2 Verwenden von Konvertierungsfunktionen
128
8.2.1 Implizite und explizite Datentypenkonvertierung
128
8.2.2 Konvertierung mit CAST
129
8.2.3 Konvertierung mit CONVERT
130
8.2.4 Konvertieren von Zeichenfolgen mit PARSE
132
8.2.5 Konvertieren mit TRY_PARSE und TRY_CONVERT
133
8.3 Verwenden von logischen Funktionen
135
8.3.1 Schreiben von logischen Tests mit Funktionen
135
8.3.2 Ausführen von Bedingungsüberprüfungen mit IIF
136
8.3.3 Auswählen von Elementen aus einer Liste mit CHOOSE
137
8.4 Verwenden von Funktionen, um mit NULL zu arbeiten
138
8.4.1 Konvertieren von NULL mit ISNULL
138
8.4.2 Verwenden von COALESCE, um Nicht-NULL-Werte
zurückzugeben
139
8.4.3 Verwenden von NULLIF, um NULL zurückzugeben,
wenn Werte zusammenpassen
140
9 Verwenden von Unterabfragen
141
9.1 Übersicht
141
9.2 Schreiben von eigenständigen Unterabfragen
142
9.2.1 Schreiben von mehrwertigen Unterabfragen
144
9.2.2 Schreiben von korrelierten Unterabfragen
148
9.2.3 Verwenden von EXISTS-Prädikat mit Unterabfragen
150
10 Abfragen mehrerer Tabellen
153
10.1 Grundlegendes zu Joins
153
10.1.1 Das kartesische Produkt – CROSS JOIN
153
10.1.2 Abfragen mit INNER JOIN
155
10.1.3 Abfrage mit SELF JOIN
163
10.1.4 Abfragen mit OUTER JOIN
164
11 Verwenden von Tabellenwertausdrücken
169
11.1 Verwenden von Sichten
169
11.1.1 Schreiben von Abfragen, die Ergebnisse von Sichten
zurückgeben
169
11.1.2 Erstellen einfacher Sichten
171
11.2 Verwenden von Inline-Tabellenwertfunktionen
173
11.2.1 Schreiben von Abfragen, die Inline-Tabellenwertfunktionen
verwenden
173
11.2.2 Erstellen von einfachen Inline-Tabellenwertfunktionen
173
11.2.3 Abrufen von Inline-Tabellenwertfunktionen
174
Inhaltsverzeichnis
8
11.3 Verwenden von abgeleiteten Tabellen
175
11.3.1 Schreiben von Abfragen mit abgeleiteten Tabellen
175
11.3.2 Richtlinien für abgeleitete Tabellen
177
11.3.3 Verwenden von Aliassen für Spaltennamen in abgeleiteten
Tabellen
177
11.4 Verwenden allgemeiner Tabellenausdrücke
179
11.4.1 Schreiben von Abfragen mit allgemeinen Tabellen-
ausdrücken
179
11.4.2 Erstellen und Abfragen von allgemeinen Tabellen-
ausdrücken
180
12 Verwenden von Mengenoperatoren
183
12.1 Schreiben von Abfragen mit dem UNION-Operator
183
12.1.1 Interaktion zwischen Mengen
183
12.1.2 Verwenden des UNION-Operators
184
12.1.3 Verwenden des UNION ALL-Operators
186
12.2 Verwenden von EXCEPT und INTERSECT
186
12.2.1 Verwenden des INTERSECT-Operators
186
12.2.2 Verwenden des EXCEPT-Operators
187
13 Verwenden von Fensterrangfolge-, Offset- und Aggregat-
funktionen
189
13.1 Erstellen von Fenstern mit OVER
189
13.1.1 SQL-Fensterfunktionen
189
13.1.2 Fensterkomponenten
190
13.1.3 Verwenden von OVER
190
13.1.4 Partitionieren von Fenstern
191
13.2 Kennenlernen von Fensterfunktionen
192
13.2.1 Fensterfunktionen definieren
193
13.2.2 Fensteraggregatfunktionen
193
13.2.3 Fensterrangfolgefunktionen
194
13.2.4 Fensterverteilungsfunktionen
202
13.2.5 Fensteroffsetfunktionen
203
14 Pivotieren und Groupingsets
205
14.1 Schreiben von Abfragen mit PIVOT und UNPIVOT
205
14.1.1 Was ist Pivotieren?
205
14.1.2 PIVOT-Elemente
207
14.1.3 Schreiben von Abfragen mit UNPIVOT
208
14.2 Arbeiten mit Groupingsets
210
14.2.1 Schreiben von Abfragen mit Groupingsets
210
14.2.2 CUBE und ROLLUP
213
Inhaltsverzeichnis
9
15 Abfragen von SQL Server-Metadaten
217
15.1 Abfragen von Systemkatalogsichten und Systemfunktionen
217
15.1.1 Systemkatalogsichten
217
15.1.2 Informationsschemasichten
219
15.1.3 Systemmetadatenfunktionen
220
15.2 Ausführen von gespeicherten Systemprozeduren
222
15.2.1 Ausführen von gespeicherten Prozeduren
222
15.2.2 Ausführen von gespeicherten Systemprozeduren
223
15.2.3 Häufig verwendete gespeicherte Systemprozeduren
224
15.3 Abfragen von dynamischen Verwaltungssichten
224
15.3.1 Dynamische Verwaltungsobjekte
224
15.3.2 Kategorisieren von dynamischen Verwaltungssichten
225
15.3.3 Abfragen von dynamischen Verwaltungssichten und
-funktionen
226
16 Ausführen von gespeicherten Prozeduren
229
16.1 Abfragen von Daten mit gespeicherten Prozeduren
229
16.1.1 Untersuchen von gespeicherten Prozeduren
229
16.1.2 Ausführen von gespeicherten Prozeduren
230
16.2 Übergeben von Parametern an gespeicherte Prozeduren
231
16.2.1 Übergeben von Eingabeparametern
231
16.2.2 Arbeiten mit OUTPUT-Parametern
231
16.3 Erstellen von einfachen gespeicherten Prozeduren
232
16.3.1 Erstellen von Prozeduren, die Zeilen übergeben
232
16.3.2 Erstellen von Prozeduren, die Parameter annehmen
234
16.4 Arbeiten mit dynamischem SQL
236
16.4.1 Erstellen von dynamischem SQL
236
16.4.2 Schreiben von Abfragen mit dynamischem SQL
237
17 Programmieren mit T-SQL
239
17.1 T-SQL-Programmierelemente
239
17.1.1 Einführung in T-SQL-Batches
239
17.1.2 Arbeiten mit Batches
240
17.1.3 Einführung in T-SQL-Variablen
240
17.1.4 Arbeiten mit Variablen
242
17.1.5 Arbeiten mit Synonymen
243
17.2 Steuern des Programmflusses
244
17.2.1 T-SQL-Sprache zur Ablaufsteuerung
244
17.2.2 Arbeiten mit IF … ELSE
244
17.2.3 Arbeiten mit WHILE
246
Inhaltsverzeichnis
10
18 Implementieren der Fehlerbehandlung
249
18.1 Verwenden von TRY/CATCH-Blöcken
249
18.1.1 Strukturierte Ausnahmebehandlung
249
18.1.2 Erstellen von TRY- und CATCH-Blöcken
250
18.2 Arbeiten mit Fehlerinformationen
251
18.2.1 Abfragen eines ERROR-Objekts
251
18.2.2 Verwenden der THROW-Anweisung
252
19 Implementieren von Transaktionen
255
19.1 Transaktionen und das Datenbankmodul
255
19.1.1 Definieren von Transaktionen
255
19.1.2 Die Notwendigkeit von Transaktionen: Probleme mit
Batches
256
19.1.3 Transaktionen erweitern Batches
256
19.2 Steuern von Transaktionen
258
19.2.1 BEGIN TRANSACTION
258
19.2.2 COMMIT TRANSACTION
259
19.2.3 ROLLBACK TRANSACTION
259
20 Verbessern der Abfrageleistung
263
20.1 Faktoren der Abfrageleistung
263
20.1.1 Schreiben von leistungsstarken Abfragen
263
20.1.2 Indizieren in SQL Server
264
20.1.3 Grundlagen zu SQL Server-Index: Gruppierter Index
265
20.1.4 Grundlagen zu SQL Server-Index: nicht gruppierter
Index
266
20.1.5 SQL Server-Indizes: Leistungsaspekte
266
20.2 Anzeigen der Abfrageleistung
267
20.2.1 Was ist ein Ausführungsplan?
267
20.2.2 Tatsächliche und geschätzte Ausführungspläne
268
20.2.3 Anzeigen grafischer Ausführungspläne
269
20.2.4 Interpretieren des Ausführungsplanes
270
20.2.5 Anzeige von Abfragestatistiken
270
Index
273
11
Einleitung

Aufbau des Buches

Begleitmaterial

Danksagung

Über den Autor
Aufbau des Buches
In der SQL-Fachliteratur findet man zum Thema »Abfragen« die unterschied-
lichsten Informationen. Und immer wird darauf hingewiesen, dass dies bei
Oracle-Datenbanken so zu schreiben, bei MySQL-Datenbanken so zu schreiben
und bei T-SQL von Microsoft so zu schreiben ist. Das ist in vielen Fällen verwir-
rend. Deswegen basiert dieses vorliegende Buch auf reiner T-SQL-Syntax. Auch
ist dieses Buch für blutige Einsteiger gedacht. Administratoren, die diese Ab-
fragesprache auch in einigen administrativen Themen benötigen, Entwickler,
die die Syntax kennenlernen möchte, da viel davon sich in Datenbankobjekten
widerspiegelt. Aber auch Benutzer, die sich mit der Berichtserstellung ausein-
andersetzen müssen. Natürlich gibt es zu jedem Thema des Buches noch tiefer
greifende Informationen. Das soll hier nicht das Ziel sein. Es soll den ersten
Einstieg geben. Die Datenbank, auf die sich alle Beispiele beziehen, ist eine sehr
kleine und vereinfachte Datenbank. Der Sinn dahinter besteht darin, die Infor-
mationen, die die Abfragen liefern, auch zu vergleichen und nicht einfach hin-
zunehmen. Das würde sich als schwierig erweisen, wenn die Tabellen Tausende
von Zeilen hätten. Auch soll es einfach sein, den Aufbau dieser Datenbank zu
verstehen. Denn nur dann gelingt es, die Abfragen auch besser lesen zu können.
Microsoft bietet schon seit SQL Server 2005 eine Beispieldatenbank »Adventu-
reWorks« an, die sowohl Entwickler als auch Administratoren zu Testzwecken
nutzen können. Aber sich in die Struktur der Datenbank mit den Tausenden von
Datensätzen hineinzudenken, benötigt viel Zeit. Dieses Buch soll schnell und
kompakt einen Einstieg bringen. Denn mit dem dann aufgebauten Wissen und
der Überzeugung, dass die Daten wirklich dem entsprechen, was die Abfrage
sucht, kann man sich dann mit jeder anderen Datenbank auseinandersetzen.
Egal, welche Größe sie hat. Sie finden die Datenbank zum Buch mit vielen ande-
ren Materialien unter www.mitp.de/0631.
12
Einleitung
Begleitmaterial
Das im Buch benutzte Material basiert auf der neuesten Version der Software
von Microsoft: SQL Server 2022. Im Laufe der Erstellung des Buches kamen ei-
nige kumulativen Updates, die hier aber keine Rolle spielen. Natürlich kann die
Datenbank auch auf früheren Versionen angelegt und abgefragt werden. Sollten
diverse Möglichkeiten erst ab einer bestimmten Version im Abfrage-Code zur
Verfügung stehen, wird im Kapitel explizit darauf hingewiesen. Microsoft stellt
zwei Editionen zur Verfügung, die kostenlos genutzt werden können: die »SQL
Server Express Edition« und die »SQL Server Developer Edition«. Diese können
bei Microsoft heruntergeladen und problemlos ohne größeren Aufwand instal-
liert werden.
Informationen zum System
------------------------
Microsoft SQL Server 2022 (RTM-CU10) (KB5031778) - 16.0.4095.4 (X64)
Oct 30 2023 16:12:44
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Windows Server 2019 Datacenter 10.0 <X64> (Build
17763: ) (Hypervisor)
Auch das Verwaltungstool »SQL Server Management Studio« ist kostenlos und
kann mit der jeweils aktuellsten Version bei Microsoft heruntergeladen werden.
Natürlich ist es auch möglich, die Beispiele mit früheren Versionen nachzuvoll-
ziehen.
Den grundsätzlichen Aufbau der im Buch benutzten Beispieldatenbank zeigt das
nachfolgende Schaubild.
13
Begleitmaterial
Um die Datenbank anzulegen, kann nachfolgendes Skript genutzt werden. Aller-
dings wird aus drucktechnischen Gründen nicht der gesamte Pfad gezeigt und
muss dem eigenen System angepasst werden. In der Datenbank werden nicht
nur drei Tabellen angelegt, sondern auch einige Trigger. Diese sind für die auto-
matische Datenaktualisierung verantwortlich. Sollte eine Lieferung hinzugefügt
werden, wird automatisch der Status eines Lieferanten um einen Punkt nach
oben gezählt. Das heißt, der Status eines Lieferanten in der Tabelle »Lieferant«
ergibt sich automatisch aus der Anzahl der Lieferungen. Des Weiteren wird der
Lagerbestand automatisch korrigiert. Beispielsweise ist der Artikel »A01« zwei-
mal mit jeweils 300 Stück geliefert worden. Demzufolge ist der Lagerbestand in
der Spalte »AMenge« 600. Natürlich werden auch bei dem Löschen einer Liefe-
rung beide Werte angepasst und – sollte die Liefermenge im Nachhinein korri-
giert werden – wiederum der Lagerbestand.
Datenbank:
-- Beispielskript zum Erstellen einer Datenbank mit SQL Server 2022
-- Copyright 2024 Dirk Angermann IT-Training & Consulting
USE master;
go
-- eventuell vorhandene Datenbank löschen
DROP DATABASE IF EXISTS db_Test;
go
-- Neue Datenbank 'db_Test' erstellen
-- Bitte die Pfadangabe Ihrem System anpassen.
CREATE DATABASE db_Test
ON PRIMARY
18
Einleitung
INSERT INTO dbo.Lieferung VALUES('L01','A06',100,'20190723');
INSERT INTO dbo.Lieferung VALUES('L02','A01',300,'20190802');
INSERT INTO dbo.Lieferung VALUES('L02','A02',400,'20190805');
INSERT INTO dbo.Lieferung VALUES('L03','A02',200,'20190806');
INSERT INTO dbo.Lieferung VALUES('L04','A02',200,'20190809');
INSERT INTO dbo.Lieferung VALUES('L04','A04',300,'20190820');
INSERT INTO dbo.Lieferung VALUES('L04','A05',400,'20190821');
go
-- Abfragen der Tabellen
SELECT
LNr AS 'Lieferantennummer'
,LName AS 'Lieferantenname'
,Status AS 'Status des Lieferanten'
,LStadt AS 'Firmensitz'
FROM dbo.Lieferant;
go
SELECT
Anr AS 'Artikelnummer'
,AName AS 'Artikelname'
,Farbe
,Gewicht
,AStadt AS 'Lagerort'
,AMenge AS 'Lagermenge'
FROM dbo.Artikel;
go
SELECT
LNr AS 'Lieferantennummer'
,ANr AS 'Artikelnummer'
,LMenge AS 'Gelieferte Menge'
,CONVERT(VARCHAR(10),LDatum,104) AS 'Lieferdatum'
FROM dbo.Lieferung;
go
SET NOCOUNT OFF;
go
19
Über den Autor
Danksagung
Als der Verlag an mich herantrat und mich bat, dieses Buch zu schreiben, dachte
ich mir: »Cool, ich schreibe einfach ein paar Zeilen um meine Skripte herum,
die ich seit 20 Jahren in meinen Seminaren benutze.« Schnell stellte sich heraus,
dass es doch gar nicht so einfach ist. Danke an das Verlagshaus für die Geduld.
Aber auch danke an alle, die mich in der Zeit des Schreibens ertragen haben.
Einen speziellen und lieben Dank an die tolle Frau an meiner Seite.
Über den Autor
Dirk Angermann wurde 1969 in Halle/Saale geboren. Bei seinem Einstieg in
das Berufsleben erlangte er erste Erfahrungen im Bereich der EDV im VEB
Datenverarbeitungszen trum Halle. PL/1- und Assemblerprogrammierung für
Großrechenanlagen zählten zu seinen ersten Programmiersprachen. Aber auch
dBase gehörte dazu. Weitere Kenntnisse im Bereich von Netzwerkinfrastruktur
und Aktive Directory erlernte er als Netzwerkadministrator bei der Bundeswehr
in Potsdam beim IV. Korps. Seit über 20 Jahren ist er Microsoft Certified Trainer
und unterrichtet europaweit alle Themen rund um SQL Server. Auch als Bera-
ter ist er in vielen Unternehmen, Ämtern, Behörden und Institutionen anzu-
treffen und unterstützt in allen Bereichen rund um die Datenbanksoftware von
Microsoft. Diese praktischen Erfahrungen versucht er, in seine Seminare einzu-
binden.
21
Kapitel 1
Arbeiten mit dem SQL Server
Management Studio

Starten von SQL Server Management Studio

Herstellen einer Verbindung mit SQL Server

Einstellungen im SQL Server Management Studio

Arbeiten mit Skriptdateien und Projekten
1.1 Starten von SQL Server Management Studio
Das SQL Server Management Studio (SSMS) ist eine integrierte Verwaltungs-,
Entwicklungs- und Abfrageanwendung mit vielen Funktionen zum Durchsu-
chen von und Arbeiten mit Datenbanken. SQL Server Management Studio ba-
siert auf der Visual Studio-Shell.
Sie können das SQL Server Management Studio folgendermaßen starten:

Verwenden der Verknüpfung im Windows-Startmenü

Eingabe des Dateinamens SSMS.EXE in einem Eingabeaufforderungsfenster

Eingabe von SSMS im Feld SUCHBEGRIFF HIER EINGEBEN in der Taskleiste
1.2 Herstellen einer Verbindung mit SQL Server
Standardmäßig wird in SSMS ein Dialogfeld VERBINDUNG MIT SERVER HERSTEL-
LEN angezeigt. Mithilfe dieses Auswahlfensters kann man den Namen der jewei-
ligen Instanz auswählen oder auch manuell eingeben, mit der man sich verbin-
den möchte.
22
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Das Fenster präsentiert sich seit vielen Versionen des Managements Studio in
nachfolgend gezeigter Ansicht.
1.3 Einstellungen im SQL Server Management
Studio
Sobald man sich mit einer Instanz verbunden hat, kann man einige Einstellun-
gen tätigen, die man über den Menüpunkt ANSICHT oder TOOLS – OPTIONEN fin-
det.
23
1.3
Einstellungen im SQL Server Management Studio
Im Nachfolgenden werden einige Einstellungen gezeigt.
Registerkarte DETAILS ZUM OBJEKT-EXPLORER
Nachfolgende Darstellung wird präsentiert:
Nun kann es sein, dass gerade in der Tabelle der aufgelisteten Datenbanken eini-
ge Spalten existieren, die nicht benötigt werden. Diese können entfernt werden,
indem man mit der rechten Maustaste auf den Spaltenkopf klickt und das Häk-
chen im angezeigten Kontextmenü entfernt. Wie z.B. die Spalten

Richtlinienzustand

Name der Verfügbarkeitsgruppe

Eigenständigkeitstyp

Synchronisierungsstatus
24
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Nun könnte die Darstellung der Daten so präsentiert werden:
Natürlich kann man das Management Studio auch benutzen, um mehrere Ins-
tanzen zu administrieren. Hier wäre es hilfreich, ohne das Verbindungsfenster
öffnen zu müssen, schnellstmöglich auf die vorhandenen Instanzen zugreifen
zu können. Hier stehen im Menüpunkt ANSICHT die Auswahl REGISTRIERTE
SERVER zur Verfügung.
25
1.3
Einstellungen im SQL Server Management Studio
Nachfolgende Darstellung wird präsentiert:
Über das Kontextmenü lassen sich nun beliebig viele Instanzen über den Menü-
punkt NEUEN SERVER REGISTRIEREN hinzufügen.
26
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
27
1.3
Einstellungen im SQL Server Management Studio
Nachfolgende Darstellung wird präsentiert:
Auch kann man Instanzen nach bestimmten Funktionalitäten oder vielleicht
auch nach Standorten gruppieren. Da hilft wieder das Kontextmenü über NEUE
SERVERGRUPPE:
28
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Nachfolgende Darstellung wird präsentiert:
Wenn man die Instanzen nicht direkt in der Gruppe registriert, kann man diese
natürlich auch verschieben. Im Kontextmenü steht der Punkt TASKS|VERSCHIEBEN
NACHzur Verfügung.
29
1.3
Einstellungen im SQL Server Management Studio
Nachfolgende Darstellung wird präsentiert:
Das SSMS dient sowohl für die Administration eines SQL Servers als auch u.a.
für die Entwicklung von Datenbanken und deren Objekte. Und natürlich wer-
den auch zukünftig alle Abfragen über dieses Tool getätigt, sowohl Abfragen von
Systeminformationen als auch Anfragen von Daten aus den Datenbanken. Über
den Button NEUE ABFRAGE wird eine neue Registerkarte geöffnet, die nur zur
30
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Verfügung steht, um T-SQL-Code zu scheiben. Auch kann dieser Code als *.sql-
Skript abgespeichert werden.
Hilfreich ist, wenn man sich auf der neu eingefügten Registerkarte die automati-
sche Nummerierung anzeigen lässt.
31
1.3
Einstellungen im SQL Server Management Studio
Eine Besonderheit seit SQL Server 2008 in der deutschen Sprachversion ist die
Darstellung von Systemsichten in einer neongrünen Farbe. Diese, wie auch viele
andere Farbtöne (Schlüsselwörter, Funktionen …), kann man bei Bedarf ändern.
Auch andere Formatierungen wie Schriftart, Schriftgrad … wären möglich ...
32
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
... über den Menüpunkt EXTRAS|OPTIONEN:
Wenn man in einer Datenbank auf eine Tabelle geht, bietet das Kontextmenü
zwei Optionen an, den Inhalt einer Tabelle zu sehen oder weitere Datenänderun-
gen daran vorzunehmen.
33
1.3
Einstellungen im SQL Server Management Studio
Was wäre aber, wenn man vielleicht doch alle Zeilen der Tabelle sehen will
oder die Zeile 237 bearbeiten möchte? Dies kann man natürlich wieder über
EXTRAS|OPTIONEN einstellen.
Wenn beide Werte auf 0 gestellt werden, wird sich das Kontextmenü ändern:
34
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Um dasselbe Skript in unterschiedlichen Instanzen ausführen zu lassen, besteht
die Möglichkeit, die Verbindung zu wechseln. Auch hier wird natürlich das Kon-
textmenü zum Einsatz kommen:
1.4 Arbeiten mit Skriptdateien und Projekten
Neben der direkten Bearbeitung einzelner Skriptdateien stellt das SQL Server
Management Studio einen Mechanismus bereit, mit dem Gruppen von Datei-
en anfänglich zusammen gespeichert sowie zusammen geöffnet, wieder gespei-
chert und geschlossen werden können. Die Anzeige und Steuerung erfolgt über
den Projektmappen-Explorer. Zu den Vorteilen der Verwendung von in Projekten
und Projektmappen organisierten Skripts zählt die Möglichkeit, mehrere Skript-
dateien zugleich im SSMS zu öffnen. Über den Menüpunkt DATEI|NEUES PRO-
JEKT kann man eine neue Projektmappe erstellen.
35
1.4
Arbeiten mit Skriptdateien und Projekten
Ein aussagekräftiger Name und ein geeigneter Speicherort wären von Vorteil.
36
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Um neue Skripte im Projekt zu erstellen, steht der Bereich ABFRAGEN zur Verfü-
gung. Die rechte Maustaste hilft bei der Erstellung neuer T-SQL-Skriptdateien.
Da es im SSMS keine automatische Speicherfunktionalität gibt, ist es ratsam,
vor dem Schließen oder Öffnen neuer Projekte das alte Projekt zu speichern,
ansonsten sind die Informationen, welche Dateien es im Projekt gibt, verloren.
37
1.4
Arbeiten mit Skriptdateien und Projekten
Um das Projekt zu öffnen, es zu benutzen oder weiter zu bearbeiten, steht im
Menü DATEI|ÖFFNEN|PROJEKT/PROJEKTMAPPE die Möglichkeit zur Verfügung.
38
Kapitel 1
Arbeiten mit dem SQL Server Management Studio
Nachfolgende Darstellung wird präsentiert:
Tipp:
Sollte das Projekt nicht dargestellt werden, wählen Sie über den Menüpunkt
ANSICHT den Punkt PROJEKTMAPPENEXPLORERÖFFNEN aus.
39
Kapitel 2
Einführung in T-SQL-Abfragen

Einführung in T-SQL

Grundlegendes zu Mengen

Grundlegendes zu Prädikatlogik

Grundlegendes zur logischen Reihenfolge der Vorgänge in SELECT-Anwei-
sungen
2.1 Einführung in T-SQL

Über T-SQL

Kategorien von T-SQL-Anweisungen

T-SQL-Sprachelemente

T-SQL-Sprachelemente: Prädikate und Operatoren

T-SQL-Sprachelemente: Funktionen

T-SQL-Sprachelemente: Variablen

T-SQL-Sprachelemente: Ausdrücke

T-SQL-Sprachelemente: Steuerung von Abläufen, Fehlern und Transaktionen

T-SQL-Sprachelemente: Kommentare

T-SQL-Sprachelemente: Batchtrennzeichen
2.1.1 Über T-SQL
T-SQL ist die Implementierung der industriekompatiblen Structured Query Lan-
guage. SQL wurde ursprünglich in den frühen siebziger Jahren entwickelt, um
das neue relationale Datenbankmodell von IBM zu unterstützen, und wurde an-
schließend von der Branche weitgehend übernommen. In den achtziger Jahren
wurde SQL ein ANSI- (American National Standards Institut) und ISO-Standard
(International Organization for Standardization).
Der ANSI-Standard wurde mehrmals aktualisiert und umfasst unter anderen Re-
visionen SQL-98 und SQL-92, deren Spezifikationen entweder vollständig oder
teilweise von T-SQL unterstützt werden. Microsoft hat wie viele andere Herstel-
40
Kapitel 2
Einführung in T-SQL-Abfragen
ler die Sprache erweitert, um SQL Server-spezifische Features und Funktionen
einzuschließen.
Neben der Microsoft-Implementierung von SQL als T-SQL in SQL Server wird
SQL von Oracle als PL/SQL und von IBM als SQL PL implementiert, während
Sybase eine eigene Implementierung von T-SQL entwickelt hat.
Ein wichtiges Konzept für das Verhalten von T-SQL ist, dass es eine mengenba-
sierte und deklarative Sprache und keine prozedurale Programmiersprache ist.
Wenn man eine Abfrage von Daten aus SQL Server schreibt, beschreibt man die
Daten, die angezeigt werden sollen, aber man gibt nicht präzise an, wie die Daten
abgerufen werden. Anstatt eine verfahrensorientierte Liste der einzelnen Schritte
gibt man die Attribute der zu suchenden Daten an. Eine Vorgehensweise zum
Abrufen einer Liste von Kunden aus Dresden könnte beispielsweise wie folgt
aussehen:
-- 1.) Öffnen eines Cursors, um Zeilen zu nutzen, Single.
-- 2.) Ersten Cursordatensatz abrufen.
-- 3.) Überprüfen Sie die erste Zeile.
-- 4.) Wenn die Stadt Dresden ist, gehen Sie zur nächsten Zeile.
-- 5.) Wechseln Sie zur nächsten Zeile.