Datenbanken

1. Allgemeines:

Integrität = Korrektheit der Daten einer Datenbank

Integritätsbedingungen gelten im Gegensatz zu den Sicherheitsbedingungen für ganze Benutzergemeinschaften und nicht für jeden Benutzer individuell. Die Integrität einer Datenbank ist nur dann in Gefahr, wenn Datenänderungen durchgeführt werden. Die Integritätsbedingungen sollen mit dazu beitragen, dass der Übergang immer von einem korrekten Zustand in einen anderen korrekten Zustand erfolgt.

Zu betrachtende Zustandsänderungen sind:

Modifizieren

Löschen

Einfügen

Für das Datenbankkonzept ist jedoch von entscheidender Wichtigkeit, dass nicht der einzelne Programmierer die Korrektheit der Daten in selbsterstellten Kontrollroutinen verifiziert, sonder dass die Datenbankintegrität vom Datenverwaltungssystem erzwungen wird (system enforced integrity). Eng verbunden mit dem Begriff ist der Begriff der Transaktionen, Lesevorgänge machen im Sinne der Datenintegrität keine Transaktionen aus, da keine Zustandsänderungen bewirkt werden.

2. Vorgänge im System zur Erhaltung der Datenintegrität

2.1. Sperrung von Dateneinheiten:

Integritätsbedingungen sind semantische Bedingungen, die vom Benutzer aufgestellt und vom Datenbankadministrator formuliert und eingebracht werden müssen. Diese Bedingungen sind auch aus system-logischer Sicht völlig ausreichend, wenn man davon ausgeht, dass zu einem Zeitpunkt nur ein Benutzer mit seiner Transaktion über das Datenbanksystem verfügt.

Durch ein Sperren wird ein exklusiver (ausschließlicher) Zugriff zur Integritätseinheit gewährt. Dem exklusiven Zugriff, der bei Datenänderungen nötig wird, steht der gemeinsame Zugriff bei Lesevorgängen gegenüber. "Gemeinsamer Zugriff" bedeutet, dass zwei oder mehr Transaktionen gleichzeitig eine Integritätseinheit lesen dürfen; "Gleichzeitig" heißt, dass ein Teilschritt einer Transaktion schon ausgeführt wird, bevor eine andere Transaktion abgeschlossen ist. Diese Sperr- und Entsperrmechanismus hat aber die unangenehme Nebenwirkung des Blockierens (deadlock).

3. ARTEN von SQL-Kommandos

Mit SQL kann man:

Tabellen erstellen in einer Datenbank

Daten speichern

Daten herausfiltrieren

Daten und Struktur von Tabellen ändern

mit Daten rechnen

Die SQL-Kommandos sind in folgende Kategorien unterteilt:

DDL (Data Definition Commands)

DML (Data Manipulation Commands)

DQL (Data Query Commands)

3.1 DQL:

Die SELECT-Abfrage filtert Daten aus einer Datenbank.

Mit SQL kann man mit relationalen Operatoren (z.B.:<,>,<>,=,...) komplexe Abfragen bilden. Die SELECT-Abfrage findet, filtert und gibt Daten aus. SELECT-Abfragen sind rekursiv. Das Ergebnis einer SELECT-Abfrage sind sogenannte Ergenistabellen.

Zusätzliche Kommandos:

ALL

Grundlegend werden bei einer SELECT-Abfrage alle Datensätze herausgefiltert

Ausdruck (expression)

Dies ist eine SELEct-Liste, die einen oder mehrere Ausdrücke durch ein Komma getrennt enthält. Ein Ausdruck kann sein:

ein Spaltenname

eine Konstante

ein Systemschlüsselwort

das Ergebnis einer Funktion

FROM

Die FROM-Klausel beinhaltet die Namen der Tabellen oder Ansichten aus denen die Ergebnistabellen geformt werden. Jeder Name muss eine Tabelle oder Ansicht identifizieren, die in der Datenbank enthalten ist.

SELECT was FROM woher

WHERE

Mit der WHERE-Klausel kann angegeben werden, welche Zeilen/Datensätze aus einer Tabelle verwendet werden sollen. Die WHERE-Klausel muss nicht angegeben werden, d.h. sie ist optional. Die Bedingung bei einer WHERE-Klausel ist wie eine Abfrage, sie kann zutreffen oder nicht.

GROUP BY

Mit der GROUP BY-Klausel können die Ergebnissätze in einzelne Gruppen geteilt werden. Es kann ein "Gruppenwechselkriterium" angegeben werden, d.h. ein oder mehrere Felder bilden eine Gruppe. Bei der Ausführung dieser Anweisung werden alle Sätze, die den gleichen Wert haben zu einer Gruppen zusammengefaßt.

HAVING

Die HAVING-Klausel erlaubt ein Suchkommando für eine Gruppe von Reihen/Zeilen von der GROUP BY-Klausel ausgehend. Mit der WHERE-Klausel werden die Datensätze schon beim Lesen überprüft, will man das aber nicht gibt es die HAVING-Klausel. HAVING definiert eine Bedingung, die sich auf das Ergebnis der Gruppierung bezieht.

ORDER BY

Die ORDER BY-Klausel ist eine Sortierpotion. Es wird angegeben nach welcher Spalte sortiert wird und ob die Sortierung auf- oder absteigend gemacht werden soll.

Die ORDER BY-Klausel bietet die Möglichkeit nach mehreren Kriterien zu sortieren. Die Auflistung erfolgt durch ein Trennzeichen (Komma).

FOR UPDATE OF

Die FOR UPDATE OF-Klausel sperrt Teile einer Datenbank um Deadlocks zwischen zwei Anwendern bei Funktionen wie UPDATE oder DELETE zu vermeiden. Diese Klausel ist kompatibel mit DB2.

UNION

Die Option UNION erlaubt die Verknüpfung von zwei oder mehreren SELECT-Anweisungen zu einer Ergebnistabelle. Es darf UNION aber nur dann verwendet werden, wenn alle verknüpften SELECTS die gleiche Anzahl von Spalten liefern.

3.2 DML (Structured Query Language - Data Manipulation Language)

Sinn der DML ist es, den Inhalt von bestehenden Datenbanken oder Tabellen zu verändern bzw. u aktualisieren. Die Sprache besteht aus vier Statement-Typen die die Aufgabe haben, die vorhandenen Daten zu aktualisieren, eingeben, löschen oder ausgeben: SELECT, INSERT, UPDATE, DELETE.

Das SELECT-Statement dient als Ausgabe von Zeilen und Spalten aus eine oder mehreren Tabellen. Dies wird von jemand anders detaliert erklärt. Daher nur die Systax:

Syntax: SELECT

FROM Liste von Spalten

WHERE Listen von Tabellen

[GROUP BY Liste von Spalten]

[HAVING Gruppierungsbedingungen]

[ORDER BY Liste von Spalten für die Sortierung]

Das INSERT-Statement hat die Aufgabe, Zeilen in bestehende Tabellen einzufügen.

Syntax: INSERT INTO Tabelle (Spaltenliste)

VALUES (Variable)

Das UPDATE-Statement aktualisiert die Daten von Feldern in einer Tabelle.

Syntax: UPDATE Tabelle

SET Spaltenname = Ausdruck

WHERE Auswahlbedingungen

Das DELETE-Statement löscht eine oder mehrere Zeilen in einer Tabelle.

Syntax: DELETE FROM Tabelle

WHERE Auswahlbedingungen

3.3 DDL ( Data Definition Language)

Mit folgenden Befehlen können Tabellen erschaffen, verändert oder gelöscht werden.

Data Definition Commands:

ALTER TABLE (verändern einer Tabelle)

CREATE INDEX (erschaffen eines Index)

CREATE TABLE (erschaffen einer Tabelle)

CREATE VIEW (erschaffen eines View's)

DROP (Löschen)

Zuerst müssen aber einige "Spezialausdrücke" erklärt werden:

Definitionen:

"Primary Key": verbindet verschiedene Tabellen logisch miteinander. Ein Foreign Key bezieht sich auf den Primary Key in einer anderen Tabelle. Es müssen jedoch folgende Regeln eingehalten werden:

-) Ein Foreign Key muss die gleiche Anzahl von Spalten haben wie der Primary Key

-) Eine Spalte kann sowohl zum Foreign als auch zum Primary Key gehören

-) Eine Tabelle kann eine beliebige Anzahl von Foreign Keys haben

-) Ein Foreign Key kann nicht mehr als 16 Spalten haben

-) Ein Foreign Key kann sich nicht auf einen View beziehen

"Parent-, Child-Table: Die Tabelle die den Primary Key beinhaltet nennt man Parent-Table, die mit dem Foreign Key Child-Table.

"View": Ein View ist eine Alternative, Daten die in einer oder mehreren Tabellen vorhanden sind, darzustellen. Es können sowohl alle oder auch nur Teildaten dargestellt werden. Im Unterschied zu Tabellen werden bei Views nur die Definitionen gespeichert, aber nicht die verwendeten Daten.

"Index": Ein Index ist ein geordneter Satz von Pointern auf die Daten einer Tabelle, aber separat gespeichert. Ein Index optimiert Datenrückholungen, da diese gefunden werden ohne die ganze Tabelle zu durchsuchen.

CREATE TABLE:

Dieser Befehl erschafft eine Tabelle, die maximal 253 Spalten haben darf.

Parameter:

Table name: Name der zu erschaffenden Tabelle

column name Name(n) der zugehörigen Spalte(n)

data types folgende Datentypen sind möglich:

Char (Länge) Varchar (Länge)

Decimal (Vorkomma, Nachkomma) Float

Integer Long Varchar

Number Smallint

Date Datetime

Time Timestamp

Primary Key: Angabe des Primärschlüssels

Foreign Key: Fremdschlüssel (spezielle Regeln siehe Alter table)

references: Angabe der Parent-Table

Not NULL: Null-Einträge werden verboten

Not Null with default: erlaubt anderen Eintrag als Ersatz für Null

IN database: Name der Datenbank

CREATE VIEW:

Dieser Befehl erstellt ein "View" für eine oder mehrere Tabellen.

Parameter:

View name: Name des Views

Column name: Name der Tabellen

Select: Definiert den View. Ein View zeigt die Zeilen die ein Select-Befehl liefert.

With Check Option: überprüft ob veränderte Zeilen der View-Definition entsprechen.

CREATE INDEX:

Dieser Befehl erstellt einen Index für eine oder mehrere Spalten einer Tabelle.

Parameter:

index name: Name des Indexes

ON table name: Name der Tabelle

Column name: Namen der Spalten

UNIQUE: garantiert dass Schlüsselwerte eindeutig sind

CLUSTERED HASHED: dieser Parameter speichert die Datenzeilen an einer Stelle, die auf dem Key Hash Value basiert. Dadurch können Daten mit dem clustered hashed index normalerweise beim erstenmal gefunden werden, was einen Geschwindigkeitsvorteil bringt.

ASC oder DESC: ob der Index aufsteigend oder absteigend sortiert ist.

ALTER TABLE:

Dieser Befehl erlaubt folgende Funktionen:

hinzufügen, Löschen oder modifizieren einer Spalte

umbenennen einer Spalte oder Tabelle

DROP (Löschen von DB-Komponenten oder DB):

DROP DATABASE:

Mit diesem Befehl wird das gesamte Database-Directory physikalisch gelöscht, inklusive aller verbundenen Transaction Log Files vom Server. Ist die Database gerade aktiv oder wird von anderen Benutzern gerade benützt, ist das Löschen nicht möglich.

DROP DBAREA:

Dieser Befehl löscht eine ganze Datenbankarea, nur wenn kein von ihr verwendeter Dateispeicher gerade verwendet wird.

DROP TABLE:

Bei Ausführung dieses Befehls wird eine bestimmte Tabelle aus der Datenbank gelöscht. Außerdem werden alle Verbindungen und Indexes mitgelöscht. Löschen einer Tabelle ist nicht das gleiche wie das Löschen aller ihrer Zeilen. Denn beim droppen werden auch Verbindungen gelöscht.

DROP VIEW:

löscht einen speziellen View aus der Datenbank. Befehle die sich auf gedroppte View's beziehen werden nicht automatisch mitgelöscht.

1376 Worte in "deutsch"  als "hilfreich"  bewertet