Oracle Datenstrukturen

Die wichtigsten ORACLE Datenstrukturen sind:

  • Tabellen
  • Sysnonyme
  • Sequence
  • Index
  • View

Tabelle
Eine Tabelle besteht aus Zeilen und Spalten.
Tabellen können bis zu 1000 Spalten fassen.

View
Ein View ist die Darstellung von Teilmengen, einer oder mehrerer Tabellen.

Sequence
Eine Sequence generiert automatisch eindeutige Nummern. Mit einer Sequence können die Werte eines Primärschlüssels in einer Tabelle generiert werden.

Synonyme
Synonyme sind alternativnamen für andere Datenbankobjekte.

Index
Ein Index eignet sich zur Organisation von Daten. Mit hilfe eines Indexes kann die Performance verbessert werden, wenn durch die neue Struktur der die gesuchten Daten der Tabelle schneller gefunden werden.

 

Tabellen Referenzieren

Ein Schema ist eine Sammlung von Datenbankobkekten eines Benutzers. Diese sind eigentum dieses Benutzers. Zu den Schema-Objekten gehören Tabellen, Views, Sequences und Indizies. Tabellen eines Benutzers können nicht zum Scheme eines anderen Benutzers hinzugefügt werden.

Damit ein Benutzer auf die Tabellen eines anderen Benutzers zugreifen kann, muss dieser entsprechene privilegien vergeben.

Wenn Tabellen mit einem Constraint referenziert werden, müssen sich diese Tabellen in der selben Datenbank bfinden.

Wenn Sie die Tabelle namen von Ihrem Kollegen Huber ansprechen wollen, müssen Sie diese mit huber.namen ansprechen.

 

Regeln zur Benennung von Datenbankobjekten

  1. Die Namen müssen mit einem Buchstaben beginnen, und dürfen nicht länger als 30 Zeichen sein. Groß und Kleinschreibung spielt keine Rolle.
  2. Es sind lediglich folgende Zeichen im Namen erlaubt: A-Z, a-z, 0-9, _, $,#
  3. Ein Objekt darf nicht den selben Namen wie ein anderes Objekt im selben Scheme haben.
  4. Ein Objekt darf keinen, von Oracle reservierten Namen verwenden. So ist CREATE oder TABLE ... nicht als Objektname erlaubt.

Die Bennungskonventionen können außer Kraft gesetzt werden. CREATE TABLE "table" würde eine Tabelle "table" erzeugen. Beim Aufruf muss diese jedoch immer mit doppelten Anführungszeichen versehen werden.
Von dieser Vorgehensweise ist jedoch abzuraten.

 

 

CREATE TABLE

CREATE TABLE wird zur Erzeugung von Tabellen verwendet. Sie gehört zur Gruppe der DDL Anweisungen. Die Änderungen an der DB durch DDL Befehle, wirkt sich unmittelbar nach derer Ausführung aus.
DDL Anweisungen zeichnen Informationen im DatatDictionary auf.

Zur Ausführung eines CREATE TABLE, benötigen Sie die entsprechenden Privilegien.

CREATE TABLE [schema].tabellenname(
  spaltenname datentyp [default Wert]
  [collumn_constraint],...
  [table_constraint],...
);

 

 

ORACLE Datentypen

Es gibt neun unterschiedliche Datentypen. Die meisten haben eine bestimmte Größe, bei einigen jedoch, kann die Größe selbst definiert werden.

VARCHAR2(size)
Varchar2 kann eine Größe von 1 bis 4000 Zeichen annehmen. Bei der Erstellung muss eine Maximalgröße angegeben werden.

CHAR
Der Datentyp Char ist normal für ein Zeichen gedacht, und ist per default auch so groß. Die Größe kann jedoch bis auf 2000 Zeichen erweitert werden.

Number(p,s)
Number ist default mit 38 Stellen angegeben. Der Datentyp kann jedoch mit p=1-38 Stellen vor dem Komma, und s=-84 bis 127 Stellen nach dem Komma verändert werden.

Date
Date wird Standardmässig im Format DD-MON-YY ausgegeben. Das früheste Datum ist der 1.1.4712 v.Chr.

LONG
Der Datentyp LONG kann Zeichenwerte bis zu einer Größe von 2GB enthalten. Je Tabelle darf nur eine Spalte mit dem Datentyp LONG vorhanden sein.

RAW
RAW ist dem Datentyp VARCHAR2 gleich, wird jedoch wür binäre Daten verwendet, die ORACLE nicht interpretiert.

LONGRAW
RAW ist dem Datentyp LONG gleich, wird jedoch wür binäre Daten verwendet, die ORACLE nicht interpretiert.

CLOB
Dieser Datentyp speichert einen Positionsanzeiger, der eine externe Datei mit Einzelbyte-Zeichendaten von bis zu 4GB referenziert.

BLOB
Dieser Datentyp speichert einen Positionsanzeiger, der eine externe Datei mit Binärdaten von bis zu 4GB referenziert.

BFILE
BFILE referenziert externe Dateien mit Binärdaten von bis zu 4GB länge.

 

CONSTRAINTS

Constraints werden verwendet, um ungültige Manipulationen an den Daten zu verhindern.
Die Überprüfungen durch die Constraints erfolgt auf Seite der Datenbank. Die Constraints können jeder Zeit erstellt bzw.gelöscht werden.

NOT NULL
NOT NULL wird immer innerhalb der Spaltendefinition definiert. NOT NULL stellt sicher, dass dieses Feld immer gefüllt wird.

UNIQUE
Unique stellt sicher, dass eine Spalte, oder eine Spaltengruppe eindeutige Werte über alle Zeilen hinweg enthält. Es sei denn der Wert ist NULL.

Primärschlüssel
Ist wie Unique anzusehen, jedoch ist kein NULL Wert möglich.

Fremdschlüssel
Der Fremdschlüssel stellt eine Beziehung zu einem Kind-Spalte (Fremdschlüssel) und einer Vater-Spalte (Primärschlüssel) her. Der Wert des Fremdschlüssels muss immer einen Wert der Vater-Spalte enthalten, oder NULL.

CHECK
Check definiert eine Bedingung, die jede Zeile einer Tabelle enthalten muss. Wenn die Spalte ALter nur Werte zwischen 0 und 120 enthalten soll, können Sie diese Überprüfung mit CHECK definieren.

 

 

Constraints auf Spalten- bzw. Tabellenebene

Constraints können auf Spalten- bzw. auf Tabellenebene definiert werden. Wenn die Constraints bei der erstellung nicht benannt werden, wählt der Server einen Namen. Sie sollten sprechende Namen verwenden, damit Sie Fehlermeldungen den entsprechenden COnstraints zuordnen können.

Ein Constraint auf Spaltenebene referenziert eine einzelne Spalte. Sie werden in der Spaltendefinition definiert.

Beispiel:
CREATE TABLE benutzer
(benutzer_id NUMBER(4)
 CONSTRAINT benutzer_benutzer_ID_pk PRIMARY
 ...
 name VARCHAR(15)
);

Constraints auf Tabellenebene können eine, aber auch mehrere Spalten referenzieren. Sie werden nach der Spaltendefinition definiert.

Beispiel:
CREATE TABLE benutzer
(benutzer_id NUMBER(4)
 name VARCHAR2(15)
 ...
),
CONSTRAINT benutzer_benutzer_id_pk PRIMARY KEY(benutzer_id);

Das NOT NULL Constraint ist das einzige Constraint, welches nur auf Spaltenebene referenziert werden darf.

 

Das NOT NULL Constraint

Bei einigen Spalten ist es notwendig zu überprüfen, das bei der Eingabe auch sicher ein Wert übergeben wurde.

Beispiel 1:
name VARCHAR2(15) NOT NULL,

Hier wurde kein Name für das Constraint angegeben, daher wird ORACLE selbst einen erstellen.

Beispiel 2:
CREATE TABLE benutzer
(...
 benutzer_id NUMBER(4)
 CONSTRAINT benutzer_benutzer_id_NN NOT NULL,
 ...
);

Hier wurde ein Name für das Constraint vergeben. dieser ist im Großen und Ganzen frei wählbar. Ich benutze folgende Konstellation:

(tabellenname)_(Spaltenname)_(Constrainttyp hier NN=NOT NULL)

 

Das UNIQUE Constraint

Um zu vermeiden, dass ein Wert mehrfach in einer Spalte vorkommt, können Sie das UNIQUE Constraint verwenden. Der Primärschlüssel enthält dieses UNIQUE automatisch.
Ein UNIQUE Constraint auf nur einer Spalte erlaubt NULL- Werte. Das UNIQUE Constraint kann auf Spalten oder Tabellenebene definiert werden. Bei der Definition eines UNIQUE Constraints erstellt ORACLE automatisch einen UNIQUE- Index.

Die Syntax zur definition eines UNIQUE Constraints auf Spaltenebene ist der des NOT NULL Constraints identisch.

Wenn sich ein UNIQUE Constraint auf mehrere Spalten bezieht, muss dieses auf Tabellenebene definiert werden.

Beispiel:
CREATE TABLE benutzer
(benutzer_id NUMBER(4)
 ...
 name VARCHAR2(15)
 nachname VARCHAR(15)
);
CONSTRAINT benutzer_name_nachname_uk UNIQUE (name, nachname);