Einführung

Abgeschlossen

Die SQL-Sprache

SQL ist ein Akronym für „Structured Query Language“ (strukturierte Abfragesprache). SQL wird für die Kommunikation mit relationalen Datenbanken verwendet. Mithilfe von SQL-Anweisungen werden Aufgaben wie das Aktualisieren von Daten in einer Datenbank oder das Abrufen von Daten aus einer Datenbank ausgeführt. So wird beispielsweise mithilfe der SQL-Anweisung SELECT die Datenbank abgefragt und ein Satz von Datenzeilen zurückgegeben. Einige gängige Managementsysteme für relationale Datenbanken, bei denen SQL zum Einsatz kommt, sind Microsoft SQL Server, MySQL, PostgreSQL, MariaDB und Oracle.

Es gibt einen SQL-Sprachstandard, der vom American National Standards Institute (ANSI) definiert wurde. Jeder Anbieter fügt seine eigenen Varianten und Erweiterungen hinzu.

Eine SQL SELECT-Abfrage ruft eine Tabelle mit Daten aus einer Datenbank ab

Dieses Modul umfasst Folgendes:

  • Verstehen, was SQL ist und wofür es verwendet wird
  • Identifizieren von Datenbankobjekten in Schemas
  • Identifizieren von SQL-Anweisungstypen
  • Abfragen von Tabellen in einer Datenbank mithilfe der SELECT-Anwendung
  • Arbeiten mit Datentypen
  • „NULL“-Werte behandeln

Transact-SQL

Grundlegende SQL-Anweisungen wie SELECT, INSERT, UPDATE und DELETE stehen unabhängig von dem relationalen Datenbanksystem, mit dem Sie arbeiten, zur Verfügung. Obwohl diese SQL-Anweisungen zum ANSI SQL-Standard gehören, haben viele Datenbankverwaltungssysteme außerdem ihre eigenen Erweiterungen. Diese Erweiterungen stellen Funktionen bereit, die nicht vom SQL-Standard abgedeckt werden, und umfassen Bereiche wie Sicherheitsverwaltung und Programmierbarkeit. Microsoft-Datenbanksysteme wie SQL Server, Azure SQL-Datenbank, Microsoft Fabric und andere verwenden den SQL-Dialekt „Transact-SQL“ oder T-SQL. T-SQL enthält Spracherweiterungen zum Schreiben von gespeicherten Prozeduren und Funktionen, bei denen es sich um in der Datenbank gespeicherten Anwendungscode handelt, und zum Verwalten von Benutzerkonten.

SQL ist eine deklarative Sprache.

Programmiersprachen können als prozedural oder deklarativ kategorisiert werden. Mit prozeduralen Sprachen können Sie eine Folge von Anweisungen definieren, die der Computer zum Ausführen einer Aufgabe abarbeitet. Mit deklarativen Sprachen können Sie die gewünschte Ausgabe beschreiben und die Details der zum Erzeugen der Ausgabe erforderlichen Schritte der Ausführungs-Engine überlassen.

SQL unterstützt einen Teil der prozeduralen Syntax, aber für das Abfragen von Daten mit SQL wird normalerweise deklarative Semantik verwendet. Sie verwenden SQL zum Beschreiben der gewünschten Ergebnisse, und der Abfrageprozessor der Datenbank-Engine entwickelt einen Abfrageplan, um sie abzurufen. Der Abfrageprozessor verwendet Statistiken zu den Daten in der Datenbank und Indizes, die für die Tabellen definiert werden, um einen guten Abfrageplan zu erstellen.

Relationale Daten

SQL wird am häufigsten (wenn auch nicht immer) zum Abfragen von Daten in relationalen Datenbanken verwendet. Eine relationale Datenbank ist eine Datenbank, in der die Daten in mehreren Tabellen organisiert wurden (technisch gesehen als Beziehungen bezeichnet), die jeweils einen bestimmten Entitätstyp (z. B. einen Kunden, ein Produkt oder eine Bestellung) darstellen. Die Attribute dieser Entitäten (z. B. der Name eines Kunden, der Preis eines Produkts oder das Datum einer Bestellung) werden als die Spalten (oder Attribute) der Tabelle definiert, und jede Zeile in der Tabelle stellt eine Instanz des Entitätstyps dar (z. B. einen bestimmten Kunden, ein bestimmtes Produkt oder eine bestimmte Bestellung).

Die Tabellen in der Datenbank sind über Schlüsselspalten miteinander verknüpft, die die jeweils dargestellte Entität eindeutig identifizieren. Für jede Tabelle wird ein Primärschlüssel definiert, und ein Verweis auf diesen Schlüssel wird in einer verknüpften Tabelle als Fremdschlüssel definiert. Dies ist anhand eines Beispiels einfacher zu verstehen:

Eine relationale Datenbank mit vier Tabellen

Das Diagramm zeigt eine relationale Datenbank, die vier Tabellen enthält:

  • Kunde
  • SalesOrderHeader
  • SalesOrderDetail
  • Produkt

Jeder Kunde wird durch das eindeutige Feld CustomerID identifiziert. Dieses Feld ist der Primärschlüssel für die Tabelle Customer. Die Tabelle SalesOrderHeader enthält den Primärschlüssel OrderID zum Identifizieren der einzelnen Bestellungen sowie den Fremdschlüssel CustomerID, der auf den Primärschlüssel in der Tabelle Customer verweist, sodass identifiziert werden kann, welcher Kunde der jeweiligen Bestellung zugeordnet ist. Daten zu den einzelnen Elementen in einer Bestellung werden in der Tabelle SalesOrderDetail gespeichert. Diese Tabelle hat einen zusammengesetzten Primärschlüssel, der die OrderID in der Tabelle SalesOrderHeader mit einem LineItemNo-Wert kombiniert. Die Kombination dieser Werte identifiziert ein Zeilenelement eindeutig. Das Feld OrderID wird auch als Fremdschlüssel verwendet, um anzugeben, zu welcher Bestellung die Rechnungsposition gehört. Ein Feld ProductID wird als Fremdschlüssel für den Primärschlüssel ProductID der Tabelle Product verwendet, um anzugeben, welches Produkt bestellt wurde.

Satzbasierte Verarbeitung

Die Satztheorie ist eine der mathematischen Grundlagen des relationalen Modells von Datenverwaltung und von grundlegender Bedeutung für die Arbeit mit relationalen Datenbanken. Obwohl Sie Abfragen in T-SQL möglicherweise schreiben können, ohne sich mit Sätzen umfassend auszukennen, können Sie schließlich Probleme haben, einige der komplexeren Typen von Anweisungen zu schreiben, die für eine optimale Leistung vielleicht erforderlich sind.

Ohne einen ausführlichen Ausflug in die Mathematik der Mengenlehre zu machen, ist eine Menge jede „Zusammenfassung von bestimmten wohlunterschiedenen Objekten zu einem Ganzen“. Im Hinblick auf SQL Server-Datenbanken können Sie sich eine Menge als Sammlung von unterschiedlichen Objekten mit null oder mehr Membern desselben Typs vorstellen. Die Tabelle Customer stellt beispielsweise einen Satz dar: speziell den Satz aller Kunden. Sie werden sehen, dass die Ergebnisse einer SELECT-Anweisung ebenfalls einen Satz bilden.

Während Sie mehr über T-SQL-Abfrageanweisungen erfahren, ist es wichtig, dass Sie sich immer den ganzen Satz statt einzelner Elemente vorstellen. Mit dieser Denkweise können Sie besser satzbasierten Code schreiben, statt „zeilenweise“ zu denken. Für die Arbeit mit Sätzen ist es erforderlich, in „Vorgängen“ zu denken, die „alle gleichzeitig“ statt jeweils einzeln erfolgen.

Ein wichtiges Feature der Satztheorie ist, dass es keine Spezifikation im Hinblick auf eine Reihenfolge der Elemente eines Satzes gibt. Diese fehlende Reihenfolge gilt für relationale Datenbanktabellen. Es gibt kein Konzept für eine erste Zeile, eine zweite Zeile oder eine letzte Zeile. Auf Elemente kann in beliebiger Reihenfolge zugegriffen (und sie abgerufen werden). Wenn Sie Ergebnisse in einer bestimmten Reihenfolge zurückgeben müssen, müssen Sie diese Reihenfolge explizit mithilfe einer ORDER BY-Klausel in Ihrer SELECT-Abfrage angeben.