1 / 71

Datenbanksysteme am Beispiel von MICROSOFT SQL Server

MS SQL Server: Funktionen. Funktionen sind benannte Befehlsfolgen, die einen R?ckgabewert liefernSie stellen immer eine logische Einheit darParameter?bergabe in Form einer ParameterlisteLiegen in kompilierter Form in der Datenbank ? schnellere Ausf?hrung als einzelne SQL AnweisungenIn ANSI SQL

rowa
Download Presentation

Datenbanksysteme am Beispiel von MICROSOFT SQL Server

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Datenbanksysteme am Beispiel von MICROSOFT SQL Server Design, Konzepte, Applikationen und neue Möglichkeiten

    2. MS SQL Server: Funktionen Funktionen sind benannte Befehlsfolgen, die einen Rückgabewert liefern Sie stellen immer eine logische Einheit dar Parameterübergabe in Form einer Parameterliste Liegen in kompilierter Form in der Datenbank ? schnellere Ausführung als einzelne SQL Anweisungen In ANSI SQL sind lediglich die Aggregatfunktionen AVG SUM MIN MAX COUNT definiert

    3. MS SQL Server: Funktionen Drei Gruppen von Funktionen Aggregatfunktionen (siehe vorheriges Kapitel) Zusammenfassung mehrerer Werte zu einem Rückgabewert Deterministische Funktionen Skalare Funktionen Verarbeitung eines Wertes Deterministisch und Nicht deterministisch z.B. DATEDIFF deterministisch GETDATE nicht deterministisch Rowset Funktionen Tabellenverweise

    4. MS SQL Server: Allgemeine Funktionen

    5. MS SQL Server: Allgemeine Funktionen Allgemeiner Aufbau einer Funktion: Rückgabewert = Fkt ([Parameter[,Parameter]])

    6. MS SQL Server: Allgemeine Funktionen Wie rufe ich eine Funktion (fkt) auf? Select fkt(parameter1, parameter2) GO Select fkt(parameter1, parameter2) from tabelle GO Select fkt(attribut) from tabelle GO Select attribut from tabelle where attribut1=fkt(parameter1) GO Select attribut from tabelle where attribut1=fkt(attribut1) GO

    7. MS SQL Server: einige wichtige Funktionen System Funktionen IsNull(value, return_value) System_User User_Name() bzw. Current_User String Funktionen + Left(string, anzahl_char) Right(string, anzahl_char) Substr(string, start_position, anzahl_char) Upper(string) Lower(string) Date/Time Funktionen GetDate() Day(date) Month(date) Year(date)

    8. Aufgaben

    9. ??? Fragen ???

    10. MS SQL Server: Benutzerdefinierte Funktionen Ähnlich einer Standard Funktion Probleme Keine komfortable Entwicklungsumgebung Drei Typen Skalarfunktionen Inlinefunktionen mit Tabellenrückgabe Komplexe Funktionen mit Tabellenrückgabe

    11. Variablen Ziel: Speichern von Werten Deklaration DECLARE @VariablenName Datentyp [, @Var2 …] Werte zuweisen SET @Var1=Ausdruck (Empfehlung!) SELECT @Var2 = Ausdruck Gültigkeit von der Deklaration bis zum - Ende des Batches (Go) - oder Ende der Funktion/Procedur

    12. Verwendung von Variablen Select @Var1 Select @Var1, @Var2 Select @Var2=ma_vorname from mitarbeiter Select @Var2 Set @Var2=‚kein eintrag‘ Select @Var2=ma_vorname from mitarbeiter where ma_nr < 0 Select @Var2

    13. Beispiel 1 DECLARE @Var1 int, @Var2 varchar(20), @Var3 datetime set @Var1=67 set @Var2='Das ist ein Test' set @Var3='1.7.2005' select @Var1, @Var2, @Var3 select @Var3=@Var3+@Var1 select @Var1, @Var2, @Var3 Go

    14. Beispiel 1: Im Querystudio

    15. Beispiel 2 DECLARE @Var2 varchar(20) Select @Var2=ma_vorname from mitarbeiter Select @Var2 Go DECLARE @Var2 varchar(20) Set @Var2='kein eintrag' Select @Var2=ma_vorname from mitarbeiter where ma_nr < 0 Select @Var2 Go

    16. Beispiel 2: Im Querystudio

    17. Kontrollstrukturen Anweisungsblöcke BEGIN … END Bedingte Ausführung IF Ausdruck Anweisung1 [ELSE Anweisung2]

    18. Beispiele if db_name() <> 'egroiss' use egroiss Go declare @zaehler int set zaehler=0 begin set @zaehler=@zaehler+1 print @zaehler end Go

    19. ??? Fragen ???

    20. Kontrollstrukturen Schleifen WHILE Ausdruck BEGIN … … END

    21. Beispiel declare @zaehler int set @zaehler=0 while @zaehler < 10 begin set @zaehler=@zaehler+1 print @zaehler end print 'Schleife beendet' go

    22. Beispiel: Im Querystudio

    23. Kontrollstrukturen Schleifen verlassen WHILE Ausdruck BEGIN … BREAK … END

    24. Beispiel declare @zaehler int set @zaehler=0 while @zaehler < 10 begin set @zaehler=@zaehler+1 print @zaehler break end print 'Schleife beendet' go

    25. Beispiel: Im Querystudio

    26. Kontrollstrukturen Schleifen am Beginn fortsetzen WHILE Ausdruck BEGIN … CONTINUE … END

    27. Beispiel declare @zaehler int set @zaehler=0 while @zaehler < 7 begin set @zaehler=@zaehler+1 if @zaehler=5 continue else print @zaehler end print 'Schleife beendet' go

    28. Beispiel: Im Querystudio

    29. Kontrollstrukturen Rücksprung aus der Abfrage oder Prozedur RETURN [Ausdruck]

    30. Beispiel … declare @zaehler int set @zaehler=0 while @zaehler < 7 begin set @zaehler=@zaehler+1 if @zaehler=5 continue else print @zaehler end return @zaehler

    31. Skalarfunktionen Funktionen CREATE/ALTER FUNCTION funktionsname ([@Var1 datentyp [,…n]]) RETURNS datentyp BEGIN … RETURN END DROP FUNCTION funktionsname

    32. Im Enterprisemanager

    33. Aufruf von Skalarfunktionen

    34. ??? Fragen ???

    35. Aufgaben

    36. Inlinefunktionen mit Tabellenrückgabe CREATE/ALTER FUNCTION funktionsname ([@Var1 datentyp [,…n]]) RETURNS TABLE RETURN ( SQLAnweisung)

    37. Beispiel CREATE FUNCTION fktGehalt (@Var1 decimal) RETURNS TABLE RETURN ( select ma_nr, ma_vorname from mitarbeiter where ma_gehalt < @Var1)

    38. Beispiel: Im Querystudio

    39. Beispiel: Im Querystudio

    40. Komplexe Funktionen mit Tabellenrückgabe Benutzerdefinierte Funktionen, die einen table-Wert zurückgeben, können leistungsfähige Alternativen zu Sichten sein. Eine benutzerdefinierte Funktion, die einen table-Wert zurückgibt, kann überall dort verwendet werden, wo Tabellen- oder Sichtausdrücke in Transact-SQL-Abfragen zulässig sind. Sichten sind auf eine einzelne SELECT-Anweisung beschränkt, während benutzerdefinierte Funktionen zusätzliche Anweisungen enthalten können, die eine leistungsfähigere Logik als Sichten ermöglichen.

    41. Komplexe Funktionen mit Tabellenrückgabe CREATE/ALTER FUNCTION funktionsname ([@Var1 datentyp [,…n]]) RETURNS @r_var TABLE <Tabellendefinition> BEGIN … RETURN END

    42. Beispiel CREATE FUNCTION fkt_USD_Gehalt () RETURNS @MA_USD_GEHALT TABLE (ma_nachname varchar(80), Gehalt_USD money) BEGIN declare @tmptab table (var1 varchar(80), var2 money) insert @tmptab select ma_nachname,ma_gehalt/1.22 from mitarbeiter insert @MA_USD_GEHALT select var1, var2 from @tmptab RETURN END

    43. Beispiel: Im Querystudio

    44. Beispiel: Im Querystudio

    45. Aufgaben

    46. ??? Fragen ???

    47. MS SQL Server: Stored Procedure Gespeicherte Prozeduren Wenn Sie eine Anwendung mit Microsoft® SQL Server™ 2000 erstellen, stellt die Programmiersprache Transact-SQL die primäre Programmierschnittstelle zwischen den Anwendungen und der SQL Server-Datenbank dar. Wenn Sie Transact-SQL-Programme verwenden, stehen Ihnen zwei Methoden zur Verfügung, um Programme zu speichern und auszuführen: Sie können die Programme lokal speichern und Anwendungen erstellen, die Befehle an SQL Server senden und die Ergebnisse verarbeiten, oder Sie können die Programme in SQL Server als gespeicherte Prozeduren speichern und Anwendungen erstellen, die diese gespeicherten Prozeduren ausführen und die Ergebnisse verarbeiten.

    48. MS SQL Server: Stored Procedure Gespeicherte Prozeduren in SQL Server gleichen den Prozeduren in anderen Programmiersprachen bezüglich der folgenden Merkmale und Fähigkeiten: Annehmen von Eingabeparametern und Zurückgeben mehrerer Werte in Form von Ausgabeparametern an die aufrufende Prozedur oder den aufrufenden Batch. Aufnehmen von Programmierungsanweisungen, die Operationen in der Datenbank ausführen, einschließlich des Aufrufens anderer Prozeduren. Zurückgeben eines Statuswertes an eine aufrufende Prozedur oder einen aufrufenden Batch, der Erfolg oder Fehlschlagen (sowie die Ursache) anzeigt. Sie können die EXECUTE-Anweisung von Transact-SQL verwenden, um eine gespeicherte Prozedur auszuführen. Gespeicherte Prozeduren unterscheiden sich insofern von Funktionen, als sie keine Werte anstelle ihrer Namen zurückgeben und nicht direkt in einem Ausdruck verwendet werden können.

    49. MS SQL Server: Stored Procedure CREATE PROC [ EDURE ] procedure_name [ ; number ]     [ { @parameter data_type }         [ VARYING ] [ = default ] [ OUTPUT ]     ] [ ,...n ] [ WITH     { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ]

    50. MS SQL Server: Stored Procedure ;number Eine optionale ganze Zahl zum Gruppieren von Prozeduren mit dem gleichen Namen, so dass sie alle mit einer einzigen DROP PROCEDURE-Anweisung gelöscht werden können. So können beispielsweise die in einer Anwendung namens orders verwendeten Prozeduren mit orderproc;1, orderproc;2 usw. benannt sein. Die DROP PROCEDURE orderproc-Anweisung löscht dann die gesamte Gruppe. Wenn der Name begrenzte Bezeichner enthält, sollte die Nummer nicht als Teil des Bezeichners eingeschlossen sein. Verwenden Sie die entsprechenden Trennzeichen nur für procedure_name.

    51. MS SQL Server: Stored Procedure @parameter Ein Parameter in der Prozedur. Sie können einen oder mehrere Parameter in einer CREATE PROCEDURE-Anweisung deklarieren. Der Benutzer muss beim Ausführen der Prozedur den Wert jedes deklarierten Parameters angeben (sofern kein Standardwert für den entsprechenden Parameter definiert ist). Eine gespeicherte Prozedur kann maximal 2.100 Parameter haben. Geben Sie einen Parameternamen an, der mit dem Zeichen @ beginnt. Der Parametername muss den Regeln für Bezeichner entsprechen. Parameter gelten lokal in der jeweiligen Prozedur, d. h., dass Sie die gleichen Parameternamen in anderen Prozeduren verwenden können. Parameter können standardmäßig nur den Platz von Konstanten einnehmen. Sie können nicht anstelle von Tabellennamen, Spaltennamen oder Namen anderer Datenbankobjekte verwendet werden.

    52. MS SQL Server: Stored Procedure data_type Der Parameterdatentyp. Alle Datentypen, einschließlich text, ntext und image, können als Parameter einer gespeicherten Prozedur verwendet werden. Der cursor-Datentyp kann jedoch nur für OUTPUT-Parameter verwendet werden. Bei Angabe des cursor-Datentyps müssen die Schlüsselwörter VARYING und OUTPUT ebenfalls angegeben werden.

    53. MS SQL Server: Stored Procedure ; VARYING Gibt das als Ausgabeparameter unterstützte Resultset an (das dynamisch durch die gespeicherte Prozedur erstellt wird und dessen Inhalt variieren kann). Gilt nur für cursor-Parameter. default Ein Standardwert für den Parameter. Falls ein Standardwert definiert ist, kann die Prozedur ausgeführt werden, ohne dass ein Wert für den entsprechenden Parameter angegeben wird. Der Standardwert muss eine Konstante oder NULL sein. Er kann Platzhalterzeichen enthalten, falls die Prozedur den Parameter mit dem LIKE-Schlüsselwort verwendet.

    54. MS SQL Server: Stored Procedure OUTPUT Zeigt an, dass es sich bei dem Parameter um einen Rückgabeparameter handelt. Der Wert dieser Option kann an EXEC[UTE] zurückgegeben werden. Verwenden Sie OUTPUT-Parameter, um Informationen an die aufrufende Prozedur zurückzugeben. text-, ntext und image-Parameter können als OUTPUT-Parameter verwendet werden. Ein Ausgabeparameter, der das OUTPUT-Schlüsselwort verwendet, kann ein Cursorplatzhalter sein. n Ein Platzhalter, der anzeigt, dass bis zu 2.100 Parameter angegeben werden können. {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} RECOMPILE zeigt an, dass SQL Server den Plan für diese Prozedur nicht zwischenspeichert; die Prozedur wird zur Laufzeit neu kompiliert.

    55. MS SQL Server: Stored Procedure ENCRYPTION zeigt an, dass SQL Server den syscomments-Tabelleneintrag verschlüsselt, der den Text der CREATE PROCEDURE-Anweisung enthält. Durch die Verwendung von ENCRYPTION wird die Prozedur nicht als Teil der SQL Server-Replikation publiziert. Anmerkung  Während einer Aktualisierung verwendet SQL Server die verschlüsselten Kommentare, die in syscomments gespeichert sind, um verschlüsselte Prozeduren neu zu erstellen. FOR REPLICATION Gibt an, dass für die Replikation erstellte gespeicherte Prozeduren nicht auf dem Abonnenten ausgeführt werden können. Eine gespeicherte Prozedur, die mit der Option FOR REPLICATION erstellt wurde, wird als Filter für gespeicherte Prozeduren verwendet und nur während der Replikation ausgeführt. Diese Option kann nicht zusammen mit der Option WITH RECOMPILE verwendet werden.

    56. MS SQL Server: Stored Procedure AS Gibt die Aktionen an, die die Prozedur ausführen soll. sql_statement Transact-SQL-Anweisungen beliebiger Anzahl und beliebigen Typs, die in die Prozedur eingeschlossen werden sollen. Es gelten einige Beschränkungen. n Ein Platzhalter, der anzeigt, dass mehrere Transact-SQL-Anweisungen in diese Prozedur eingeschlossen werden können.

    57. MS SQL Server: Stored Procedure Erstellen einer gespeicherten Prozedur mit dem Assistenten zur Erstellung gespeicherter Prozeduren (Enterprise Manager) Erweitern Sie eine Servergruppe und dann den Server, in dem Sie die Sicht erstellen möchten. Klicken Sie im Menü Extras auf Assistenten. Erweitern Sie Datenbank. Doppelklicken Sie auf Assistent zur Erstellung gespeicherter Prozeduren. Führen Sie die Schritte des Assistenten vollständig aus.

    58. Cursor

    59. Cursor-Operationen

    60. Beispiel für eine Prozedur Aufgabe: 1. Anfügen der Spalte PRAEMIE an die Tabelle Mitarbeiter 2. Den Mitarbeitern unterschiedliche Einstellungsjahre zuordnen (Öffnen und Bearbeiten im Enterprise Manager) 3. Verteilen von Prämien anhand dieser Tabelle ANZAHLJAHRE PRAEMIE 5 5.000 10 10.000 15 15.000 Bei grösseren Datenbeständen ist diese Aufgabe sehr arbeitsintensiv, kann diese Aufgabe nicht automatisiert werden? Doch, durch eine Prozedur!

    61. Beispiel für eine Prozedur 1/2 CREATE procedure verteile_praemie as declare @praemie15 money; declare @praemie10 money; declare @praemie5 money; declare @praemie money; declare @ma_nr int,@anzahljahre int declare CUR_MITARBEITER CURSOR KEYSET FOR SELECT MA_NR,datediff(year,MA_EINTRITTSDATUM,'31.12.2005')as jahre_im_betrieb FROM MITARBEITER; set @praemie15 = 15000 set @praemie10 = 10000 set @praemie5 = 5000 open cur_mitarbeiter FETCH NEXT FROM CUR_MITARBEITER INTO @ma_nr, @anzahljahre WHILE @@FETCH_STATUS = 0 BEGIN

    62. Beispiel für eine Prozedur 2/2 if @anzahljahre >=15 set @praemie = @praemie15 else if @anzahljahre >=10 set @praemie = @praemie10 else if @anzahljahre >=5 set @praemie = @praemie5 else set @praemie = null update mitarbeiter set ma_praemie = @praemie where current of CUR_MITARBEITER FETCH NEXT FROM CUR_MITARBEITER INTO @ma_nr, @anzahljahre END CLOSE CUR_MITARBEITER DEALLOCATE CUR_MITARBEITER GO

    63. Aufgaben

    64. Datenbank - Trigger

    65. Erstellt einen Trigger, einen besonderen Typ einer gespeicherten Prozedur, der automatisch ausgeführt wird, wenn ein Benutzer versucht, die angegebene Datenänderungsanweisung für die angegebene Tabelle auszuführen. Microsoft® SQL Server™ ermöglicht das Erstellen mehrerer Trigger für eine angegebene INSERT-, UPDATE- oder DELETE-Anweisung. Syntax CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {     { { FOR | AFTER | INSTEAD OF } {[DELETE] [,] [INSERT] [,] [UPDATE] }         [WITH APPEND]         [NOT FOR REPLICATION]         AS         [ { IF UPDATE ( column )             [ { AND | OR } UPDATE ( column ) ]                 [ ...n ]         | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )                 { comparison_operator } column_bitmask [ ...n ]         } ]         sql_statement [ ...n ]     } } CREATE TRIGGER

    66. AFTER Gibt an, dass der Trigger nur dann ausgelöst wird, wenn alle Operationen, die in der den Trigger auslösenden SQL-Anweisung festgelegt sind, erfolgreich ausgeführt wurden. Alle referenziellen CASCADE-Aktionen und Einschränkungsüberprüfungen müssen ebenfalls erfolgreich ausgeführt worden sein, bevor dieser Trigger ausgeführt wird. AFTER ist die Standardeinstellung, wenn FOR als einziges Schlüsselwort angegeben ist. AFTER-Trigger können für Sichten nicht definiert werden. CREATE TRIGGER

    67. INSTEAD OF Gibt an, dass der Trigger anstelle der triggerauslösenden SQL-Anweisung ausgeführt wird, wodurch die Aktionen der triggerauslösenden Anweisung außer Kraft gesetzt werden. Es kann nur maximal ein INSTEAD OF-Trigger pro INSERT-, UPDATE- oder DELETE-Anweisung für eine Tabelle oder Sicht definiert werden. Es ist jedoch möglich, Sichten für Sichten zu definieren, wobei jede Sicht über einen eigenen INSTEAD OF-Trigger verfügt. CREATE TRIGGER

    68. INSTEAD OF-Trigger sind in aktualisierbaren Sichten, für die WITH CHECK OPTION festgelegt ist, nicht zulässig. SQL Server löst einen Fehler aus, falls ein INSTEAD OF-Trigger zu einer aktualisierbaren Sicht hinzugefügt wird, die mit WITH CHECK OPTION angegeben wurde. Der Benutzer muss die Option mithilfe von ALTER VIEW entfernen, bevor der INSTEAD OF-Trigger definiert wird. { [DELETE] [,] [INSERT] [,] [UPDATE] } Schlüsselwörter, die angeben, welche Datenänderungsanweisungen den Trigger aktivieren, wenn sie auf diese Tabelle oder Sicht angewendet werden. Es muss mindestens eine Option angegeben werden. Die Optionen können in beliebiger Kombination und Reihenfolge in der Triggerdefinition angegeben werden. Wenn Sie mehrere Optionen angeben, trennen Sie diese durch Kommas. Für INSTEAD OF-Trigger ist die Option DELETE nicht für Tabellen mit einer referenziellen Beziehung untereinander zulässig, wenn für ON DELETE die Option CASCADE angegeben ist. Ebenso ist die Option UPDATE nicht für Tabellen mit einer referenziellen Beziehung untereinander zulässig, wenn für ON UPDATE die Option CASCADE angegeben ist. CREATE TRIGGER

    69. Enterprise Manager CREATE TRIGGER

    70. Query Analyzer CREATE TRIGGER

    71. TRIGGER-Beispiel

    72. Aufgaben

More Related