Datenmodellierung ´1. Eine Miniwelt ist abzugrenzen, welche in der Datenbank abgebildet werden soll !) Miniwelt nicht zu weit fassen -small but succsesfull- !) Klare Kriterien festlegen *) Real
Semantisches Modellieren Ich modelliere die Semantik der Miniwelt in einer anderen Sprache nach. -Übertragen von Information von der Miniwelt in ein ER Diagram Semantisches Modellieren soll Hardwar
TCP/IP Allgemeines Protokolle sind die Regeln für den Nachrichtenaustaus­ch. Aufgaben eines Protokolls: · die Adressierung der Partner · die Fehlererkennung · die Fehlerbehebung · die Datenflußk
• Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis
Swap homeworks and notes at no charge!
Gratis scripts for students and pupils!
Daten Deklaration
SYNTAX:
Name type[CONSTANT][NOT NULL][:=value];
PL/SQL-Datentypen
Scalare DT
Numerisch
Character
Raw
Date
Vowid
Boolean
Zusammengesetzte
DT
Record
Table
Numerisch
NUMBER(p,s)..wie DB-Typ
P..precission, Anzahl der Ziffer, max 38
S..scale, Nachkommastellen
Für integer und float
BINARY-INTEGER..4Byte
Für schnelle Berechnungen im Programm
(Schleifenzähler)
Character
VARCHAR2(L)..char-String variabler Länge
CHAR(L)..char-String fixer Länge, blank padded
LONG..wie VARCHAR2
Raw
RAW(L)..wie char, jedoch für binäre Daten, keine Konvertierung
zw. Char-Sets
LONGRAW(L)..wie Long aber für Binäre Daten
Gegenüberstellung PL/SQL Datentypen und Database DT
date
DATE..Datum/Zeit 7Byte
Century/year/month/day/hour/minute/second
Funktionen: TO_DATE
TO_CHAR
Rowid
ROWID (DB) Pseudocolumn ROWID)
BBBBBBBB.RRRR.FFFF
eindeutige Nr innerhalb der DB
DB Block File NR
Reihe im block
0000001E.00FF.0001
30 Block, 255 Reihe, in File 1
Boolean
BOOLEAN..kann Werte TRUE,FALSE,NULL annehmen
Verwendung von %TYPE
var_name table.column%TYPE[:=value]
abt_nr_v abteilung.abt_nr%TYPE:=30
nimmt Datentyp von abt_nr aus Tabelle abteilung an.
• Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis
Swap homeworks and notes at no charge!
Gratis scripts for students and pupils!
Implizit character u. number
character u date
Ausdrücke und Operatoren
Zuweisung:
var_name:=expression;
Operatoren:
**,Not Exponent,Negation
+,- unär
*,/
+,-,|| string concatenation
=, !=, <,>,<=,>=
IS NULL, LIKE
BETWEEN, IN
AND
OR
Kontroll-Strukturen
IF-THEN-ELSE
IF condition THEN
Statements;
[ELSIF condition THEN
statements;]
[ELSE
statements;]
END IF;
LOOP’s
LOOP
Statements
[EXIT [WHEN condition];]
END LOOP
WHILE condition LOOP
Statements;
END LOOP;
FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP
Statement
END LOOP
FOR Z IN 1..10 LOOP
Implizit deklariert
Kommentar
-- Kommentarzeile
Records
TYPE record_type IS Record (
Field1 type 1 [NOT NULL][:=value],
Field2 type 2 [NOT NULL][:=value],
..
Fieldn type n[NOT NULL][:=value]);
Recorddeklaration:
Record_name record_type;
Zugriff:
Recordname.field_name;
%ROWTYPE
recordname tablename%ROWTYPE;
Struktur der Tabelle wird übernommen
Verwendung von SQL in PL/SQL
SELECT select_list INTO PL/SQL.data FROM ..
DECLARE
Mitarbeiter_rec mitarbeiter%ROWTYPE;
BEGIN
SELECT * INTO mitarbeiter_rec FROM mitarbeiter
WHERE m_nr=1;
SELECT v_name,n_name INTO mitarbeiter_rec.v_name ..........
• Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis
Swap homeworks and notes at no charge!
Gratis scripts for students and pupils!
Aufnahme Station
Station
zuordnung
Patient(P_NR,Name)
Warteliste(P_NR,E_datum,E_grund)
Aufnahme(Nr, P_NR,E_datum,E_grund,st_bez)
Station(st_bez,betten_anz)
Stationszuordnung(st_bez,e_grund)
SQL innerhalb von PL/SQL Blöcken
SQL-Statements:
DML: Select, Insert, Update, Delete
DDL: Create, Drop, Alter, Grant, Revoke
DCL: Transaction Control TC: Commit, Rollback,
Savepoint
Session Control: Alter Session, Set Role ..
System Control: Alter System, ..
Embedded SQL: OCI Oracle Call Interface
In PL/SQL sind nur DML und TC Statements erlaubt.
Grund: Early binding von
Objketen zur Compile Zeit
Identifizierung des Speicherplatzes
Überprüfung der Zugriffsrechte
BEGIN
Create Table my_tab(..)
END;
Create Table ist nicht erlaubt in PL/SQL da sich die
Zugriffsrecht ändern können und ein Create nicht mehr erlaubt sein kann.
DML und TC sind die einzigen die die Zugriffsrechte auf
Datenbankobjekte nicht veränden.
DML – Statements
..
WHERE – Klausel
<<Blockname>> -- wenn erwünscht
DECLARE
department CHAR(3);
BEGIN
v_department:=‛cs‛;
DELETE FROM dept WHERE department = bockname.department;
END;
Character - Vergleich
Arten:1 blank padded
‚abc‛=‛abc‛
‚abc ‚=‛abc‛ -- bei non blank padded nicht
so
Blank padded wird verendet wenn beide Operanden fixed lenght
sind: CHAR
Non blank padded: Wenn einer oder beide variable length sind:
VARCHAR2
• Click on download to get complete and readable text • This is a free of charge document sharing network • First upload your own document, and you get a word document per email • No registration necessary, gratis
Swap homeworks and notes at no charge!
Gratis scripts for students and pupils!
Department .. VARCHAR2(3)
DECLARE
V_dept CHAR(3)
BEGIN
DELETE FROM dept WHERE department=v_Dept;
END;
Bei unterschiedlichem Datentyp wird nichts gelöscht.
Transaction Control
Zusammenfassung von SQL Statements die entweder alle
Vollständig oder gar nicht ausgeführt werden.
TA beginnt mit dem 1. Statement nach einem COMMIT (od.
Rollback) oder nach CONNECT TO DB.
COMMIT..Änderungen in Tabellen fixieren.
LOCKS aufheben.
ROLLBACK..Alle Änderungen bis zum letzten COMMIT rückgängig
machen.
SAVEPOINT name..
ROLLBACK TO SAVEPOINT name
Autocommit – option: COMMIT nach jedem SQL – Statement.
Transaktion u. PL/SQL – Block
Block ist kein TA – Beginn
INSERT INTO tab Values (..)
BEGIN
DELETE FROM tab..
ROLLBACK; macht auch INSERT rückgängig
END;
CURSOR
Select ..INTO..
Wenn Abfrage nur 1 Reihe als Ergebnis liefert
Cursortechnik, wenn Abfrage mehrere Reihen liefert
Bei Abarbeitung eines SQL Statements wird von der Datenbank
Speicherplatz allokiert (Context Area) Sie enthält geparstes(überprüftes) SQL
Statement. Und nach Ausführung der Abfrage (OPEN) die Ergebnisse.
Cursor ist ein Zeiger auf Ergebnisreihen (nach open auf
1.Reihe)