Firebird Documentation IndexFirebird 2.5 SprachreferenzSQL Sprachstruktur → Hintergrund zu Firebirds SQL-Sprache
Firebird Home Firebird Home Zurück: SQL SprachstrukturFirebird Documentation IndexNach oben: SQL SprachstrukturWeiter: Grundelemente: Statements, Klauseln, Schlüsselwörter

Hintergrund zu Firebirds SQL-Sprache

Inhaltsverzeichnis

SQL Bestandteile
SQL-Dialekte
Fehlerbedingungen

Zu Beginn, ein paar Punkte über die Eigenschaften die im Hintergrund von Firebirds Sprache eine Rolle spielen.

SQL Bestandteile

Verschiedene Teilmengen von SQL gehören wiederum in verschiedene Aktivitätsbereiche. Die Teilmengen in Firebirds Sprachimplementation sind:

  • Dynamic SQL (DSQL)

  • Procedural SQL (PSQL)

  • Embedded SQL (ESQL)

  • Interactive SQL (ISQL)

Dynamic SQL macht den Hauptteil der Sprache aus, der in Abschnitt (SQL/Foundation) 2 der SQL-Spezifikation beschrieben wird. DSQL repräsentiert Statements, die von Anwendungen über die Firebird API durch die Datenbank verarbeitet werden.

Procedural SQL ergänzt Anweisungen der Dynamic SQL um lokale Variablen, Zuweisungen, Bedingungen, Schleifen und andere prozedurale Verhalten. PSQL entspricht dem 4. Teil (SQL/PSM) der SQL-Spezifikationen. Ursprüunglich waren PSQL-Erweiterungen nur über persistent gespeicherte Module (Prozeduren und Trigger) verfügbar. In späteren Releases wurden diese jedoch auch in Dynamic SQL aufgenommen (vergleichen Sie hierzu auch EXECUTE BLOCK).

Embedded SQL berschreibt die Untermenge von DSQL, die von Firebird gpre unterstützt wird. Dies ist die Anwendung, welche es erlaubt, SQL-Konstrukte in Ihre Host-Programmiersprache (C, C++, Pascal, Cobol, etc.) einzubetten und diese in gültigen Firebird API-Aufrufen auszuführen.

Anmerkung

Nur ein Teil der in DSQL implementierten Anweisungen und Ausdrücke werden in ESQL unterstützt.

Interactive ISQL wird durch die Sprache beschrieben, die mittels Firebirds isql ausgeführt werden kann. Dies ist die Befehlszeilenanwendung, für den interaktiven Zugriff auf Datenbanken. Da dies eine reguläre Client-Anwendung ist, ist ihre native Sprache in DSQL verfasst. Sie nutzt außerdem einige zusätzliche Befehle, die nicht außerhalb ihrer spezifischen Umgebung gelten.

Sowohl DSQL wie auch PSQL werden vollständig in dieser Referenz behandelt. Dies gilt nicht für ESQL und ISQL, sofern nicht ausdrücklich beschrieben.

SQL-Dialekte

Der Begriff SQL dialect beschreibt ein spezifisches Feature der SQL-Sprache, das bei Zugriff einer Datenbank zur Verfügung steht. SQL-Dialekte können auf Datenbankebene definiert und auf Verbindungsebene spezifiziert werden. Drei Dialekte stehen zur Verfügung:

  • Dialect 1 dient aussschließlich der Abwärtskompatibilität mit sehr alten InterBase-Datenbanken bis Version 5. Dialekt 1-Datenbanken beinhalten einige Features, die sich von Dialekt 3, dem Firebird-Standard, unterscheiden.

    • Datums- und Zeitinformationen werden als DATE-Datentyp gespeichert. Ein TIMESTAMP-Datentyp ist ebenfalls verfügbar, der identisch mit dieser DATE-Implementierung ist.

    • Doppelte Anführungszeichen dürfen als Alternative für das Apostroph als Textbegrenzer verwendet werden. Dies ist gegensätzlich zum SQL-Standard—doppelte Anführungszeichen sind für den einen bestimmten Zweck sowohl in Standard SQL wie auch in Dialekt 3 reserviert. Als Textbegrenzer sollten doppelte Anführungszeichen demnach energisch vermieden werden.

    • Die Präzision für NUMERIC- und DECIMAL-Datentypen ist geringer als im Dialekt 3 und falls die Präzision einer Dezimalzahl größer als 9 Stellen sein soll, wird Firebird diese intern als Fließkommazahl speichern.

    • Der Datentyp BIGINT (64-Bit Integer) wird nicht unterstützt.

    • Bezeichner unterscheiden Groß- und Kleinschreibung und müssen immer den Regeln für Bezeichner entsprechen—vergleichen Sie den Abschnitt Bezeichner.

    • Obwohl Generator-Werte als 64-Bit-Zahlen gespeichert werden, wird ein Clientaufruf von zum Beispiel SELECT GEN_ID (MyGen, 1) immer einen 32-Bit-Wert zurückgeben.

  • Dialect 2 ist nur in der Firebird-Clientverbindung verfügbar und kann nicht in der Datenbank definiert werden. Hintergrund ist, Entwickler beim Debugging zu unterstützen, wenn eine reguläre Datenbank von Dialekt 1 zu Dialekt 3 migriert werden soll.

  • In Dialect 3-Datenbanken,

    • werden Zahlen (DECIMAL- und NUMERIC-Datentypen) intern als lange Fließkommazahl gespeichert, sobald die Präzision größer als 9 Stellen ist.

    • Der TIME-Datentyp ist nur für das Speichern von Tageszeiten gedacht.

    • Der DATE-Datentyp speichert nur Datumsinformationen.

    • Der BIGINT-Datentyp für 64-Bit-Integer ist verfügbar.

    • Doppelte Anführungszeichen sind reserviert als Begrenzer für irreguläre Bezeichner. Diese ermöglichen es Objektnamen zu definieren, die Groß- und Kleinschreibung unterscheiden oder die Anforderungen an reguläre Bezeichner nicht erfüllen.

    • Alle Zeichenketten müssen in einfachen Anführungszeichen begrenzt werden.

    • Generatorwerte werden als 64-Bit-Ganzzahlen gespeichert.

Wichtig

Die Verwendung von Dialekt 3 wird strengstens für die Entwicklung neuer Datenbanken und Anwendungen empfohlen. Sowohl die Datenbank- als auch die Verbindungsdialekte sollte zueinander passen. Ausnahme bildet die Migration mittels Dialekt 2.

Diese Referenz beschreibt die Semantic unter SQL Dialekt 3, solange nicht anders angegeben.

Fehlerbedingungen

Jede Verarbeitung eines SQL-Statements wird erfolgreich beendet oder mit einer speziellen Fehlerbedingung abgebrochen.

Zurück: SQL SprachstrukturFirebird Documentation IndexNach oben: SQL SprachstrukturWeiter: Grundelemente: Statements, Klauseln, Schlüsselwörter
Firebird Documentation IndexFirebird 2.5 SprachreferenzSQL Sprachstruktur → Hintergrund zu Firebirds SQL-Sprache