SQL Les 11 16 February 2019.

Slides:



Advertisements
Verwante presentaties
Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Advertisements

Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
MySQL-acties Klassikaal: Wijnen.sql. 1.Toon alle wijnen die er zijn. Toon de naam, kleur en prijs. SELECT `naam`,`kleur`,`prijs` FROM `wijnen`
Practica Computerlinguistiek Tekst en uitleg:
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
Inhoud Kenmerken ODBC HTML & PHP Inlogfunctie. Inhoud Kenmerken ODBC HTML & PHP Inlogfunctie.
VBA en VBS Een introductie.
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Hoofdstuk 6: Controle structuren
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Relationele databases: Fysiek databaseontwerp en SQL
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Workshop PHP Een productencatalogus Met database.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
Inleiding in de statistiek voor de gedragswetenschappen
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
Deltion College Engels B2 Lezen [Edu/003] thema: Topical News Lessons: The Onestop Magazine can-do: kan artikelen en rapporten begrijpen die gaan over.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
1 July SQL Les July Agenda Herhaling Herhaling Stored Procedures Stored Procedures Oefeningen Oefeningen User Defined Functions User.
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
2 August SQL Les August Agenda Herhaling Herhaling Cursors Cursors MS SQL Server and MS Excel MS SQL Server and MS Excel Oefeningen.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 3 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Week 3 BIMAIV03 Les B3 BIMAIV03 Les B3. Opdracht 1 Van een artikel mogen maximaal 300 stuks verkocht worden. Verschillende klanten bestellen een aantal.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 6 BIMAIV03 les B1. DML en DDL ata D anipulation M anguage L ata D efinition D anguage L.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
1 KPN Mobiel – Introductie Repository Object Browser & Designer 10 Designer 10g & Repository Object Browser Maandag 28 februari 2005 Lucas Jellema (AMIS)
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
SQL Performance Analyzer Inschatten performance impact van wijzigingen Bram van der Vos
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
LPI 1.05 Marcel Nijenhof. Agenda ● Customize and use the shell environment ● Customize or write simple scripts ● SQL data management.
PPGM Voor databeheerders Johan Van Rensbergen 09/08/2016.
DBS22 - Recap PL/SQL Wilrik R1_4.44
Robby de Robot. Javascript Tot nu toe gebruikt: – document.write(" Hello World "); – alert("tekst") – Toon een waarschuwingsvenster – prompt("tekst",
– Software development fundamentals
SQL Cursus deel
Key Process Indicator Sonja de Bruin
Programmeren met Reeksen
Performance Tuning SSIS packages
LauwersCollege Buitenpost Informatica
Moving objects in a geo-DBMS
Software Development fundamentals
Software Development fundamentals
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
Database connect formulieren 1 februari 2016.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
Software Development fundamentals
Transcript van de presentatie:

SQL Les 11 16 February 2019

Agenda Views Oefeningen Stored Procedures User Defined Functions Herhaling Views Oefeningen Stored Procedures User Defined Functions Triggers 16 February 2019

Herhaling DML SELECT - statement SINGLE ROW FUNCTIONS JOIN OUTER JOIN INNER JOIN SELF JOIN GROUP FUNCTIONS SUBQUERIES 16 February 2019

Herhaling DDL CREATE ALTER DROP TABLE 16 February 2019

Herhaling DML TRANSACTIONS INSERT UPDATE DELETE BEGIN TRAN COMMIT ROLLBACK 16 February 2019

Openstaande vraag 1 OUTPUT parameter Kan het aanmaken van de tabel definitie vermeden worden? JA Voorbeeld in de les: 16 February 2019

Openstaande vraag 1 OUTPUT parameter Via temporary table select * into #afd_ins from afd where 1 = 0 INSERT afd OUTPUT INSERTED.* INTO #afd_ins SELECT ANR+100, naam from afd SELECT * FROM #afd_ins go 16 February 2019

Openstaande vraag 2 Bijhouden van historiek van statements uitgevoerd in SQL Server 2008 SQL Profiler Externe tools SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC 16 February 2019

Openstaande vraag 3 Beheer van schijfruimte binnen SQL Server 16 February 2019

View Er zijn 2 soorten “tabellen”: Bevat geen data! = venster Fysieke tabellen VIEWS = Logische tabellen gebaseerd op een andere tabel of een andere view. (Derived tables) Bevat geen data! = venster In de databank opgeslaan als een SELECT-statement

View (2) Wanneer te gebruiken? Beperken van de toegang tot een databank Gebruikers toelaten eenvoudige selecties uit te voeren op resulaten bekomen uit ingewikkelde selecties Ophalen van gegevens uit meerdere tabellen Restrict updates of inserts tot bepaalde ranges

View (3) Een view mag geen order by bevatten Opvragen van gegevens gebeurt op dezelfde wijze als voor een tabel ALTER VIEW : wijzigen van een view DROP VIEW : verwijderen van een view 16 februari 2019

View - DDL column_list moet gebruikt worden als: CREATE VIEW view_name [(column_list)] AS select_statement column_list moet gebruikt worden als: Een column in de view gebaseerd is op een group function Dezelfde column naam meer dan één keer voorkomt Alias geven aan een column naam kan ook De wizard in SQL Server kan ook gebruikt worden 16 February 2019

View - DDL Aanpassen van een view Verwijderen van een view ALTER VIEW ~ CREATE VIEW Verwijderen van een view DROP VIEW Ook de afhankelijke views worden verwijderd 16 February 2019

View - System tables sys.views Standard stored procedures sp_helptext Ophalen van view definitie 16 February 2019

View - DML SELECT INSERT Analoog aan SELECT voor tables Toevoegen van data aan de onderliggende tabel Missing columns krijgen waarde NULL of de DEFAULT waarde WITH CHECK OPTION Restrict de inserts aan de voorwaarde in de WHERE-clause 16 February 2019

View – DML (voorbeeld) WITH CHECK OPTION: create view VW_Afd as select * from afd where afd.anr < 100 WITH CHECK OPTION insert into VW_Afd values (110,'VERKOOP') 16 February 2019

View - DML INSERT niet mogelijk indien Column lijst met columns van meerdere tabellen Column afgeleid van een group functie De view bevat een group by of distinct statement Column afgeleid van een constante of formula 16 February 2019

View - DML UPDATE DELETE ~ INSERT met views ~ DELETE met views Column afgeleid van een constante of formula wel toegestaan 16 February 2019

Oefeningen p 299 Beginners Guide to SQL Server 2008 16 February 2019

Procedural extensions Batch Sequence van SQL Statements Verzonden naar de database om samen uitgevoerd te worden Om DDL statements van elkaar te scheiden, dient gebruik gemaakt te worden van GO Gebruik BEGIN en END om een block van statements aan te geven 16 February 2019

Procedural extensions IF Statement WHILE Statement BREAK: stopt de complete while loop CONTINUE: stopt de huidige uitvoering van de while loop 16 February 2019

Procedural extensions CASE Statement 16 February 2019

Procedural extensions Locale variabelen Kunnen enkel gebruikt worden in de huidige batch DECLARE @variable DATATYPE Geheugen reserveren Waarde toekennen SET @variable = DesiredValue OF SELECT @variable = expression FROM table @@ variabelen zijn global variables 16 February 2019

Specific statements RETURN GOTO ~ BREAK in WHILE loop Beëindigt de batch GOTO 16 February 2019

Specific statements (2) RAISERROR Genereer een user-defined error message > 50000 WAITFOR DELAY Een bepaalde periode wachten TIME Tot een bepaald tijdstip wachten TIMEOUT Wachten op een message op een queue 16 February 2019

Example WAITFOR declare @counter int set @counter = 1 while @counter <= 10 begin WAITFOR DELAY '00:01:00' print @counter print getdate() set @counter = @counter + 1 end 16 February 2019

Output Example WAITFOR 16 February 2019

Example RAISERROR EXEC sp_addmessage 50005, 10, N'Unvalid System user!'; if SYSTEM_USER = 'EMEA\SSCK2M' print 'APPROVED' else RAISERROR (50005, -- Message id. 10, -- Severity, 1 -- State ) 16 February 2019

Example GOTO (from MSDN) DECLARE @Counter int; SET @Counter = 1; WHILE @Counter < 10 BEGIN SELECT @Counter SET @Counter = @Counter + 1 IF @Counter = 4 GOTO Branch_One --Jumps to the first branch. IF @Counter = 5 GOTO Branch_Two --This will never execute. END Branch_One: SELECT 'Jumping To Branch One.' GOTO Branch_Three; --This will prevent Branch_Two from executing. Branch_Two: SELECT 'Jumping To Branch Two.' Branch_Three: SELECT 'Jumping To Branch Three.' 16 February 2019

ERROR Handling Opvangen van fouten in programma’s Generen van duidelijk error meldingen ‘Proper’ stoppen met de uitvoering van een programma Exception: Een probleem dat het uitvoeren van een programma blokkeert 16 February 2019

ERROR Handling TRY/CATCH TRY: CATCH: Opvangen van de exception Behandelen van de exception 16 February 2019

Example TRY/CATCH USE sample; BEGIN TRY END TRY BEGIN CATCH END CATCH BEGIN TRANSACTION insert into employee values(11111, 'Ann', 'Smith','d2'); insert into employee values(22222, 'Matthew', 'Jones','d4'); -- referential integrity error insert into employee values(33333, 'John', 'Barrimore', 'd2'); COMMIT TRANSACTION PRINT 'Transaction committed' END TRY BEGIN CATCH ROLLBACK PRINT 'Transaction rolled back' END CATCH 16 February 2019

Stored Procedure Batch van statements als object bewaard in de database 16 February 2019

Stored Procedure System stored procedures Temporary stored procedures Eg sp_rename Komen we later op terug Temporary stored procedures Local: start naam met # Gebruik mogelijk door: Huidige user Huidige session Global: start naam met ## Gebruik mogelijk door Alle users Tot de creator’s sessie eindigt 16 February 2019

Stored Procedure Gebruik optie OUTPUT om een return waarde te gebruiken 16 February 2019

Stored Procedure and CLR 16 February 2019

User Defined Functions Gelijkaardig aan Stored Procedures Een output parameter is verplicht 16 February 2019

User Defined Functions Twee soorten Scalar-valued Eén resultaat Table-valued Een set van rijen als resultaat 16 February 2019

TABLE Data Type Vaak gebruikt bij TABLE valued functions CREATE FUNCTION employees_in_project (@pr_number CHAR(4)) RETURNS TABLE AS RETURN (SELECT emp_fname, emp_lname FROM works_on, employee WHERE employee.emp_no = works_on.emp_no AND project_no = @pr_number) 16 February 2019

Table – Valued Functions en APPLY Vergelijkbaar met een join van tabellen CROSS APPLY: ~INNER JOIN OUTER APPLY: ~OUTER JOIN create function dbo.fn_getjob(@empid AS INT) RETURNS TABLE AS RETURN SELECT job FROM works_on WHERE emp_no = @empid AND job IS NOT NULL AND project_no = 'p1'; SELECT E.emp_no, emp_fname, emp_lname, job FROM employee as E CROSS APPLY dbo.fn_getjob(E.emp_no) AS A 16 February 2019

Oefeningen p. 242 Beginners Guide to SQL Server 2008 16 February 2019

Trigger Een opzichzelf bestaande routine afhankelijk van een bepaalde tabel of view Trigger zorgt voor het uitvoeren van een actie indien er een event gebeurt op een tabel of view 3 delen: Trigger event Trigger condition Trigger action Event kan een DML of DDL statement zijn 16 February 2019

Trigger (2) Nadelen van triggers Triggers zijn onzichtbaar voor client application Het is niet altijd makkelijk de logica te volgen (before/after) Triggers kunnen al eens vergeten worden. Zeker als er geen documentatie over bestaat Triggers lopen steeds als een DML commando op een tabel wordt uitgevoerd. Dit kan gevolgen hebben voor de performance 16 februari 2019

DML Trigger Table_name | view_name: FOR | AFTER | INSTEAD OF: Object waarop de trigger gebouwd wordt FOR | AFTER | INSTEAD OF: Wanneer moet de actie uitgevoerd worden? INSERT | UPDATE | DELETE Na welk event moet de actie gebeuren? 16 February 2019

Voorbeeld trigger Veronderstel: We hebben een tabel emp We hebben een tabel emp_audit, waarin we de operaties op emp willen bijhouden

Voorbeeld trigger (2)

Inserted and Deleted tables Twee tabellen onderhouden door het systeem Inserted: Bevat copies van de inserted rijen in de triggered tabel Deleted: Bevat copies van de deleted rijen in de triggered tabel Een UPDATE statement wordt behandeld als een DELETE gevolgd door een INSERT 16 February 2019

Toepassingen van DML triggers Audit van tabellen Implementeren van business rules Referentiële integriteit forceren Meer flexibiliteit dan de referentiële integriteit op tabel level 16 February 2019

Sequence van triggers sp_settriggerorder sp_helptrigger System stored procedure Zetten van de order van de triggers op een tabel Eerst of laatste trigger aanduiden voor een statement type (INSERT, UPDATE, DELETE, …) sp_helptrigger Tonen van eigenschappen van een trigger Niet van toepassing voor INSTEAD OF triggers 16 February 2019

DDL Triggers ALL SERVER | DATABASE: EVENT_TYPE Scope van de trigger (op een database of op de gehele server) EVENT_TYPE http://msdn.microsoft.com/en-us/library/bb522542.aspx 16 February 2019

DDL Triggers EVENT_GROUP Verschillen met DML triggers http://msdn.microsoft.com/en-us/library/bb510452.aspx Verschillen met DML triggers Geen INSERTED en DELETED tabellen Geen INSTEAD OF Scope op een database of Server en niet op een tabel of view 16 February 2019

Example DDL Trigger USE sample; GO CREATE TRIGGER prevent_drop_triggers ON DATABASE FOR DROP_TRIGGER AS PRINT 'You must disable "prevent_drop_triggers" to drop any trigger' ROLLBACK 16 February 2019

Oefeningen op Triggers p. 385 Beginners Guide to SQL Server 2008 16 February 2019

Oefeningen Muziekdatabase 16 februari 2019