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
Télécharger la présentation

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 Mglichkeiten

    2. MS SQL Server: Funktionen Funktionen sind benannte Befehlsfolgen, die einen Rckgabewert liefern Sie stellen immer eine logische Einheit dar Parameterbergabe in Form einer Parameterliste Liegen in kompilierter Form in der Datenbank ? schnellere Ausfhrung 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 Rckgabewert 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: Rckgabewert = 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 Tabellenrckgabe Komplexe Funktionen mit Tabellenrckgabe

    11. Variablen Ziel: Speichern von Werten Deklaration DECLARE @VariablenName Datentyp [, @Var2 ] Werte zuweisen SET @Var1=Ausdruck (Empfehlung!) SELECT @Var2 = Ausdruck Gltigkeit 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 Anweisungsblcke BEGIN END Bedingte Ausfhrung 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 Rcksprung 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 Tabellenrckgabe 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 Tabellenrckgabe Benutzerdefinierte Funktionen, die einen table-Wert zurckgeben, knnen leistungsfhige Alternativen zu Sichten sein. Eine benutzerdefinierte Funktion, die einen table-Wert zurckgibt, kann berall dort verwendet werden, wo Tabellen- oder Sichtausdrcke in Transact-SQL-Abfragen zulssig sind. Sichten sind auf eine einzelne SELECT-Anweisung beschrnkt, whrend benutzerdefinierte Funktionen zustzliche Anweisungen enthalten knnen, die eine leistungsfhigere Logik als Sichten ermglichen.

    41. Komplexe Funktionen mit Tabellenrckgabe 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 primre Programmierschnittstelle zwischen den Anwendungen und der SQL Server-Datenbank dar. Wenn Sie Transact-SQL-Programme verwenden, stehen Ihnen zwei Methoden zur Verfgung, um Programme zu speichern und auszufhren: Sie knnen die Programme lokal speichern und Anwendungen erstellen, die Befehle an SQL Server senden und die Ergebnisse verarbeiten, oder Sie knnen die Programme in SQL Server als gespeicherte Prozeduren speichern und Anwendungen erstellen, die diese gespeicherten Prozeduren ausfhren und die Ergebnisse verarbeiten.

    48. MS SQL Server: Stored Procedure Gespeicherte Prozeduren in SQL Server gleichen den Prozeduren in anderen Programmiersprachen bezglich der folgenden Merkmale und Fhigkeiten: Annehmen von Eingabeparametern und Zurckgeben mehrerer Werte in Form von Ausgabeparametern an die aufrufende Prozedur oder den aufrufenden Batch. Aufnehmen von Programmierungsanweisungen, die Operationen in der Datenbank ausfhren, einschlielich des Aufrufens anderer Prozeduren. Zurckgeben eines Statuswertes an eine aufrufende Prozedur oder einen aufrufenden Batch, der Erfolg oder Fehlschlagen (sowie die Ursache) anzeigt. Sie knnen die EXECUTE-Anweisung von Transact-SQL verwenden, um eine gespeicherte Prozedur auszufhren. Gespeicherte Prozeduren unterscheiden sich insofern von Funktionen, als sie keine Werte anstelle ihrer Namen zurckgeben und nicht direkt in einem Ausdruck verwendet werden knnen.

    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 gelscht werden knnen. So knnen beispielsweise die in einer Anwendung namens orders verwendeten Prozeduren mit orderproc;1, orderproc;2 usw. benannt sein. Die DROP PROCEDURE orderproc-Anweisung lscht dann die gesamte Gruppe. Wenn der Name begrenzte Bezeichner enthlt, sollte die Nummer nicht als Teil des Bezeichners eingeschlossen sein. Verwenden Sie die entsprechenden Trennzeichen nur fr procedure_name.

    51. MS SQL Server: Stored Procedure @parameter Ein Parameter in der Prozedur. Sie knnen einen oder mehrere Parameter in einer CREATE PROCEDURE-Anweisung deklarieren. Der Benutzer muss beim Ausfhren der Prozedur den Wert jedes deklarierten Parameters angeben (sofern kein Standardwert fr 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 fr Bezeichner entsprechen. Parameter gelten lokal in der jeweiligen Prozedur, d. h., dass Sie die gleichen Parameternamen in anderen Prozeduren verwenden knnen. Parameter knnen standardmig nur den Platz von Konstanten einnehmen. Sie knnen nicht anstelle von Tabellennamen, Spaltennamen oder Namen anderer Datenbankobjekte verwendet werden.

    52. MS SQL Server: Stored Procedure data_type Der Parameterdatentyp. Alle Datentypen, einschlielich text, ntext und image, knnen als Parameter einer gespeicherten Prozedur verwendet werden. Der cursor-Datentyp kann jedoch nur fr OUTPUT-Parameter verwendet werden. Bei Angabe des cursor-Datentyps mssen die Schlsselwrter VARYING und OUTPUT ebenfalls angegeben werden.

    53. MS SQL Server: Stored Procedure ; VARYING Gibt das als Ausgabeparameter untersttzte Resultset an (das dynamisch durch die gespeicherte Prozedur erstellt wird und dessen Inhalt variieren kann). Gilt nur fr cursor-Parameter. default Ein Standardwert fr den Parameter. Falls ein Standardwert definiert ist, kann die Prozedur ausgefhrt werden, ohne dass ein Wert fr 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-Schlsselwort verwendet.

    54. MS SQL Server: Stored Procedure OUTPUT Zeigt an, dass es sich bei dem Parameter um einen Rckgabeparameter handelt. Der Wert dieser Option kann an EXEC[UTE] zurckgegeben werden. Verwenden Sie OUTPUT-Parameter, um Informationen an die aufrufende Prozedur zurckzugeben. text-, ntext und image-Parameter knnen als OUTPUT-Parameter verwendet werden. Ein Ausgabeparameter, der das OUTPUT-Schlsselwort verwendet, kann ein Cursorplatzhalter sein. n Ein Platzhalter, der anzeigt, dass bis zu 2.100 Parameter angegeben werden knnen. {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION} RECOMPILE zeigt an, dass SQL Server den Plan fr 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 verschlsselt, der den Text der CREATE PROCEDURE-Anweisung enthlt. Durch die Verwendung von ENCRYPTION wird die Prozedur nicht als Teil der SQL Server-Replikation publiziert. AnmerkungWhrend einer Aktualisierung verwendet SQL Server die verschlsselten Kommentare, die in syscomments gespeichert sind, um verschlsselte Prozeduren neu zu erstellen. FOR REPLICATION Gibt an, dass fr die Replikation erstellte gespeicherte Prozeduren nicht auf dem Abonnenten ausgefhrt werden knnen. Eine gespeicherte Prozedur, die mit der Option FOR REPLICATION erstellt wurde, wird als Filter fr gespeicherte Prozeduren verwendet und nur whrend der Replikation ausgefhrt. 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 ausfhren soll. sql_statement Transact-SQL-Anweisungen beliebiger Anzahl und beliebigen Typs, die in die Prozedur eingeschlossen werden sollen. Es gelten einige Beschrnkungen. n Ein Platzhalter, der anzeigt, dass mehrere Transact-SQL-Anweisungen in diese Prozedur eingeschlossen werden knnen.

    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 mchten. Klicken Sie im Men Extras auf Assistenten. Erweitern Sie Datenbank. Doppelklicken Sie auf Assistent zur Erstellung gespeicherter Prozeduren. Fhren Sie die Schritte des Assistenten vollstndig aus.

    58. Cursor

    59. Cursor-Operationen

    60. Beispiel fr eine Prozedur Aufgabe: 1. Anfgen der Spalte PRAEMIE an die Tabelle Mitarbeiter 2. Den Mitarbeitern unterschiedliche Einstellungsjahre zuordnen (ffnen und Bearbeiten im Enterprise Manager) 3. Verteilen von Prmien anhand dieser Tabelle ANZAHLJAHRE PRAEMIE 5 5.000 10 10.000 15 15.000 Bei grsseren Datenbestnden ist diese Aufgabe sehr arbeitsintensiv, kann diese Aufgabe nicht automatisiert werden? Doch, durch eine Prozedur!

    61. Beispiel fr 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 fr 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 ausgefhrt wird, wenn ein Benutzer versucht, die angegebene Datennderungsanweisung fr die angegebene Tabelle auszufhren. Microsoft SQLServer ermglicht das Erstellen mehrerer Trigger fr 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 ausgelst wird, wenn alle Operationen, die in der den Trigger auslsenden SQL-Anweisung festgelegt sind, erfolgreich ausgefhrt wurden. Alle referenziellen CASCADE-Aktionen und Einschrnkungsberprfungen mssen ebenfalls erfolgreich ausgefhrt worden sein, bevor dieser Trigger ausgefhrt wird. AFTER ist die Standardeinstellung, wenn FOR als einziges Schlsselwort angegeben ist. AFTER-Trigger knnen fr Sichten nicht definiert werden. CREATE TRIGGER

    67. INSTEAD OF Gibt an, dass der Trigger anstelle der triggerauslsenden SQL-Anweisung ausgefhrt wird, wodurch die Aktionen der triggerauslsenden Anweisung auer Kraft gesetzt werden. Es kann nur maximal ein INSTEAD OF-Trigger pro INSERT-, UPDATE- oder DELETE-Anweisung fr eine Tabelle oder Sicht definiert werden. Es ist jedoch mglich, Sichten fr Sichten zu definieren, wobei jede Sicht ber einen eigenen INSTEAD OF-Trigger verfgt. CREATE TRIGGER

    68. INSTEAD OF-Trigger sind in aktualisierbaren Sichten, fr die WITH CHECK OPTION festgelegt ist, nicht zulssig. SQLServer lst einen Fehler aus, falls ein INSTEAD OF-Trigger zu einer aktualisierbaren Sicht hinzugefgt 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] } Schlsselwrter, die angeben, welche Datennderungsanweisungen den Trigger aktivieren, wenn sie auf diese Tabelle oder Sicht angewendet werden. Es muss mindestens eine Option angegeben werden. Die Optionen knnen in beliebiger Kombination und Reihenfolge in der Triggerdefinition angegeben werden. Wenn Sie mehrere Optionen angeben, trennen Sie diese durch Kommas. Fr INSTEAD OF-Trigger ist die Option DELETE nicht fr Tabellen mit einer referenziellen Beziehung untereinander zulssig, wenn fr ON DELETE die Option CASCADE angegeben ist. Ebenso ist die Option UPDATE nicht fr Tabellen mit einer referenziellen Beziehung untereinander zulssig, wenn fr 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