Tabelle

<< Domäne | IBExpert | Tabelleneditor >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


Tabelle

Eine Tabelle ist ein Datenspeicherobjekt bestehend aus einer zweidimensionalen Matrix oder Gitter aus Spalten und Zeilen, theoretisch bekannt als eine mathematische Relation. Es ist ein fundamentales Element der Datenspeicherung.

Relationale Datenbanken speichern alle ihre Daten in Tabellen. Eine Tabelle besteht aus einem ungeordneten Satz an horizontalen Zeilen (Tuples). Jeder dieser Zeilen enthält die gleiche Anzahl an vertikalen Spalten für die individuellen, einzelnen Informationstypen.

Die Schnittfläche einer einzelnen Zeile und einer Spalte ist ein Feld, das ein bestimmtes, unteilbares, atomares Informationsteilchen enthält. D.h. Spalten führen die Namen der einzelnen Felder auf und Zeilen sind die Datensätze, die die eingegebenen Daten beinhalten. Jeder Datenbankzeile kann ein anderer Datentyp zugeordnet sein.

Eine Tabelle ist ein Datenbankobjekt, das Teil der Metadaten der Datenbank ist.

Tabellen von verbundenen Datenbanken können im IBExpert DB Explorer angesehen und bearbeitet werden:

Wir empfehlen, einen Tabellennamen auf nicht mehr als 14 Zeichen zu beschränken, damit der Name des Fremdschlüssels (welcher bis InterBase® 6 und Firebird 1.5 auf 32 Zeichen beschränkt ist; InterBase® 7 erlaubt 64 Zeichen) beide, in Beziehung stehenden Tabellennamen, beinhalten kann:

Präfix "FK" plus zwei Trenn-Unterstriche plus beide Tabellennamen, beispeilsweise:

 FK_Tabelle1_Tabelle2

Bitte beachten Sie, dass dies keine Firebird/InterBase® Beschränkung ist, sondern lediglich eine Empfehlung von IBExpert, um eine klare und logische Namensgebung für Fremdschlüssel sicher zu stellen.

zurück zum Seitenanfang

Neue Tabelle

Die Erzeugung einer neuen Tabelle etabliert die Tabelle, ihre Spalten und Integritätsbeschränkungen in eine vorhandene Tabelle. Der Benutzer, der eine Tabelle erzeugt, ist der Tabellenbesitzer und hat alle Rechte dafür, inklusive der Möglichkeit anderen Benutzern, Triggern und Stored Procedures GRANT-Privilegien (Rechte) zuzuweisen.

Eine neue Tabelle kann in einer verbundenen Datenbank entweder mit dem Menüpunkt Datenbank / Neue Tabelle oder dem entsprechenden Symbol in der SymbolleisteNeues Datenbankobjekt, oder mit dem Rechtsklickmenü des DB Explorers (oder den Tasten [Strg + N], wenn der Tabellenkopf der entsprechenden verbundenen Datenbank markiert ist, erzeugt werden. Der Dialog Neue Tabelle erscheint mit seiner eigenen Symbolleiste, (Tabelleneditor), und einem Drop-Down-Menü (Schaltknopf Tabelle).

Beim Erzeugen einer Tabelle ist es notwendig, einen in der Datenbank einmaligen Tabellennamen zu bestimmen. Mindestens eine Spalte muss definiert sein, um die Tabelle erfolgreich zu erzeugen.

Zunächst wird der Tabellenname (1) in der oberen Zeile bestimmt:

Alle Datenmanipulationsoperationen, wie SELECT, INSERT, UPDATE und DELETE werden unter Verwendung dieses Namens ausgeführt.

Verwenden Sie die Drop-Down-Liste (2), um den Tabellentyp festzulegen (Firebird 2.1 und InterBase® 7.5 Global Temporary Tables), falls erforderlich. Folgende Optionen sind hier enthalten:

  • Persistent (Standardeinstellung)
  • Temp : DELETE ROWS
  • Temp : PRESERVE ROWS

(3) hier kann eine externe Datei spezifiziert werden, falls erforderlich.

Der IBExpert Tabelleneditor wird im Kapitel, Tabelleneditor, ausführlich beschrieben.

Felder:

Außerdem können Felder im Tabellen im Tabelleneditor definiert werden. Mindestens ein Feld muss definiert werden, damit die Tabelle als ein Objekt in der Datenbank committed und registriert werden kann [Strg + F9]. Dadurch werden zusätzliche Tabellendefinitionen ermöglicht. Es ist ebenfalls möglich, Felder vom Datenbank Explorer-Baum und dem SQL Assistenten in die Feldliste des Tabelleneditors zu ziehen. Dadurch ist ein schnelles und einfaches Kopieren von Felddefinitionen von einer Tabelle zur nächsten möglich.

Eine Übersicht über die verschiedenen Eingabefelder ist unten aufgelistet.

(4) #: IBExpert teilt jedem Feld eine fortlaufende Nummer zu. Eine Eingabe seitens des Benutzers ist hier weder möglich noch notwendig.

(5) Primär- und Fremdschlüssel: In der ersten Spalte PK (Primärschlüssel) können ein oder mehrere Felder als Primärschlüssel (per Doppelklick) definiert werden. Ein Primärschlüssel (PK) dient zur eindeutigen Identifizierung eines Datensatzes und dient auch als Index. Fremdschlüssel werden auf der Constraints-Seite definiert und werden hier angezeigt.

(6) Feldname: Jedem Feld sollte ein logischer Name gegeben werden.

(7) Feldtyp: Hier kann der Datentyp festgelegt werden.

(8) Domäne: Felder können auch auf Domänen basieren. Wenn keine Domäne definiert ist, erzeugt Firebird/InterBase® eine Systemdomäne für das Feld, wie definiert.

(9) Länge: Definiert die Feldlänge.

(10) Scale: Hier kann die Anzahl der Dezimalstellen für alle numerischen Felder festgelegt werden.

(11) Subtype: Ein Subtype sollte für Blobfelder fetsgelegt werden.

(12) Array: Obwohl Arrays allen Reglen der Normalisierung widersprechen, gibt es bestimmte Situationen (beispielsweise das Speichern von Messdaten), die Arrays notwendig machen. Weiter Informationen finden Sie unter Arrays.

(13) Nicht Null: Diese Checkbox kann per Doppelklick oder mit der Leertaste markiert werden. NOT NULL erzwingt die Eingabe von Daten in dieses Feld (d.h. das Feld kann nicht frei gelassen werden). Die NOT NULL Checkbox wird automatisch markiert, wenn das Feld selbst bereits als NOT NULL definiert ist, und auf einer NOT NULL-Domäne basiert.

(14) Zeichensatz: Ein Zeichensatz muss für einzelne Felder festgelegt werden. Dies überschreibt die Einstellung des Standardzeichensatzes für die Datenbank. Obwohl selten genutzt, kann es notwendig werden, wenn beispielsweise asiatische, russische oder arabische Adressen in eine Datenbank eingegeben und sortiert werden müssen, für die ein europäischer Standardzeichensatz festgelegt wurde.

(15) Sortierfolge: Hier wird die Collation (Sortierfolge) für einen Zeichensatz eines Feldes festgelegt.

(16) Beschreibung: Nützlich für die Datenbankkommunikation. Die Seite Beschreibung sollte zur Beschreibung der Tabelle verwendet werden; Das Feld Beschreibung zur Beschreibung des Feldes.

(17) Autoinc: Bei Betätigung der Leertaste oder per Doppelklick erscheint ein neues Dialogfenster, das die Autoinkrementierung von (Generatoren, Triggern oder Prozeduren) definiert.

(18) Check: Jeder Datensatz wird, einem in Klammern definierten Expression entsprechend, auf Gültigkeit untersucht. Hier können bestimmte Bedingungen definiert werden (siehe Check Constraint), die eine automatische Datenbankprüfung während der Dateneingabe auslösen, um die Datenübereinstimmung in den Tabellen und untereinander zu gewährleisten.

(19) Computed Source: SQL Eingabefenster für Berechnungen. Dies kann für Felder genutzt werden, die Ergebnisse aus Berechnungen in anderen Feldern in derselben oder in anderen Tabellen der Datenbank enthält.

(20) Standardquelle: Hier kann eine Standarddateneingabe (Text oder numerisch, abhängig vom festgelegten Datentyp) definiert werden, z.B. kann der Text UNBEKANNT (NOT KNOWN) hier als Standardquelle eingegeben werden, so dass automatisch der Eintrag UNBEKANNT erfolgt, wenn der Benutzer bei einem Adressfeld die Daten nicht eingeben kann, weil diese nicht verfügbar sind. Es ist wichtig hier zu beachten, dass in IBExpert Versionen vor Firebird 2.1, wenn eine Standardquelle für ein Feld definiert wurde, Firebird/InterBase® dies weder nachträglich ändern kann noch nachträglich eine Standardquelle hinzufügen kann. Das Feld muss in dem Fall gelöscht und ein neues Feld erzeugt werden. Mit Firebird 2.1 wurden die Klauseln SET DEFAULT und DROP DEFAULT hinzugefügt:

Syntax

 ALTER TABLE t ALTER [COLUMN] c SET DEFAULT default_value;
 ALTER TABLE t ALTER [COLUMN] c DROP DEFAULT;

Bitte beachten Sie:

  • Array-Felder können keinen Standardwert haben.
  • Wenn Sie den Typ eines Feldes ändern, kann der Standardwert stehen bleiben. Das ist so, weil einem Feld der Domänentyp per Standardvorgabe gegeben werden kann, aber das Feld selbst kann so eine Domäne überschreiben. Auf der anderen Seite, kann dem Feld direkt ein Typ gegeben werden. In diesem Fall gehört die Standardvorgabe logisch zu dem Feld (obwohl diese Information stillschweigend in einer, hinter den Kulissen erzeugten Domäne gehalten wird).

Tabellen können natürlich auch per https://ibexpert.net/ibe/index.php?n=Doc.DDL-DataDefinitionLanguage | DDL]] direkt im SQL Editor mit folgender Syntax erzeugt werden:

 CREATE TABLE TABLE_NAME (
 COLUMN_NAME1 <COLUMN_DEFINITION>,
 COLUMN_NAME2 <COLUMN_DEFINITION>,
 ...
 COLUMN_NAMEn <COLUMN_DEFINITION>;
 TABLE_CONSTRAINT1,TABLE_CONSTRAINT2,
 ...
 TABLE_CONSTRAINTn);

Weiteres finden Sie in den Firebird 2.1 Release Notes Kapitel SQL2003 compliant alternative for computed fields.

Weitere Informationen über die einzelen Tabelleneditor-Seiten kann im Kapitel, Tabelleneditor, nachgelesen werden.

Vergessen Sie nach Erzeugung der Tabellen nicht auf Commit zu klicken.

Siehe auch:
deutschsprachig:
SQL Editor / Text einfügen
englischsprachig:
Firebird administration using IBExpert: Transferring data to a new table or another database

zurück zum Seitenanfang

Bearbeite Tabelle

Eine Tabelle kann bearbeitet werden, um ihre definierte Struktur anzupassen. Es ist sogar möglich, mehrere Änderungen gleichzeitig vorzunehmen.

Änderungen können im Tabelleneditor vorgenommen werden, der per Doppelklick auf den Tabellennamen im DB Explorer geöffnet werden kann. Alternativ können Sie im Rechtklickmenü des DB Explorers den Menüpunkt Bearbeite Tabelle verwenden oder das Tastaturkürzel [Strg + 0].

Folgende Operationen können bei Änderung der Tabelle ausgeführt werden:

  • Felder hinzufügen
  • Add table level constraints
  • Felder löschen
  • Drop table level constraints
  • Felder ändern

Wenn Sie Felder löschen, ist es wichtig zu beachten, dass die Spalte nicht Teil des Primärschlüssels der Tabelle ist, keine Fremdschlüsselbeziehung zu einer anderen Tabelle hat, keine Unique-Beschränkungen enthält, nicht Teil einer Tabellenbeschränkung oder Teil einer CHECK-Beschränkung einer anderen Spalte ist.

Weitere Details finden Sie unter Tabelleneditor.

Die Seite Beschränkungen im Tabelleneditor listet alle diese Felder auf, so dass der Entwickler schnell ermitteln kann, ob Änderungs-/ Löschbeschränkungen notwendig sind, bevor dass fragliche Feld gelöscht wird (oder vielmehr, bevor ein Feld überhaupt gelöscht werden sollte!).

Die SQL-Syntax lautet:

 ALTER TABLE <table_name>
 ADD <field_name> <field_definition>
 ADD CONSTRAINT <constraint_name> <constraint_definition>
 DROP CONSTRAINT <constraint_name>
 DROP <field_name>;

Mit einer einzigen ALTER TABLE-Anweisung können mehrere Ergänzungen und Löschungen vorgenommen werden.

Eine Tabelle kann von ihrem Erzeuger, vom SYDBA-Benutzer und jedem anderen Benutzer mit Betriebssystemrechten eines Superusers.

Wenn neue Daten in einer Tabelle mit einem Primärschlüssel oder einer UNIQUE-Beschränkungsdefinition kollidieren, schlägt ALTER TABLE fehl. Das Löschen einer Spalte schlägt in folgenden Fällen fehl:

  • Die Spalte ist Teil einer UNIQUE, PRIMARY oder FOREIGN KEY-Beschränkung,
  • Die Spalte wird in einem CHECK Constraint (Prüfbeschränkung) verwendet,
  • Die Spalte wird in dem Wert Expression einer berechneten Spalte verwendet,
  • Die Spalte wird von einem anderen Datenbank, wie einem View referenziert.

Wichtig: Wenn eine Spalte gelöscht wird, gehen alle gespeicherten Daten verloren.

Siehe auch:
englischsprachig:
Firebird 2.0.4 Release Notes: SET/DROP DEFAULT clauses for ALTER TABLE
Firebird 2.1 Release Notes: SQL2003 compliant alternative for computed fields

zurück zum Seitenanfang

Tabelle erneut erzeugen

Neu seit Firebird 2.0: Die DDL-Anweisung RECREATE TABLE ist jetzt in der DDL enthalten. Die Semantik ist dieselbe, wie für andere RECREATE-Anweisungen.

Siehe auch:
englischsprachig:
RECREATE TABLE

Lösche Tabelle

Wen eine Tabelle gelöscht wird, werden alle Daten, Metadaten und Indizes in dieser Tabelle ebenfalls aus der Datenbank gelöscht.

Eine Tabelle kann nur gelöscht werden, wenn sie zum Zeitpunkt der Ausführung des Drop-Befehls nicht verwendet wird und von keinem anderen Datenbankobjekt referenziert wird, wie in einer Fremdschlüsselbeziehung, einer Computed-Source-Spalte oder einer CHECK-Beschränkung für eine andere Tabelle, oder nicht Teil einer Definition eines Views oder einer Stored Procedure oder eines Triggers ist.

Jede bestehende Abhängigikeit kann auf der Seite Tabelleneditor / Abhängigkeiten eingesehen werden. Die meisten Datenbankobjekte können hier einfach von der Seite Abhängigkeiten oder dem Abhängigkeiten-Viewer aus per Rechtsklick auf das ausgewählte Objekt und Auswahl des Menüpunktes Lösche Objket oder [Strg + Entf] gelöscht werden.

Verwenden Sie zum Löschen einer Tabelle den Rechtsklickmenüpunkt Lösche Tabelle im DB Explorer oder die Tasten [Strg + Entf] oder, wenn die Tabelle bereits im Tabelleneditor geöffnet ist, verwenden Sie das Tabelleneditor Menü (durch Anklicken Tabelle oben links zu öffnen), Lösche Tabelle.

IBExpert bittet um Bestätigung:

bevor die Tabelle endgültig gelöscht wird. Einmal gelöscht , kann die Tabelle nicht zurückgeholt werden. Sie muss erneut erzeugt werden, falls sie versehentlich gelöscht wurde!

Die SQL-Syntax lautet:

 DROP TABLE <table_name>;

Bitte beachten Sie: Wenn DROP TABLE zum Löschen einer externen Tabelle verwendet wird, wird nur die Tabellendefinition aus der Datenbank entfernt. Die externe Datei wird nicht gelöscht.

Eine Tabelle kann nur von Ihrem Erzeuger, dem SYSDBA oder einem Benutzer mit Grundrechten des Betriebssystems.

zurück zum Seitenanfang

Erzeuge SIUD Prozeduren

Per Rechtsklick auf eine Tabelle im DB Explorer, finden Sie den Menüpunkt Erzeuge SIUD Prozeduren. SIUD ist eine Abkürzung für SELECT, INSERT, UPDATE und DELETE.

Wenn Sie verhindern wollen, dass Datenbankbenutzer direkt Daten mit INSERT, UPDATE und DELETE-Befehlen manipulieren, können Sie diese ausführbare Prozedur verwenden. Details finden Sie unter Erzeuge Prozedur aus Tabelle.

Siehe auch:
deutschsprachig:
Symbolleiste Neues Datenbankobjekt
Symbolleiste Tabelleneditor
Tabelleneditor
Schlüssel
englischsprachig:
SQL Language Reference
Data Definition Language (DDL)
Data Manipulation Language (DML)
INSERTEX
CREATE TABLE
ALTER TABLE
RECREATE TABLE

zurück zum Seitenanfang
<< Domäne | IBExpert | Tabelleneditor >>