Der MS SQL Server 2005 bietet nach fünf langen Jahren eine umfassende Aktualisierung und Verbesserung der Microsoft-Datenbank. Dieses Buch stellt den ersten Band einer umfangreichen Reihe zum SQL Server 2005 dar und zeigt Programmierern und Nutzern der Datenbank, die Daten abfragen und bearbeiten wollen, wie sie mit Hilfe von T-SQL Abfragen und Analysen durchführen, Daten bearbeiten und in der Datenbank Funktionen und Prozeduren erstellen können. Als Beispiel dient die umfassende AdventureWorks-Datenbank, die von Microsoft entwickelt wurde, um die neuen Fähigkeiten des SQL Servers 2005 optimal zu präsentieren. Die weiteren Bände dieser Reihe beschäftigen sich mit Administration, XML,.NET, Reporting/Analysis Services, Business Intelligence und Data Warehousing.
In diesem Band finden Sie zahlreiche Beispiele zu (UN)PIVOT, Untersummen, Würfel, Rangfolgen, OVER-Aggregate, dynamische Anweisungen, CTE, Akkumulation, Durchschnitte und Funktionen/Prozeduren.
Der MS SQL Server 2005 bietet nach fünf langen Jahren eine umfassende Aktualisierung und Verbesserung der Microsoft-Datenbank. Dieses Buch stellt den ersten Band einer auf vier Bände ausgelegten Reihe zum SQL Server 2005 dar und zeigt Programmierern und Nutzern der Datenbank, die Daten abfragen und bearbeiten wollen, wie sie T-SQL, C#.NET und VB.NET sowie XML-Technologien in der Datenbank arbeiten können. Die Grundlagen von T-SQL werden von Grund auf erläutert, wobei das Ziel ist, umfangreiche und komplexe Abfragen/Analysen sowie Prozeduren und Funktionen zu erstellen. Als Beispiel dient die umfassende AdventureWorks-Datenbank, die von Microsoft entwickelt wurde, um die neuen Fähigkeiten des SQL Servers 2005 optimal zu präsentieren. Die weiteren Bände dieser Reihe beschäftigen sich mit Administration, Reporting/Analysis Services, Business Intelligence und Data Warehousing.
Als Leser haben wir uns die Teilnehmer, welche die verschiedenen T-SQL-Seminare im Bereich MS SQL Server besuchen, vorgestellt. Hierbei handelt es sich um Programmierer, die für eine oder in einer MS SQL Server-Datenbank Software entwickeln. Ihre Aufgabe ist es normalerweise nicht, diese Datenbank einzurichten, von den Datenstrukturen her zu planen oder von Grund auf neu aufzubauen. Die Tabellen und die allgemeinen Strukturen sind bereits vorgegeben, sodass ihre Aufgabe daraus besteht, umfangreiche Abfragen und Analysen auszuführen, die Datenbank mit Hilfe von Funktionen und Prozeduren in T-SQL oder.NET zu erweitern und möglicherweise auch mit XML umzugehen. Weitere Bücher in dieser Reihe behandeln die an anderer Stelle erwähnten weiteren Themen.
1. Das erste Kapitel stellt verschiedene Grundlagen zum (neuen) MS SQL Server vor. Es beschreibt im Wesentlichen die Installation der Datenbank, den Umgang mit dem grafischen Werkzeug Management Studio sowie die Beispieldatenbank AdventureWorks. Dieses Kapitel stellt an verschiedenen Beispielen dar, wie man fast ohne SQL, was einen Hauptteil des Buchs bestimmt, Tabellen anlegt, mit Daten füllt bzw. Abfragen durchführt. Ob man später diese grafischen Hilfsmittel weiterhin benutzen wird, ist dem persönlichen Belieben überlassen, doch im Normalfall sollten insbesondere die vielen Beispiele zur Verwendung von SQL und T-SQL dafür Sorge tragen, dass man verstärkt doch eher den entsprechenden Quelltext schreibt anstatt ihn über grafische Werkzeuge zu erzeugen.
2. Das zweite Kapitel stellt Standard-SQL am Beispiel vom MS SQL Server und vor allen Dingen der AdventureWorks-Datenbank vor. Dabei beginnt es ausdrücklich mit der einfachen Standardabfrage SELECT * FROM tabelle und arbeitet sich dann durch die typischen Bereiche wie filtern, sortieren und gruppieren, die nicht nur mit dem MS SQL Server, sondern mit jeder Datenbank möglich sind. Es stellt anschließend die verschiedenen Standard-SQL-Funktionen für Aggregate und damit für Datengruppierungen vor, ehe es schließlich sehr ausführlich die vielen Funktionen vom MS SQL Server vorstellt, welche für viele Fragestellungen eine Lösung bieten, ohne die Daten in einer äußeren Anwendung zu verarbeiten, und die sich für jede Datenbank anders darstellen. Hier sind von System zu System große Unterschiede hinsichtlich de Funktionsumfangs und der Fähigkeiten der Funktionen zu beobachten.
3. Das dritte Kapitel konzentriert sich auf die Darstellung von so genannten komplexen Abfragen. Dies bedeutet zunächst, dass man die Daten nicht nur aus einer einzigen Tabelle abruft, sondern mehrere Tabellen miteinander über ihre Primärschlüssel-Fremdschlüssel-Verknüpfung verbinden muss. Hier stellt das Kapitel die traditionelle Variante den neuen, so genannten ANSI-SQL-Verknüpfungen gegenüber. Eine zweite Stufe hinsichtlich der Verwendung von komplexen Abfragen ist dann der Einsatz von Unterabfragen. Hier folgt eine Darstellung von einfachen Unterabfragen, Spaltenunterabfragen, abgeleiteten Tabellen und korrelierten Unterabfragen. Die verschiedenen Techniken sind in vielen Datenbanken gleich oder wenigstens ähnlich nutzbar, sind auch in der Praxis sehr sinnvoll und werden häufig eingesetzt - jedoch gibt es hier eine große Menge an Programmierern, die einen viel zu großen Bogen um diese Techniken machen und es vorziehen, in einer äußeren Anwendung die gleichen Operationen nachzuvollziehen. Dieses Kapitel möchte allerdings gerade Lust auf diese Techniken machen, da eine viel kürzere Syntax zu gleichen Ergebnissen führt. Schließlich folgt noch die Darstellung, wie man Fallunterscheidungen über die CASE-Anweisung in SQL realisiert und wie zusätzliche Aggregate errechnet werden können. Darunter sind Rangfolgen, Untersummen und Würfel zu verstehen, wobei hier auf der einen Seite verschiedene spezielle MS SQL Server-Techniken als auch Standard-Techniken, die allerdings selten auswendig niedergeschrieben, sondern vielmehr auf Basis eines fertigen Beispiels angewandt, zum Einsatz kommen.
4. Das vierte Kapitel arbeitet den Bereich der Datenmanipulation durch. Dies erfordert in verschiedenen Beispielen bereits einige einfache Techniken aus T-SQL. In einem ersten Teil erstellt man über SQL die Datenstrukturen für Tabellen und Sichten. Hierbei geht es weniger um den Administrationsaspekt als um die Grundlagen, welche für den Programmierer wesentlich sind. In einem zweiten, umfangreicheren Teil werden dann für verschiedene vereinfachten Tabelle der Beispieldatebank die typischen Bearbeitungsszenarien von Datenerfassung-, -bearbeitung, -aktualisierung und -löschung vorgestellt. Dabei werden neben den Standard-Möglichkeiten, wie sie in den meisten Datenbanksystemen möglich sind, gerade auch die seltenen und weniger geläufigen Möglichkeiten der verschiedenen Anweisungen vorgestellt.
5. Das fünfte Kapitel bietet schließlich eine ausführliche Einführung in die SQL-Erweiterung von MS SQL Server mit dem Namen Transact SQL (T-SQL). Zwar gibt es in einigen vorherigen Kapiteln bereits verschiedene Beispiele, die mit einfachen Mitteln von T-SQL operieren, doch die Erstellung von Variablen, die Verwendung und die Auswahl von geeigneten Datentypen, die Erstellung und Nutzung von Cursorn sowie schließlich auch die Erstellung von Prozeduren und Funktionen ist den einzelnen Abschnitten dieses fünften Kapitels vorbehalten.
6. Das sechste Kapitel greift noch einmal den Bereich der Abfragen auf, wobei hier die sehr fortgeschrittenen und teilweise auch neuen Techniken für mehr in den Bereich der Analysen reichende Anweisungen dargestellt werden. Hier wird die neue Technik der Common Table Expressions eingefügt, die in vielen Beispielen dieses Kapitels genutzt wird. Als Beispiele für Analysen finden sich dann fortgeschrittene Aggregate wie Akkumulationen und Durchschnitte und auch die Erstellung von Rangfolgen bzw. Hitparaden in diesem Kapitel wieder. Auch das Thema der Pivot-Abfragen wird behandelt. Neben klassischen Lösungen stellt dieses Kapitel auch insbesondere die neuen Technologien der Version 2005 vor.
Beispieldateien
Als Beispiel-Datenbank dient die sehr umfangreiche Datenbank AdventureWorks, welche im kommenden Kapitel kurz eingeführt und vorgestellt wird. Sie ersetzt die seit Jahren bekannte Datenbank Nordwind. Sie ist wesentlich umfangreicher als die bekannte Nordwind-Datenbank und ermöglicht es nun auch mit einer speziellen DataWarehouse-Variante sämtliche Themengebiete des SQL Servers 2005 hervorragend darzustellen. Die Datenbank selbst kann entweder direkt bei der Installation des SQL Servers zusätzlich installiert oder auch direkt von der Microsoft-Webseite herunter geladen werden.
Die verschiedenen Abfragen und Programmdateien, welche in diesem Buch erstellt und diskutiert werden, liegen ebenfalls im Internet zum Download bereit. Die ein-zelnen Quelltexte sind vollständig dokumentiert und enthalten neben dem eigentlichen Quelltext auch in einem Kommentarbereich die Ergebnisse. Dies ermöglicht es, die Dateien auch ohne Testen vollständig zu verwenden.
Es werden nur für sehr wenige Beispiele eigene Tabellen erstellt, da der Leser, für den dieses Buch geschrieben ist, im Normalfall eine bereits bestehende Datenbank bearbeiten, erweitern und vor allen Dingen nutzen soll. Das Administrationsbuch geht verstärkt auf die Techniken der Erstellung ein.
Comelio Medien gehört zur Comelio GmbH, einem in D, A und CH arbeitenden IT-Systemhaus. Er bietet den Mitarbeitern der Comelio GmbH die Gelegenheit, Themenbereiche aus ihren Aufträgen in den Bereichen Beratung, Entwicklung oder Schulung in Buchform aufzubereiten und ihr Wissen der deutschsprachigen Entwicklergemeinde zur Verfügung zu stellen.
Das Dienstleistungsangebot des Mutterunternehmens umfasst die Bereiche Softwareentwicklung mit.NET von Microsoft, Oracle und MySQL. Weitere Geschäftsfelder sind Beratung und Schulung. Die Comelio GmbH ist Microsoft Gold Certified Partner mit den Kompetenzen Softwareentwicklung, Netzwerktechnik und Schulung
Inhaltsverzeichnis
1 Grundlagen
1.1 Installation
1.2 Erste Schritte
1.2.1 Management Studio
1.2.2 Abfragen direkt ausführen
1.2.3 Abfragen im Editor ausführen
1.2.4 Vorlagen-Editor
1.2.5 Dokumentation
1.3 Programmierbarkeit
1.4 Beispieldatenbank AdventureWorks
1.4.1 Allgemeine Design-Prinzipien
1.4.2 Darstellung einzelner Tabellenbereiche
2 Einfache Abfragen
2.1 Grundstruktur von SELECT
2.1.1 Spaltenauswahl
2.1.2 Aliasnamen
2.1.3 Qualifizierte Spaltennamen
2.2 Bedingungen
2.2.1 Einfache Bedingungen und Operatoren
2.2.2 Boolesche Operatoren
2.2.3 Mathematische Operatoren
2.2.4 Mengen-Operatoren
2.3 Ergebnisse aufbereiten
2.3.1 Duplikate ein-/ausblenden
2.3.2 Ergebnisse sortieren
2.3.3 Standard-Aggregate
2.3.4 Gruppieren
2.3.5 Zufällige Datenauswahl
2.4 Eingebaute Funktionen
2.4.1 Datums- und Zeitfunktionen
2.4.2 Mathematische Funktionen
2.4.3 Zeichenkettenfunktionen
2.4.4 Systemfunktionen
3 Komplexe Abfragen
3.1 Verknüpfungen
3.1.1 Manuelle Verknüpfungen
3.1.2 ANSI-SQL-Verknüpfungen
3.2 Unterabfragen
3.2.1 Einfache Unterabfragen
3.2.2 Spaltenunterabfragen
3.2.3 Abgeleitete Tabellen
3.2.4 Korrelierte Unterabfragen
3.2.5 Operatoren für Unterabfragen
3.3 Verzweigungen
3.3.1 CASE mit Selektor
3.3.2 Selektorlose CASE-Anweisung
3.4 Zusätzliche Aggregate
3.4.1 Rangfolgen
3.4.2 Untersummen und Würfel
4 Datenmanipulation
4.1 Datenstrukturen anlegen
4.1.1 Tabellen
4.1.2 Sichten
4.2 Daten bearbeiten
4.2.1 Vorbereitung
4.2.2 Einfügen
4.2.3 Aktualisieren
4.2.4 Löschen
5 Grundlagen T-SQL
5.1 T-SQL Blöcke
5.1.1 Variablen und Anweisungen
5.1.2 Datentypen
5.2 Kontrollanweisungen
5.2.1 Fallunterscheidungen
5.2.2 Schleifen
5.3 Dynamische Anweisungen
5.3.1 Einsatz von EXEC
5.3.2 Einsatz von sp_executesql
5.4 Fehlerbehandlung
5.4.1 Ausnahmen
5.4.2 Traditionelle Fehlerbehandlung
5.5 Cursor
5.5.1 Cursor-Varianten
5.5.2 Verwendung
5.5.3 Beispiele
5.6 Transaktionen
5.6.1 Einfache Transaktionen
5.6.2 Sicherungspunkte
5.6.3 Erweiterte Transaktionssteuerung
6 Analysen
6.1 Tabellenausdrücke
6.1.1 Grundprinzip
6.1.2 Erweiterte Tabellenausdrücke
6.1.3 Datenmanipulation und CTEs
6.2 Aggregate und Rangfolgen
6.2.1 Aggregate mit OVER
6.2.2 Akkumulationen und Durchschnitte
6.2.3 Hitparaden
6.2.4 Bereiche/Quantile
6.3 Pivot
6.3.1 Klassisches Pivotieren
6.3.2 Einsatz von (UN)PIVOT
Interview
Welche neuen Fähigkeiten haben Ihnen am SQL Server 2005 besonders gefallen?
Wie das immer so bei neuen Fähigkeiten ist: manchmal nehmen sie auch Arbeit weg. So verhält es sich nämlich mit den beiden Operatoren PIVOT und UNPIVOT. Wir haben natürlich noch ein Beispiel eingefügt, in dem man die herkömmliche Technik der Pivot-Bildung sehen kann, aber dies ist für Neueinsteiger sicherlich eher abschreckend. Die neuen Operatoren nehmen einen Großteil der Arbeit auf sich. Allerdings benötigt man doch schon etwas mehr T-SQL-Kenntnisse, um die Pivot-Bildung dynamisch durchzuführen.
Ein weitere Technik?
Ja, die nächste sehr gelungene Neuerung ist die WITH-Klausel, mit der man allgemeine Tabellenausdrücke formulieren kann. Sie heißen auf Neu-Deutsch Common Table Expressions und lassen sich besonders dekorativ auch als CTE abkürzen. Sie sind ein Ersatz für temporäre Tabelle, deren Daten man in späteren Schritten verarbeiten bzw. weiter abfragen möchte. Dadurch kann man sich neben temporären Tabellen auch abgeleitete Tabellen in der FROM-Klausel sparen, da sie auch mehrfache Referenzen erlauben und vor allen Dingen die Abfrage vertikal und nicht horizontal wachsen lassen. Dies erleichtert den Quelltext.
Das wie viele Buch über Datenbanken und SQL ist dieses nun?
Wir haben beide zusammen ja schon ein allgemeines Grundlagen-Buch zu SQL im Jahre 2002 geschrieben, das auch heute noch im Internet verkauft wird, obwohl es gar nicht mehr lieferbar ist. Wir überlegen immer, ob wir ein solches Werk noch einmal neu auflegen sollten. Dann hatten wir auch das ein Programmierhandbuch zu Oracle geschrieben, in dem 300 Seiten zum Thema SQL für Oracle enthalten sind. Beim dritten Mal sind natürlich die einfachen Grundlagen nicht mehr so ganz interessant, aber die Beispiel-Datenbank ist sehr spannend und von der Didaktik her einzigartig. Zudem sind die Themen, mit denen man in der Berufswelt begonnen hat, doch sicherlich immer mit einem besonderen Zauber umgeben. Es ist ja auch kein reines SQL-Buch, sondern beschreibt auch die Programmierung von Prozeduren und Funktionen.
Für welchen Leser haben Sie geschrieben?
Wir machen Seminare zum Thema SQL, Transact SQL und PL/SQL für Oracle seit mehreren Jahren. In die Kurse zu SQL kommen eigentlich immer Neueinsteiger oder Teilnehmer mit Anfängerkenntnissen zu SQL aus einer anderen Datenbank. Sie möchten hauptsächlich Abfragen und Analysen durchführen, Skripte für Datenbearbeitung oder erweiterte Untersuchungen anfertigen, sowie diese Abfragen in Form von Sichten, Prozeduren und Funktionen auslagern. Wir zeigen daher die T-SQL-Syntax sowie einen sehr umfassenden und hoffentlich für alle Wechselfälle des Lebens vollständige Darstellung der Abfragetechniken.
Warum fehlen in Ihrem Buch genau die Themen.NET und XML, die in jedem anderen Buch zum gleichen Thema erscheinen?
Wir schauen uns natürlich sehr genau an, welche Themen andere Autoren bearbeiten und versuchen, ein eigenes Buch so zu positionieren, dass es auf der einen Seite die vom Leser erwarteten Themen zum Buchtitel abdeckt, dass es allerdings auf der anderen Seite auch Unterscheidungsmerkmale zu diesen anderen Werken gibt. In diesem Zusammenhang fällt tatsächlich auch, dass wir gerade.NET und XML nicht behandeln. Ursprünglich gab es tatsächlich ein XML-Kapitel, aber als es dann schon 170 Seiten erreicht hatte und das Thema Webservices noch überhaupt nicht enthielt, fragte ein Kollege, ob es nicht besser wäre, ein eigenes Buch zu diesem Thema zu erstellen. Es ist – wie ich finde – für einen T-SQL-Interessierten tatsächlich sehr unbefriedigend, ein Drittel eines Buchs umsonst gekauft zu haben, weil er weder.NET benutzt noch unbedingt mit XML arbeiten will. Das möchten wir bei Comelio Medien etwas besser handhaben als andere Verlage.
Was ist mit den Lesern, die beides doch wissen wollen? Müssen die mehrere Bücher kaufen?
Zunächst muss man in jedem Fall dann maximal alle drei Bücher erwerben: T-SQL-Programmierung,.NET-Integration und XML-Verwendung. Es wird allerdings laut Plan auch einen sehr umfangreichen Sammelband in Form eines Programmierhandbuchs geben, in dem dann alle drei Bücher enthalten sind. Dieser wird sicherlich auch 1000 Seiten übersteigen.