Relationales Datenbanksystem Oracle

Werbung
Relationales Datenbanksystem Oracle
1 Relationales Modell
Im relationalen Modell wird ein relationales Datenbankschema wie folgt beschrieben:
RS = hhR1 | X1 | SC1 i, . . . , hRn | Xn | SCn i | SC | ai
a:
[
Xi → B
i=1,...,n
Information wird also in Relationen, Ri , abgelegt. Den Attributen, A ∈ Xi , wird
mittels der Funktion a ein semantischer Bereichsname zugeordnet. Außerdem können
lokale (SCi ) und globale (SC) semantische Bedingungen angegeben werden. Diese müssen
von einem der folgenden Typen sein:
• funktionale Abhängigkeiten
• mehrwertige Abhängigkeiten
• Verbundabhängigkeiten
• Enthaltenseinsabhängigkeiten
Oracle verwendet Tabellen anstelle von Relationen. Das bedeutet, dass ein Tupel
durch eine Zeile in einer solchen Tabelle dargestellt wird. Prinzipiell kann, im Gegensatz
zum relationalen Modell, in einer Tabelle eine Zeile mehrmals vorkommen. Anstatt von
Attributen spricht man bei Oracle-Tabellen auch von Spalten.
Während man im relationalen Modell beliebige semantische Bereichsnamen verwenden kann, gibt Oracle eine feste Menge von Datentypen vor (siehe Abschnitt 4.2). Dabei
ist ein Unterschied zum relationalen Modell, dass verschiedene Tabellen für Spalten mit
gleichen Namen unterschiedliche Datentypen haben können.
Abschnitt 4.1 beschreibt die in Oracle zur Verfügung stehenden semantischen Bedingungen. Im Wesentlichen handelt es sich dabei um Spezialfälle von funktionalen Abhängigkeiten und von Enthaltenseinsabhängigkeiten.
1
2 Konzepte
Die logische Struktur einer Oracle-Datenbank besteht aus mehreren Schichten:
• Die oberste Schicht ist die Datenbank.
• Jede Datenbank enthält einen oder mehrere „tablespaces“.
• Jedem Benutzer ist genau ein Schema zugeordnet (und umgekehrt). Die Daten
jedes Schemas können über mehrere „tablespaces“ verteilt sein.
• Ein Schema enthält Schemaobjekte.
Schemaobjekte können u. a. von einem der folgenden Typen sein:
• Tabellen (tables)
• Sichten (views)
• Materialisierte Sichten (materialized views)
• Sequenzen (sequences)
• Synonyme (synonyms)
• Zugriffsstrukturen (indexes, clusters, hash clusters)
• Dimensionen (dimensions)
• Datenbankverknüpfungen (database links)
• Programmeinheiten (program units): procedures, functions, packages, triggers, . . .
3 Structured Query Language (SQL)
In SQL können verschiedene Arten von Befehlen unterschieden werden:
• data definition language (DDL)
• data manipulation language (DML)
• transaction control
• session control
• system control
• embedded SQL
2
4 Erzeugen von Tabellen
CREATE TABLE table (
(column datatype [DEFAULT expr ] [column_constraint]∗ | table_constraint), . . .
) ;
Hierbei sind table und column Bezeichner.
4.1 Semantische Bedingungen
column_constraint
[CONSTRAINT constraint]
([NOT] NULL |
UNIQUE | PRIMARY KEY |
REFERENCES table [(column)] [ON DELETE (CASCADE | SET NULL)] |
CHECK (condition))
table_constraint
[CONSTRAINT constraint]
(UNIQUE (column, . . . ) | PRIMARY KEY (column, . . . ) |
FOREIGN KEY (column, . . . ) references_clause |
CHECK (condition))
references_clause
REFERENCES table [(column, . . . )] [ON DELETE (CASCADE | SET NULL)]
Jeder semantischen Bedingung kann ein Name, constraint, gegeben werden. Gibt man
keinen Namen an, wird vom Datenbanksystem ein Name generiert.
Oracle kennt den speziellen Wert NULL, der zu jedem Datentyp passt. Er bedeutet soviel wie „ist unbekannt“ oder „nicht definiert“. Für jede Spalte kann man solche Nullwerte
mittels NULL erlauben (default) oder mittels NOT NULL verbieten.
Mit UNIQUE und PRIMARY KEY werden Schlüsselattribute gekennzeichnet. Das heißt,
dass alle anderen Attribute funktional von den Schlüsselattributen abhängen. Darüber
hinaus darf bei PRIMARY KEY keines der Schlüsselattribute den Wert NULL annehmen, und
es darf nur einen solchen Primärschlüssel pro Tabelle geben. Bei UNIQUE sind Nullwerte
erlaubt und zusätzlich ist es zulässig, dass mehrere Zeilen in einer Tabelle sind, die für
alle Schlüsselattribute den Wert NULL haben. Für jede Tabelle dürfen mittels UNIQUE
mehrere Schlüssel definiert werden.
Mit der Angabe von „FOREIGN KEY . . . REFERENCES . . . “ bzw. „REFERENCES . . . “ bei
einzelnen Spalten wird ein sogenannter Fremdschlüssel festgelegt. Dies ist ein Spezialfall
von Enthaltenseinsabhängigkeiten. Hierbei muss auf der nach REFERENCES angegeben
Tabelle auf den angegebenen Attributen ein Schlüssel (mittels UNIQUE oder PRIMARY
KEY) existieren. Gibt man keine Attribute an, muss es auf der angegebenen Tabelle einen
geeigneten Primärschlüssel geben, der dann verwendet wird.
3
4.2 Datentypen
Unter anderem stellt Oracle die folgenden Datentypen zur Verfügung:
• VARCHAR2(n), Zeichenketten bis maximal n Zeichen (1 ≤ n ≤ 4000)
• CHAR(n), Zeichenketten mit genau n Zeichen (1 ≤ n ≤ 2000).
• NUMBER(p,s), Festkommazahlen mit p signifikanten Stellen und s Nachkommastellen (1 ≤ p ≤ 38, −84 ≤ s ≤ 127).
• NUMBER(p), Kurzform für NUMBER(p,0).
• NUMBER, Fließkommazahlen mit einer Genauigkeit von 38 Dezimalstellen.
• FLOAT(b), Fließkommazahlen mit einer Genauigkeit von b Binärstellen (1 ≤ b ≤
126).
• FLOAT, Kurzform für FLOAT(126).
• DATE, Zeitpunkte zwischen dem 1. 1. 4712 v. Chr. 0:00 und dem 31. 12. 9999 24:00
• LONG, Zeichenketten von maximal 2 GB.
• RAW(n) Binärdaten von maximal n Bytes (1 ≤ n ≤ 2000).
• LONG RAW. Binärdaten von maximal 2 GB.
• CLOB, Zeichenketten von maximal 4 GB.
• BLOB, Binärdaten von maximal 4 GB.
4.3 Werte und Bezeichner
Textliterale (bzw. Textkonstanten) werden durch das Zeichen ’ (Apostroph) begrenzt.
Will man das Zeichen ’ selbst in den Text aufzunehmen, muss man es doppelt angeben.
Somit sind z. B. ’Hallo’ und ’So ’’n Quatsch’ syntaktisch korrekte Textkonstanten.
Das Zeichen " (Anführungsstriche) kann verwendet werden, um Bezeichner zu begrenzen. Während Bezeichner normalerweise mit einem Buchstaben beginnen müssen
und alle Kleinbuchstaben in die entsprechenden Großbuchstaben umgewandelt werden,
kann dies durch die Verwendung von Anführungszeichen vermieden werden. Somit sind
Folgendes drei von einander verschiedene gültige Bezeichner: "emp", "Emp", "EMP ". Die
folgenden Angaben stehen hingegen alle für den gleichen Bezeichner: emp, EMP, "EMP".
5 Einfügen von Daten
INSERT INTO table VALUES ( (expr | DEFAULT), . . . ) ;
4
6 Löschen des gesamten Tabelleninhalts
TRUNCATE TABLE table ;
7 Entfernen von Tabellen
DROP TABLE table ;
8 Syntaxdiagramme
create-table
- CREATE - TABLE - table - (
- column - datatype
- DEFAULT - expr
col.-constr. - table-constr.
, - ) - ;
5
col.-constr.
- CONSTRAINT - constraint
- NULL
- NOT
- UNIQUE
- PRIMARY - KEY
- REFERENCES - table
- ( - column - )
- ON - DELETE
- CASCADE
- SET - NULL
- CHECK - ( - condition - )
6
table-constr.
- CONSTRAINT - constraint
- UNIQUE - (
- column
- )
, - PRIMARY - KEY - (
- column
- )
, - FOREIGN - KEY - (
- column
- ) - references-clause
, - CHECK - ( - condition - )
-
references-clause
- REFERENCES - table
- (
- column
, - )
-
- ON - DELETE
- CASCADE
- SET - NULL
insert-values
- INSERT - INTO - table - VALUES - (
- expr
- ) - ;
- DEFAULT
, truncate-table
- TRUNCATE - TABLE - table - ;
7
drop-table
- DROP - TABLE - table - ;
8
Herunterladen