Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

SQL ist die lingua franca der Datenprofis. Gleichzeitig bekommt sie im Vergleich zu den aktuellen Tools nicht immer die Aufmerksamkeit, die sie verdient. Deshalb gibt es häufig Leute, die SQL zwar häufig benutzen, aber selten oder nie über die einfachsten Abfragen hinausgehen, weil sie glauben, dass das alles ist.

Dieses Buch zeigt, was SQL alles kann und erweitert die Werkzeugkiste der Benutzer. Am Ende des Buches wirst du sehen, wie SQL für statistische Analysen verwendet werden kann, um Berichte ähnlich wie bei Business Intelligence-Tools zu erstellen, um Textdaten abzugleichen, um anspruchsvolle Analysen von Datumsdaten durchzuführen und vieles mehr.

Die erste Ausgabe des SQL-Kochbuchs ist seit seinem Erscheinen ein beliebtes "zweites Buch über SQL" - das Buch, das man liest, nachdem man die Grundlagen gelernt hat. Es hat viele Stärken, wie z.B. seine große Bandbreite an Themen und seinen freundlichen Stil.

Die Computerwelt ist jedoch bekannt dafür, dass sie sich schnell weiterentwickelt, selbst wenn es um etwas so Reifes wie SQL geht, dessen Wurzeln bis in die 1970er Jahre zurückreichen. Diese neue Ausgabe enthält zwar keine brandneuen Sprachfunktionen, aber eine wichtige Änderung ist, dass Funktionen, die zum Zeitpunkt der ersten Ausgabe neu waren und in einigen Implementierungen zu finden waren und in anderen nicht, jetzt stabilisiert und standardisiert sind. Dadurch haben wir viel mehr Möglichkeiten, Standardlösungen zu entwickeln, als dies früher möglich war.

Es gibt zwei wichtige Beispiele, die hervorzuheben sind. Gemeinsame Tabellenausdrücke (Common Table Expressions, CTEs), einschließlich rekursiver CTEs, gab es zum Zeitpunkt der Veröffentlichung der ersten Ausgabe nur in einigen wenigen Implementierungen, aber jetzt sind sie in allen fünf vorhanden. Sie wurden eingeführt, um einige praktische Einschränkungen von SQL zu lösen, von denen einige direkt in diesen Rezepten zu sehen sind. Ein neuer Anhang über rekursive CTEs in dieser Ausgabe unterstreicht ihre Bedeutung und erklärt ihre Relevanz.

Die Fensterfunktionen waren zum Zeitpunkt der Veröffentlichung der ersten Ausgabe auch so neu, dass sie nicht in jeder Implementierung verfügbar waren. Sie waren auch so neu, dass ein spezieller Anhang geschrieben wurde, um sie zu erklären, der immer noch existiert. Jetzt sind die Fensterfunktionen jedoch in allen Implementierungen in diesem Buch enthalten. Sie sind auch in jeder anderen uns bekannten SQL-Implementierung enthalten, obwohl es so viele Datenbanken gibt, dass es unmöglich ist, zu garantieren, dass es keine gibt, die Fensterfunktionen und/oder CTEs vernachlässigt.

Wir haben nicht nur die Abfragen standardisiert, sondern auch neues Material in die Kapitel 6 und 7 aufgenommen. Das Material in Kapitel 7 eröffnet neue Anwendungen für die Datenanalyse in Rezepten über die mittlere absolute Abweichung und das Benfordsche Gesetz. In Kapitel 6 gibt es ein neues Rezept, das dabei hilft, Daten nach dem Klang des Textes abzugleichen, und wir haben Material zu regulären Ausdrücken von Kapitel 14 nach Kapitel 6 verschoben.

Für wen dieses Buch ist

Dieses Buch ist für alle SQL-Benutzer gedacht, die ihre Abfragen weiter entwickeln wollen. Was die Fähigkeiten angeht, ist es für jemanden gedacht, der zumindest ein wenig SQL kennt - du könntest zum Beispiel Alan Beaulieus Learning SQL gelesen haben - und idealerweise musstest du schon einmal Abfragen für Daten in der freien Wildbahn schreiben, um ein reales Problem zu lösen.

Abgesehen von diesen losen Parametern ist dies ein Buch für alle SQL-Nutzer, einschließlich Dateningenieure, Datenwissenschaftler, Datenvisualisierer, BI-Fachleute usw. Einige dieser Nutzer/innen greifen vielleicht nie oder nur selten direkt auf Datenbanken zu, sondern verwenden ihr Datenvisualisierungs-, BI- oder Statistik-Tool, um Daten abzufragen und abzurufen. Der Schwerpunkt liegt auf praktischen Abfragen, die reale Probleme lösen können. Wo ein wenig Theorie auftaucht, dient sie der direkten Unterstützung der praktischen Elemente.

Was in diesem Buch fehlt

Dies ist ein praktisches Buch, in dem es vor allem darum geht, SQL zu nutzen, um Daten zu verstehen. Theoretische Aspekte von Datenbanken, Datenbankdesign oder die Theorie hinter SQL werden nicht behandelt, es sei denn, sie werden benötigt, um bestimmte Rezepte oder Techniken zu erklären.

Auch Erweiterungen von Datenbanken für Datentypen wie XML und JSON werden nicht behandelt. Für diese speziellen Themen gibt es andere Ressourcen.

Plattform und Version

SQL ist ein bewegliches Ziel. Die Anbieter pumpen ständig neue Funktionen in ihre Produkte. Daher solltest du im Voraus wissen, welche Versionen der verschiedenen Plattformen bei der Erstellung dieses Textes verwendet wurden:

  • DB2 11.5

  • Oracle Datenbank 19c

  • PostgreSQL 12

  • SQL Server 2017

  • MySQL 8.0

In diesem Buch verwendete Tabellen

Bei den meisten Beispielen in diesem Buch werden zwei Tabellen verwendet, EMP und DEPT. Die EMP-Tabelle ist eine einfache 14-zeilige Tabelle mit nur numerischen, String- und Datumsfeldern. Die DEPT-Tabelle ist eine einfache vierzeilige Tabelle mit nur numerischen und String-Feldern. Diese Tabellen tauchen in vielen alten Datenbanktexten auf, und das Verhältnis zwischen Abteilungen und Mitarbeitern ist bekannt.

Bis auf wenige Ausnahmen werden alle Lösungen in diesem Buch mit diesen Tabellen verglichen. Nirgendwo verändern wir die Beispieldaten, um eine Lösung zu erstellen, die du in der Realität wahrscheinlich nicht umsetzen könntest, wie es in manchen Büchern der Fall ist.

Die Inhalte von EMP und DEPT werden hier jeweils angezeigt:

 select * from emp;

EMPNO ENAME  JOB        MGR HIREDATE     SAL COMM  DEPTNO
----- ------ --------- ---- ----------- ---- ---- -------
 7369 SMITH  CLERK     7902 17-DEC-2005  800           20
 7499 ALLEN  SALESMAN  7698 20-FEB-2006 1600  300      30
 7521 WARD   SALESMAN  7698 22-FEB-2006 1250  500      30
 7566 JONES  MANAGER   7839 02-APR-2006 2975           20
 7654 MARTIN SALESMAN  7698 28-SEP-2006 1250 1400      30
 7698 BLAKE  MANAGER   7839 01-MAY-2006 2850           30
 7782 CLARK  MANAGER   7839 09-JUN-2006 2450           10
 7788 SCOTT  ANALYST   7566 09-DEC-2007 3000           20
 7839 KING   PRESIDENT      17-NOV-2006 5000           10
 7844 TURNER SALESMAN  7698 08-SEP-2006 1500    0      30
 7876 ADAMS  CLERK     7788 12-JAN-2008 1100           20
 7900 JAMES  CLERK     7698 03-DEC-2006  950           30
 7902 FORD   ANALYST   7566 03-DEC-2006 3000           20
 7934 MILLER CLERK     7782 23-JAN-2007 1300           10


  select * from dept;

DEPTNO DNAME          LOC
------ -------------- ---------
    10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS
    30 SALES          CHICAGO
    40 OPERATIONS     BOSTON

Außerdem findest du vier Pivot-Tabellen, die in diesem Buch verwendet werden: T1, T10, T100 und T500. Da diese Tabellen nur dazu dienen, Pivots zu erleichtern, haben wir ihnen keine klugen Namen gegeben. Die Zahl hinter dem "T" in den Pivot-Tabellen steht für die Anzahl der Zeilen in jeder Tabelle, beginnend mit 1. Hier sind zum Beispiel die Werte für T1 und T10:

select id from t1;

        ID
----------
         1

select id from t10;

        ID
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10

Die Pivot-Tabellen sind eine nützliche Abkürzung, wenn wir eine Reihe von Zeilen erstellen müssen, um eine Abfrage zu erleichtern.

Übrigens: Einige Anbieter erlauben partielle SELECT-Anweisungen. Du kannst zum Beispiel SELECT ohne FROM-Klausel verwenden. In diesem Buch werden wir manchmal eine Hilfstabelle, T1, mit einer einzigen Zeile verwenden, anstatt der Übersichtlichkeit halber partielle Abfragen zu verwenden. Dies ähnelt der Verwendung der DUAL-Tabelle von Oracle, aber durch die Verwendung der T1-Tabelle tun wir dasselbe auf eine standardisierte Art und Weise für alle betrachteten Implementierungen.

Alle anderen Tabellen sind spezifisch für bestimmte Rezepte und Kapitel und werden im Text vorgestellt, wenn es angebracht ist.

In diesem Buch verwendete Konventionen

In diesem Buch verwenden wir eine Reihe von typografischen und kodierenden Konventionen. Nimm dir Zeit, um dich mit ihnen vertraut zu machen. Das wird dein Verständnis des Textes verbessern. Vor allem die Kodierungskonventionen sind wichtig, weil wir sie nicht für jedes Rezept im Buch wiederholen können. Stattdessen listen wir hier die wichtigsten Konventionen auf.

Typografische Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

GROSSBUCHSTABE

Wird verwendet, um SQL-Schlüsselwörter im Text anzuzeigen.

Kleinbuchstaben

Wird für alle Abfragen in Codebeispielen verwendet. Andere Sprachen wie C und Java verwenden Kleinbuchstaben für die meisten Schlüsselwörter, und wir finden, dass sie viel besser lesbar sind als Großbuchstaben. Daher werden alle Abfragen in Kleinbuchstaben geschrieben.

Constant width bold

Zeigt die Benutzereingabe in Beispielen an, die eine Interaktion zeigen.

Tipp

Weist auf einen Tipp, eine Anregung oder einen allgemeinen Hinweis hin.

Warnung

Weist auf eine Warnung oder einen Warnhinweis hin.

Kodierungskonventionen

Wir bevorzugen die Groß- und Kleinschreibung in SQL-Anweisungen, sowohl für Schlüsselwörter als auch für benutzerdefinierte Bezeichner. Zum Beispiel:

select empno, ename
  from emp;

Deine Vorliebe kann anders sein. Viele bevorzugen es zum Beispiel, SQL-Schlüsselwörter in Großbuchstaben zu schreiben. Verwende den Kodierungsstil, den du bevorzugst, oder den dein Projekt erfordert.

Obwohl wir in den Codebeispielen Kleinbuchstaben verwenden, schreiben wir die SQL-Schlüsselwörter und Bezeichner im Text immer in Großbuchstaben. Das tun wir, um diese Begriffe als etwas anderes als normale Prosa zu kennzeichnen. Zum Beispiel:

Die vorangehende Abfrage ist ein SELECT auf die Tabelle EMP.

Obwohl in diesem Buch Datenbanken von fünf verschiedenen Anbietern behandelt werden, haben wir uns entschieden, ein Format für alle Ausgaben zu verwenden:

EMPNO ENAME
----- ------
 7369 SMITH
 7499 ALLEN
  …

Viele Lösungen verwenden Inline-Views oder Unterabfragen in der FROM-Klausel. Der ANSI-SQL-Standard schreibt vor, dass solche Views mit Tabellen-Aliasen versehen werden müssen. (Oracle ist der einzige Anbieter, der auf die Angabe solcher Aliase verzichten kann.) Daher verwenden unsere Lösungen Aliase wie X und Y, um die Ergebnismengen von Inline-Views zu identifizieren:

 select job, sal
from (select job, max(sal) sal
        from emp
      group by job)x;

Beachte den Buchstaben X nach der letzten, schließenden Klammer. Dieser Buchstabe X ist der Name der "Tabelle", die von der Unterabfrage in der FROM-Klausel zurückgegeben wird. Während Spaltenaliase ein wertvolles Hilfsmittel für das Schreiben von selbstdokumentierendem Code sind, sind Aliase in Inline-Views (für die meisten Rezepte in diesem Buch) einfach nur Formalitäten. Sie erhalten in der Regel triviale Namen wie X, Y, Z, TMP1 und TMP2. In Fällen, in denen ein besserer Alias zum besseren Verständnis beitragen könnte, verwenden wir ihn.

Du wirst feststellen, dass die SQL im Abschnitt "Lösung" der Rezepte in der Regel nummeriert ist, zum Beispiel:

1 select ename
2     from emp
3  where deptno = 10

Die Nummer ist nicht Teil der Syntax; sie dient nur dazu, Teile der Abfrage im Abschnitt "Diskussion" mit einer Nummer zu versehen.

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/sql-ckbk-2e aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://www.youtube.com/oreillymedia

Zweite Auflage Danksagungen

Viele großartige Menschen haben bei dieser zweiten Ausgabe geholfen. Danke an Jess Haberman, Virginia Wilson, Kate Galloway und Gary O'Brien von O'Reilly. Danke an Nicholas Adams, der uns in Atlas immer wieder den Tag gerettet hat. Vielen Dank an die technischen Prüfer: Alan Beaulieu, Scott Haines und Thomas Nield.

Schließlich möchte ich meiner Familie - Clare, Maya und Leda - dafür danken, dass sie es gnädig ertragen haben, mich für eine Weile an ein anderes Buch zu verlieren.

-Robert de Graaf

Erste Ausgabe Danksagungen

Dieses Buch gäbe es nicht ohne die Unterstützung, die wir von vielen Menschen erhalten haben. Ich möchte mich bei meiner Mutter Connie bedanken, der dieses Buch gewidmet ist. Ohne deine harte Arbeit und deine Aufopferung wäre ich nicht da, wo ich heute bin. Ich danke dir für alles, Mama. Ich bin dankbar und schätze alles, was du für meinen Bruder und mich getan hast. Ich bin gesegnet, dich als meine Mutter zu haben.

An meinen Bruder Joe: Jedes Mal, wenn ich aus Baltimore nach Hause kam, um eine Pause vom Schreiben zu machen, warst du da und hast mich daran erinnert, wie toll die Dinge sind, wenn wir nicht arbeiten, und dass ich das Schreiben beenden sollte, damit ich zu den wichtigeren Dingen im Leben zurückkommen kann. Du bist ein guter Mann, und ich respektiere dich. Ich bin sehr stolz auf dich und stolz, dich meinen Bruder nennen zu dürfen.

An meine wunderbare Verlobte Georgia: Ohne deine Unterstützung hätte ich es nicht durch die über 600 Seiten dieses Buches geschafft. Du warst hier und hast diese Erfahrung mit mir geteilt, Tag für Tag. Ich weiß, dass es für dich genauso hart war wie für mich. Ich habe den ganzen Tag gearbeitet und die ganze Nacht geschrieben, aber du hast das alles gut überstanden. Du warst verständnisvoll und hilfsbereit, und dafür bin ich dir ewig dankbar. Ich danke euch. Ich liebe dich.

An meine zukünftigen Schwiegereltern: Meiner Schwiegermutter und meinem Schwiegervater, Kiki und George, danke ich für eure Unterstützung während dieser ganzen Erfahrung. Ihr habt mir immer das Gefühl gegeben, zu Hause zu sein, wenn ich eine Pause gemacht habe und zu Besuch kam, und ihr habt dafür gesorgt, dass Georgia und ich immer gut versorgt waren. An meine Schwägerinnen Anna und Kathy: Es hat immer Spaß gemacht, nach Hause zu kommen und mit euch abzuhängen und Georgia und mir eine dringend benötigte Pause vom Buch und von Baltimore zu verschaffen.

Meinem Redakteur Jonathan Gennick, ohne den es dieses Buch nicht geben würde: Jonathan, dir gebührt ein großes Lob für dieses Buch. Du bist weit über das hinausgegangen, was ein Lektor normalerweise tut, und dafür gebührt dir großer Dank. Von der Bereitstellung von Rezepten über tonnenweise Neufassungen bis hin zur Aufrechterhaltung des Humors trotz drohender Deadlines - ohne dich hätte ich es nicht geschafft. Ich bin dankbar, dass ich dich als Redakteurin hatte und dankbar für die Chance, die du mir gegeben hast. Da du selbst ein erfahrener DBA und Autor bist, war es ein Vergnügen, mit jemandem auf deinem technischen Niveau und mit deinem Fachwissen zu arbeiten. Ich kann mir nicht vorstellen, dass es zu viele Redakteure gibt, die, wenn sie sich dazu entschließen würden, mit dem Redigieren aufhören und praktisch überall als Datenbankadministrator (DBA) arbeiten könnten; Jonathan kann es. Als DBA bist du als Redakteur sicherlich im Vorteil, denn du weißt in der Regel, was ich sagen will, selbst wenn ich Schwierigkeiten habe, es auszudrücken. O'Reilly kann sich glücklich schätzen, dich im Team zu haben, und ich bin froh, dich als Redakteur zu haben.

Ich möchte mich bei Ales Spetic und Jonathan Gennick für das Transact-SQL Cookbook bedanken. Isaac Newton sagte: "Wenn ich etwas weiter gesehen habe, dann indem ich auf den Schultern von Giganten stand." In den Danksagungen des Transact-SQL Cookbook hat Ales Spetic etwas geschrieben, das dieses berühmte Zitat unterstreicht und meiner Meinung nach in jedem SQL-Buch stehen sollte. Ich füge seine Worte hier ein:

Ich hoffe, dass dieses Buch die spannenden Werke herausragender Autoren wie Joe Celko, David Rozenshtein, Anatoly Abramovich, Eugine Berger, Iztik Ben-Gan, Richard Snodgrass und anderer ergänzen wird. Ich habe viele Nächte damit verbracht, ihre Arbeit zu studieren, und ich habe fast alles, was ich weiß, aus ihren Büchern gelernt. Während ich diese Zeilen schreibe, ist mir bewusst, dass sie für jede Nacht, die ich damit verbracht habe, ihre Geheimnisse zu entdecken, 10 Nächte damit verbracht haben müssen, ihr Wissen in eine konsistente und lesbare Form zu bringen. Es ist mir eine Ehre, der SQL-Gemeinschaft etwas zurückgeben zu können.

Ich möchte Sanjay Mishra für sein hervorragendes Buch Mastering Oracle SQL danken, und auch dafür, dass er mich mit Jonathan in Kontakt gebracht hat. Wenn Sanjay nicht gewesen wäre, hätte ich Jonathan vielleicht nie kennengelernt und dieses Buch nie geschrieben. Erstaunlich, wie eine einfache E-Mail dein Leben verändern kann. Ich möchte mich vor allem bei David Rozenshtein für sein Buch Essence of SQL bedanken, das mir ein solides Verständnis dafür vermittelt hat, wie man in Sets/SQL denkt und Probleme löst. Ich möchte David Rozenshtein, Anatoly Abramovich und Eugene Birger für ihr Buch Optimizing Transact-SQL danken, aus dem ich viele der fortgeschrittenen SQL-Techniken gelernt habe, die ich heute verwende.

Ich möchte dem gesamten Team von Wireless Generation danken, einem großartigen Unternehmen mit großartigen Menschen. Ein großes Dankeschön an alle, die sich die Zeit genommen haben, dieses Buch zu lesen, zu kritisieren oder mir mit Ratschlägen zu helfen, es fertigzustellen: Jesse Davis, Joel Patterson, Philip Zee, Kevin Marshall, Doug Daniels, Otis Gospodnetic, Ken Gunn, John Stewart, Jim Abramson, Adam Mayer, Susan Lau, Alexis Le-Quoc, und Paul Feuer. Ich möchte mich bei Maggie Ho für ihre sorgfältige Überprüfung meiner Arbeit und ihr äußerst nützliches Feedback zur Auffrischung der Fensterfunktionen bedanken. Ich möchte Chuck Van Buren und Gillian Gutenberg für ihre tollen Ratschläge zum Thema Laufen danken. Das Training am frühen Morgen hat mir geholfen, den Kopf frei zu bekommen und mich zu entspannen. Ich glaube nicht, dass ich in der Lage gewesen wäre, dieses Buch zu beenden, ohne ein bisschen rauszukommen. Ich möchte Steve Kang und Chad Levinson dafür danken, dass sie es ertragen haben, dass ich in den Nächten, in denen sie nach einem langen Arbeitstag nur zum Union Square gehen wollten, um in der Heartland Brewery ein Bier und einen Burger zu essen, ununterbrochen über verschiedene SQL-Techniken gesprochen habe. Ich möchte Aaron Boyd für seine Unterstützung, seine freundlichen Worte und vor allem für seine guten Ratschläge danken. Aaron ist ehrlich, fleißig und ein sehr geradliniger Typ; Leute wie er machen ein Unternehmen besser. Ich möchte mich bei Olivier Pomel für seine Unterstützung und Hilfe beim Schreiben dieses Buches bedanken, insbesondere für die DB2-Lösung zur Erstellung von abgegrenzten Listen aus Zeilen. Olivier hat diese Lösung beigesteuert, ohne überhaupt ein DB2-System zu haben, um sie zu testen! Ich erklärte ihm, wie die WITH-Klausel funktioniert, und Minuten später hatte er die Lösung parat, die du in diesem Buch findest.

Jonah Harris und David Rozenshtein haben ebenfalls hilfreiches technisches Feedback zum Manuskript gegeben. Und Arun Marathe, Nuno Pinto do Souto und Andrew Odewahn haben sich in der Entstehungsphase des Buches zur Gliederung und zur Auswahl der Rezepte geäußert. Vielen Dank an euch alle.

Ich möchte John Haydu und dem MODEL-Klausel-Entwicklungsteam der Oracle Corporation dafür danken, dass sie sich die Zeit genommen haben, den MODEL-Klausel-Artikel, den ich für O'Reilly geschrieben habe, zu überprüfen, und dass sie mir letztendlich ein besseres Verständnis dafür vermittelt haben, wie diese Klausel funktioniert. Ich möchte Tom Kyte von der Oracle Corporation dafür danken, dass ich seine TO_BASE-Funktion in eine reine SQL-Lösung umwandeln durfte. Bruno Denuit von Microsoft beantwortete meine Fragen zur Funktionalität der in SQL Server 2005 eingeführten Fensterfunktionen. Simon Riggs von PostgreSQL hielt mich über die neuen SQL-Funktionen in PostgreSQL auf dem Laufenden (herzlichen Dank: Simon, dadurch, dass ich wusste, was wann auf den Markt kommt, konnte ich einige neue SQL-Funktionen einbauen, wie z. B. die coole Funktion GENERATE_SERIES, die meiner Meinung nach elegantere Lösungen als Pivot-Tabellen ermöglicht).

Zu guter Letzt möchte ich mich bei Kay Young bedanken. Wenn du talentiert und leidenschaftlich bei dem bist, was du tust, ist es großartig, wenn du mit Menschen zusammenarbeiten kannst, die ebenso talentiert und leidenschaftlich sind. Viele der Rezepte, die du in diesem Text siehst, stammen aus der Zusammenarbeit mit Kay und der Erarbeitung von SQL-Lösungen für alltägliche Probleme bei Wireless Generation. Ich möchte mich bei dir bedanken und dir sagen, dass ich deine Hilfe sehr zu schätzen weiß. Von Ratschlägen über Grammatikkorrekturen bis hin zum Code hast du eine wichtige Rolle beim Schreiben dieses Buches gespielt. Es war toll, mit dir zu arbeiten, und Wireless Generation ist ein besseres Unternehmen, weil du da bist.

-Anthony Molinaro

Get SQL Kochbuch, 2. Auflage now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.