Benutzer-Werkzeuge

Webseiten-Werkzeuge


se:datenbankentwicklung

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

se:datenbankentwicklung [2008-09-06 19:26]
stefan
se:datenbankentwicklung [2014-04-05 11:42]
Zeile 1: Zeile 1:
-====== Datenbankentwicklung ====== 
  
-===== Administration ===== 
- 
-===== PL/SQL (Schwerpunkt der Klausur) ===== 
-  * PL/SQL: Procedural Language extension to SQL 
-    * Bietet eine Blockstruktur für Code an 
-    * Bietet prozedurale Konstrukte an (Variablen, Kontrollstrukturen etc.) 
-    * {{:​se:​plsqlarchitektur.jpg|}} 
-    * Vorteile 
-      * Integration in Oracle Tools 
-      * Modularisierte Anwendungsentwicklung 
-      * Portabilität des PL/​SQL-Codes 
-      * Exception Handling  ​      ​  ​   ​ 
-  * PL/​SQL-Blöcke 
-    * Aufbau 
-      * DECLARE: Variablen, Cursor, eigene Exceptions ​ 
-      * **BEGIN**: SQL und PL/​SQL ​ 
-      * EXCEPTION: Fehlerbehandlung 
-      * **END** 
-    * Typen 
-      * Anonymous 
-      * Procedure 
-      * Function  ​    ​  ​ 
-    * Speicherort:​ Server oder Anwendung 
-  * Variablen 
-    * ''​[a-zA-Z][a-zA-Z0-9$_#​]{0,​29}''  ​ 
-    * Deklarierung/​Initialisierung in ''​DECLARE'',​ Zuweisung in ''​BEGIN''​ 
-    * ''​identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];''​ 
-    * String-Begrenzung:​ ''​q'​!Das ist ein Text!''' ​   ​ 
-    * Typen 
-      * Scalar: ''​CHAR,​ VARCHAR, LONG, INTEGER, BOOLEAN, DATE''​ etc. 
-      * Composite: Zusammengesetzte Variablen aus mehrere Datentypen 
-      * Reference 
-      * LOB: Fotos, Filme etc. 
-      * Nicht-PL/​SQL:​ Bind variables 
-        * Host-Variablen,​ die mit ''​VARIABLE''​ deklariert werden und mit einem führenden '':''​ referenziert werden 
-        * ''​SET AUTOPRINT ON''​ 
-      * Substitution Variables 
-        * referenziert mit führendem ''&'':​ Eingabe zur Laufzeit 
-        * ''​ACCEPT varname PROMPT '​Text'''​ 
-      * User Variable: deklariert mit ''​DEFINE'',​ referenziert mit ''&''​         ​ 
-    * ''​%TYPE''​-Attribut:​ Datentyp einer Spalte/​Variable übernehmen (''​identifier table.column_name%TYPE;''​) 
-    * Mögliche Boolean-Werte:​ ''​TRUE,​ FALSE, NULL''​ (!)         ​ 
-  * Lexikalische Einheiten 
-    * Folgen von Zeichen, Zahlen, Whitespace und Symbolen 
-    * Typen: Identifier, Delimiter, Literals, Comments     ​ 
-  * SQL-Funktionen 
-    * Nicht in PL/SQL verfügbar: ''​DECODE'',​ ''​GROUP''​-Funktionen ​   ​ 
-  * SELECT in PL/SQL 
-    * ''​INTO''​ wird benötigt 
-    * Abfragen müssen genaue eine Zeile zurückliefern 
-    * Variablenpriorität:​ Spaltennamen -> lokale Variablen/​Parameter -> Tabellennamen  ​   ​ 
-  * Cursor 
-    * Zeiger auf den privaten Speicherplatz des Oracle-Servers 
-    * Implizit: werden intern vom Oracle-Server erzeugt und verwendet (z.B. bei SQL-Statements) 
-      * Attributes: ''​SQL%FOUND'',​ ''​SQL%NOTFOUND'',​ ''​SQL%ROWCOUNT'' ​   ​ 
-    * Explizit: werden vom Programmierer definiert und verwendet  ​   
-  * Kontrollstrukturen 
-    * ''​IF THEN - ELSIF - ELSE'''  ​ 
-    * ''​CASE''​ Expression <> ''​CASE''​ Statement 
-    * Behandlung von NULL bei booleschen Operationen 
-    * Schleifen 
-      * ''​LOOP - EXIT WHEN - END LOOP''​ 
-      * ''​WHILE LOOP - END LOOP''​ 
-      * ''​FOR IN LOOP - END LOOP'' ​     ​ 
-      * Nested Loops: Labels ''<<​label_name>>''​ 
-  * Komplexe Datentypen 
-    * Records 
-      * ein oder mehrere Felder (Scalar, Record, ''​INDEX BY''​) 
-      * werden üblicherweise eingesetzt, um Tabellenzeilen zu lesen 
-      * Deklaration mit ''​TYPE''​ 
-      * einfache Definition mit ''​%ROWTYPE'''​ 
-    * Collections 
-      * ''​INDEX BY''​ tables / assoziative Arrays 
-        * 2 Spalten: Key (int/​string) / Value 
-        * dynamische Länge 
-        * Zugriff über Index ''​table(1)''​ 
-        * verfügbare Methoden: ''​EXISTS,​ COUNT, FIRST, LAST, PRIOR, NEXT, DELETE''​  ​       ​ 
-      * VARRAYs und Nested Tables 
-  * Cursors 
-    * manuelle Aktionen: ''​OPEN,​ [LOOP], FETCH, [EXIT], CLOSE''​ 
-    * ''​CURSOR FOR''​ macht alles automatisch 
-    * Attribute: ''​%ISOPEN,​ %NOTFOUND, %FOUND, %ROWCOUNT'' ​   
-    * entsprechen Pointern aus C (Referenz auf Speicherbereich) 
-    * Datentyp der Curosr-Variablen ist ''​REF CURSOR''​ 
-    * Cursor sind statisch, Cursor-Variablen sind dynamisch  ​ 
-  * Exceptions 
-    * Exceptions sind Fehler, die während der Programmausführung auftreten 
-    * Können implizit oder explizit ausgelöst werden 
-    * Behandlung: Handler oder weiterwerfen 
-    * Es sind mehrere Handler pro Block erlaubt, aber lediglich einer wird abgearbeitet. 
-    * Vorhandene Exceptions: z.B. ''​NO_DATA_FOUND,​ TOO_MANY_ROWS,​ ZERO_DIVIDE''​  ​   
-    * nicht vordefinierte Exceptions behandeln: ''​PRAGMA EXCEPTION_INIT''​ 
-    * Funktionen: ''​SQLCODE,​ SQLERRM''​ 
-    * Eigene Exceptions werfen: ''​RAISE''​ 
-    * Eigene Fehlermeldungen analog zum Oracle-Server ausgeben: ''​RAISE_APPLICATION_ERROR''​ (nur mit Nummer -20000 bis -20999)  ​   ​ 
-  * Prozeduren und Funktionen 
-    * {{:​se:​proceduresvsfunctions.jpg|}} 
-    * Subprograms,​ benannte PL/​SQL-Blöcke 
-    * {{:​se:​anonymousblockssubprograms.jpg|}} ​   ​ 
-    * Parameter 
-   * Formal <> actual Parameters 
-      * Parameter Modes: ''​IN,​ OUT, IN OUT''​ 
-      * {{:​se:​subprogramparameters.jpg|}}  ​       ​ 
-      * Passing: positional, named, combination 
-    * Kein Zugriff auf Host-Variablem ​   ​ 
-    * Gespeichert in ''​USER_SOURCE''​ oder ''​ALL_SOURCE'',​ Namen stehen in ''​USER_OBJECTS''​ 
-    * Vorteile: einfach zu verwalten, Datensicherheit und -integrität,​ bessere Performance,​ bessere Codeverständlichkeit 
-    * Funktionen können in SQL-Statements verwendet werden: ''​SELECT,​ WHERE, HAVING, ORDER BY, GROUP BY, VALUES, SET''​ 
-    * Aber nur, wenn: in der DB gespeichert,​ nur IN Parameter, nur SQL-Datentypen verwenden, Parameter positional 
-  * Packages 
-    * Gruppierung von logisch zusammengehörenden Komponenten (Typen, Cursor, Subprograms etc.) 
-    * Bestehen aus Specification (quasi das Interface, Prozeduren sind public) und Body (die Implementierung) 
-    * Änderungen an der Specification erfordert Neukompilierung aller referenzierenden Subprogramme 
-    * Vorteile: Modularisierung,​ einfachere Verwaltung, einfacheres Anwendungsdesign,​ Information Hiding, bessere Performance (Package wird komplett und nur einmal in den Speicher geladen), Overloading 
-    * Overloading:​ Beispiele im ''​STANDARD''​-Package (z.B. ''​TO_CHAR''​) 
-    * Forward Declaration:​ Spezifikation eines Subprograms mit Semikolon abgeschlossen. Wird zu Beginn eines Blocks gemacht, damit Prozeduren auf die möglicherweise weiter unten im Quelltext implementierten Prozeduren zugreifen können.  ​   ​ 
-    * Package Initialization Block: ''​BEGIN''​-Teil am Ende des package body zur Initialisierung von Variablen. 
-    * Package State 
-      * Package wird beim ersten Aufruf initialisiert und bleibt die gesamte Session über bestehen. 
-      * Eindeutig für jede Session. 
-  * Hilfspakete:​ ''​DBMS_OUTPUT,​ UTL_FILE, HTP, UTL_MAIL, DBMS_SCHEDULER''​ 
-  * Dynamic SQL 
-    * Execution Flow: parse (compile time), bind (compile time), execute, fetch 
-    * Dynamic SQL ist ein String 
-    * ''​EXECUTE IMMEDIATE .. INTO .. USING''​  ​   ​ 
-  * Triggers 
-    * PL/​SQL-Block,​ der einer Tabelle, einem View, einem Schema oder einer Datenbank zugeordnet ist 
-    * Typen: Application/​Database,​ Statement/​Row Trigger 
-    * Timing: ''​BEFORE,​ AFTER, INSTEAD OF''​ 
-    * Trigger Events: ''​INSERT,​ UPDATE [OF], DELETE''​ 
-    * Row Trigger: ''​FOR EACH ROW, :NEW, :​OLD''​ 
-    * {{:​se:​triggersvsprocedures.jpg|}}   ​ 
- 
-===== Web ===== 
- 
-===== Modellierung ===== 
- 
-===== ToDo ===== 
-  * Unterschiede Host- (auch Bind-/​Global-),​ User-, Substitution-Variablen 
se/datenbankentwicklung.txt · Zuletzt geändert: 2014-04-05 11:42 (Externe Bearbeitung)