Guido Geurts Mark Bernaerts
|
|
|
- Mathilda Michiels
- 7 jaren geleden
- Aantal bezoeken:
Transcriptie
1
2 Inhoud. OPVRAGEN VAN GEGEVENS UIT DE DATABANK...6 BASIS SQL QUERY BLOK...7 Syntax SELECT - statement:...7 Selectie van alle kolommen uit een tabel...8 Selecteren van bepaalde kolommen...8 Bewerkingen uitvoeren op kolommen...8 Wijzigen van de kolomnamen...10 Samenvoegen van kolommen...10 Beperken van dubbele rijen in de resultaatset...11 Sorteren van kolommen...12 Rijen beperken met de WHERE- clausule...14 Vergelijkings operatoren Logische vergelijkingsoperatoren : Sql operatoren : Logische operatoren : Negatie logische operatoren :...15 Negatie SQL operatoren Enkele voorbeelden op de WHERE - optie...15 Toepassen van meerder criteria...17 SINGLE ROW FUNCTIONS...19 GEBRUIK VAN SINGLE ROW FUNCTIONS...20 Eigenschappen van functies...20 Syntax van een Single Row Function...20 Algemeen overzicht van beschikbare functies...20 Karakter functies (character functions) Numerieke functies (number functions) Datum functies (date functions) WEERGEVEN VAN GEGEVENS UIT MEERDERE TABELLEN...23 WAT IS EEN JOIN?...24 Soorten join-methoden...24 Cartesiaans product...24 Simple Join Query...25 Equijoin Tabel Alias Non - Equijoin Outer join Self join GROUP FUNCTIONS (GROEP FUNKTIES)...31 ALGEMEEN OVERZICHT VAN DE GROEP FUNKTIES...32 Funkties...32 GROUP BY - optie...34 Ongeldige sql's bij gebruik van groep-functies...36 HAVING - optie...38 SUBQUERIES...40 Vormingscentrum Tongeren 2
3 SUBQUERIES...41 CREATE TABLE...43 ALGEMEEN...44 DATATYPES...45 VOORBEELDEN :...46 Voorbeeld 1 : Create table...46 Voorbeeld 2 : Create table, met not null constraint...48 Voorbeeld 3 : Create table, met not null -en primary key - constraint,...48 Voorbeeld 4 : Create table, check - constraint,...49 Voorbeeld 5 : Create table, default - constraint,...49 Voorbeeld 6 : Create table, foreign-key - constraint,...50 Voorbeeld 7 : Create table, unique - constraint,...50 ALTER TABLE...51 Voorbeeld 1: ALTER TABLE, toevoegen van een bepaalde constraint...51 Voorbeeld 2: ALTER TABLE, toevoegen van een kolom...52 Voorbeeld 3: ALTER TABLE, verwijderen van een constraint...52 DROP TABLE...53 INDEXEN...54 ALGEMEEN...54 WANNEER?...54 CREATE INDEX...55 VERWIJDEREN VAN EEN INDEX...55 BIJLAGE 1 : STRUCTUUR VAN DE TABELLEN HET MEDEWERKERS BESTAND : MDW HET AFDELINGS BESTAND : AFD HET CURSUSSEN BESTAND : CRS HET UITVOERINGS BESTAND : UITV HET INSCHRIJVINGS BESTAND : INSCHR...56 BIJLAGE 2 : INHOUD VAN DE TABELLEN...58 TABEL MEDEWERKERS : MDW...58 TABEL AFDELING : AFD...58 TABEL CURSUSSEN : CRS...59 TABEL UITVOERINGEN : UITV...59 TABEL INSCHRIJVINGEN : INSCHR...60 UNIEKE VOLGNUMMERS...61 ALGEMEEN...62 CREATIE VAN EEN SEQUENCE...63 GEBRUIK VAN EEN SEQUENCE...63 VERWIJDEREN VAN EEN SEQUENCE...64 VIEWS...65 ALGEMEEN...66 WAT IS EEN VIEW...66 CREATIE VAN EEN VIEW...66 Oracle...66 Interbase...67 OPVRAGEN VAN GEGEVENS...67 UITVOEREN VAN DML - STATEMENTS OP EEN VIEW...67 CHECK OPTION...68 VERWIJDEREN VAN EEN VIEW...69 Vormingscentrum Tongeren 3
4 TRIGGERS...70 ALGEMEEN...71 CREATIE VAN EEN TRIGGER...71 Oracle :...71 Interbase :...72 Voorbeeld van een trigger :...72 VERWIJDEREN VAN TRIGGER...73 OEFENINGEN HOOFDSTUK 1 : SELECT...73 OEFENINGEN HOOFDSTUK 3 : JOINS...84 OEFENINGEN HOOFDSTUK 4 : GROUP FUNCTIONS...91 OEFENINGEN HOOFDSTUK 5 : SUB QUERIES...94 Vormingscentrum Tongeren 4
5 Overzicht van de cursus De cursus is bedoeld als inleiding tot SQL. De SQL-instructies besproken in deze cursus zijn in hoofdzaak ANSI-SQL instrukties. Indien hiervan afgeweken wordt, zal het uitdrukkelijk vermeld worden. De cursus wordt opgedeeld in een aantal afzonderlijke lessen, waarbij er bij elke les een reeks van oefeningen is voorzien. In de bijlagen van deze cursus staan de gebruikte tabellen samen met hun inhoud afgebeeld, teneinde een gemeenschappijk resultaat te bekomen bij de oefeningen. Onderaan volgt een overzicht van de lessen die in deze cursus gegeven worden. Overzicht : Les 1 : Opvragen van gegevens uit de databank Les 2 : Single row funkties Les 3 : Weergevens van gegevens uit meerdere tabellen Les 4 : Group functies Les 5: Subqueries Les 6 : Create table Gebruik van basis SQL (Structured Query Language) voor het ophalen van gegevens uit een databank Gebruik van functies om bepaalde inhoud (gegevens uit de tabel) te manipuleren Opvragen van gegevens uit verschillende tabellen door gebruik te maken van een aantal methoden. Uitvoeren van bepaalde zoals gemidelde bereken, en het groeperen van gegevens Geavanceerde select-statement Het maken van een tabel met behulp van SQL Vormingscentrum Tongeren 5
6 1 Opvragen van gegevens uit de databank Doelstellingen: Opvragen van gegevens uit de databank. Eventueel met bepaalde beperking op aantal rijen en kolommen die weergegeven worden. Op het einde van de les moet men in staat zijn om : Een select-statement schrijven om de databank te ondervragen Bewerkingen uitvoeren Een kolom van naam veranderen Kolommen samenvoegen Rijen sorteren met ORDER BY Zoekcriteria invoeren met behulp van de WHERE clausule Vormingscentrum Tongeren 6
7 Basis SQL query blok Een SELECT wordt gebruikt om gegevens uit de databank te halen. Syntax SELECT - statement: SELECT [DISTINCT] {*, KOLOM [ALIAS], } FROM TABEL [WHERE CONDITIE(S)] [ORDER BY {KOLOM, UITDRUKKING} [ASC DESC]] Verklaring syntax: SELECT DISTINCT selekteer alle kolommen ALIAS FROM TABEL WHERE CONDITIE ORDER BY kolommen ASC DESC lijst van kolommen (ten minste één) enkel unieke rijen worden werrgegeven, geen duplicaten geeft de kolom een andere naam geeft de tabel(len) aan die de kolom(men) bevat beperkt het aantal rijen tot het aantal die aan de voorwaarde voldoen voorwaarde bepaald de sorteervolgorde van de geselecteerde sortering van de kolom is in stijgende orde sortering van de kolom is in dalende orde In zijn meest eenvoudige vorm bestaat een SELECT-statement uit: select clausule, dewelke de kolommen bepaald from clausule dewelke de tabel bepaald Vormingscentrum Tongeren 7
8 Selectie van alle kolommen uit een tabel Voorbeeld : Selecteer alle gegevens uit de tabel medewerkers (MDW) select * from mdw Selecteren van bepaalde kolommen. Het is mogelijk om slechts een deel van de kolommen van een tabel weer te geven door deze kolommen op te sommen in de select clausule. De kolommen moeten gescheiden worden door een comma. Voorbeeld : Selecteer naam, functie en geboortedatum uit de tabel van medewerkers select naam,functie,gbdatum from mdw Bewerkingen uitvoeren op kolommen In bepaalde omstandigheden is het wenselijk de manier waarop de gegevens worden weergeven te wijzigen, bewerkingen op uit te voeren of 'What-if' -scenario's te bekijken. Dit wordt mogelijk gemaakt door wiskundige uitdrukkingen Overzicht van de mogelijke bewerkingen : Operator Beschrijving + som - verschil * vermenigvuldiging / deling () haakjes om voorrangsregels toe te passen Vormingscentrum Tongeren 8
9 Wiskundige operatoren mogen gebruikt worden in eender welke SQL-clausule, behalve in de "FROM" clausule. Voorbeeld : Voorbeeld : Selecteer naam, jaarsalaris uit de tabel van de medewerkers select naam,maandsal * 12 from mdw Opmerking : Let op dat het veld 'maandsal * 12 ' nu als kolomnaam voorkomt. Selecteer naam, jaarsalaris uit de tabel van de medewerkers. Bij het jaarsalaris van elk moet een vast bedrag van 100 begevoegd worden. select naam,(maandsal * 12) from mdw Vormingscentrum Tongeren 9
10 Wijzigen van de kolomnamen Wanneer de resultaten van een bepaalde query afgebeeld worden, staat er een kolomnaam boven. Wanneer er nu wiskundige uitdrukkingen in staan kan dit tot gevolg hebben dat deze kolomnaam zeer lang wordt en /of weinig tot geen betekenis heeft. Zie resultaat van bovenstaand voorbeeld. De wiskundige uitdrukking verschijnt hier als kolomnaam. Door gebruik te maken van een alias is het mogelijk om een kolomnaam een naam te geven. Voorbeeld : Selecteer naam, functie en geboortedatum uit de tabel van medewerkers Selecteer naam, jaarsalaris uit de tabel van de medewerkers. Bij het jaarsalaris van elk moet een vast bedrag van 100 begevoegd worden. select naam,(maandsal * 12) as jaar_salaris from mdw Het resultaat is nu dat de kolom die het totale jaar salaris berekent, niet meer de naam 'maandsal*12+100' heeft, maar wel 'jaar_salaris' Samenvoegen van kolommen Het select - statement biedt eveneens de mogelijkheid om twee of meerder kolommen met elkaar samen te voegen met behulp van de concatinatie-operator (11). Op sommige databanken kan dit ook gewoon het + - teken zijn. Voorbeeld : Selecteer naam en functie van medewerkers select naam functie from mdw Vormingscentrum Tongeren 10
11 Het resultaat zal zal dat de inhoud van beide kolommen tegen elkaar geplakt wordt. Om de leesbaarheid te bevorderen kan er gebruik gemaakt worden van een bepaald leesteken, bijvoorbeeld een comma. Het select-statement ziet er dan als volgt uit : select naam ', ' functie from mdw Het toegevoegde teken of tekenreeks moet steeds tussen enkele aanhalingstekens staan. Beperken van dubbele rijen in de resultaatset. Tenzij het anderzijds gespecifieerd wordt, zal een SQL-statement steeds alle rijen weergeven die aan de gestelde voorwaarden voldoen. Voorbeeld : select functie from mdw Dit geeft het volgende resultaat: TRAINER VERKOPER VERKOPER MANAGER VERKOPER MANAGER MANAGER TRAINER DIRECTEUR VERKOPER TRAINER BOEKHOUDER TRAINER BOEKHOUDER Vormingscentrum Tongeren 11
12 Merk op dat in het resultaat meerdere keren een bepaalde functie voorkomt. Om dit probleem op te lossen kan er gebruik gemaakt worden van het DISTINCT - keyword, waarbij alle rijen die meerdere keren voorkopmen slect één keer zullen voorkomen in het resultaat. Wanneer men alle unieke functies uit de tabel van de medewerkers wenst te weten dan wordt de query als volgt : select distinct functie from mdw Resultaat : BOEKHOUDER DIRECTEUR MANAGER TRAINER VERKOPER Opmerking : 1. Het woord DISTINCT moet direct volgen op het woord SELECT 2. Wanneer DISTINCT gebruikt wordt heeft dit gevolg voor ALLE kolommen uit het select-statement Sorteren van kolommen De volgorde waarin de query de rijen weergeeft is niet gedefinieerd. De ORDER BY - clausule kan hier gebruikt worden om de rijen te sorteren. Indien de ORDER BY gebruikt wordt, moet deze altijd als laatste lijn in de SQL staan. De default -waarde voor de ORDER BY is Ascending (stijgend) Voorbeeld : Selecteer naam, functie en maandsal uit de tabel medewerkers en sorteer volgens naam. Vormingscentrum Tongeren 12
13 select naam,functie..,maandsal from mdw order by naam In bovenstaand voorbeeld wordt er een kolomnaam gebruikt omaan te geven op welke kolom er moet worden gesorteerd. Wanneer er voor een bepaalde kolom een alias gebruikt werd, dan mag ook deze alies gebruikt worden in de ORDER BY. Let wel: Indien er een bewerking uitgevoerd wordt op een bepaalde kolom zoals in onderstaande voorbeeld, zonder gebruikt te maken van een alias, dan kan er geen kolomnaam gebruikt worden om de sortering aan te geven. In dit geval moet er gebruikt gemaakt worden van een kolomnummer. Voorbeeld : select naam,functie..,maandsal * 12 from mdw order by 3 Dit sorteert de resultaatset volgens de derde kolom Vormingscentrum Tongeren 13
14 Rijen beperken met de WHERE- clausule Het aantel rijen wat een query teruggeeft kan beperkt worden door gebruikt te maken van de WHERE- optie op te nemen in de sql. Met andere woorden, er zullen enkel rijen weergegeven worden die voldoen aan de gestelde voorwaarde in de WHERE-optie Indien de WHERE -optie gebruikt wordt moet die direct volgen op de FROM - clausule. Vergelijkings operatoren. Logische vergelijkingsoperatoren : Operator Beschrijving = Gelijk aan > Groter dan >= Groter dan of gelijk aan < Kleiner dan <= Kleiner dan of gelijk aan Sql operatoren : Operator Between and In Like Is null Beschrijving Tussen twee waarden (inclusief) lijst Volgens een bepaald patroon Heeft een null-waarde Logische operatoren : Operator AND OR NOT Beschrijving Als beide voorwaarden waar zijn, dan is het resultaat ook waar Als een van beide voorwaarden voldaan is, dan is het resultaat ook waar Geeft de tegengestelde conditie Vormingscentrum Tongeren 14
15 Negatie logische operatoren : Operator Beschrijving!= Niet gelijk aan <> Niet gelijk aan NOT kolomnaam = Niet gelijk aan NOT kolomnaam > Niet groter dan Negatie SQL operatoren Operator Beschrijving NOT BETWEEN AND Niet tussen twee waarden NOT IN Niet in de lijst NOT LIKE Niet volgens een bepaald patroon IS NOT NULL Heeft geen null-waarde Opmerking : Wanneer een kolom t.o.v een NULL waarde moet vergeleken worden, gebruik dan steeds IS (NOT) NULL. Volgende instructie "= NULL" geeft steeds een foutief of beter een onwaar resultaat. Enkele voorbeelden op de WHERE - optie Select Naam,functie from mdw where naam = 'Smit'; Deze query geeft geen resultaat terug, omdat 'Smit' in de tabel :medewerkers met hoofdletters ingevuld staat, met andere woorden, er is dus vershil tussen hoofdletters en kleine letters. Selecteer iedereen die geboren is tussen 1950 en 1960 uit de tabel medewerkers. Hiervoor wordt de 'BETWEEN' operator gebruikt omdat er een bepaald bereik aangegeven wordt tussen een minimum en een maximum waarde. Select Naam,functie from mdw where gbdatum between '01/01/1950' and '01/01/1960' Vormingscentrum Tongeren 15
16 Selecteer de mensen uit afdeling 10 en 30 uit de tabel medewerkers. In dit geval kan het best een IN - operator gebruikt worden omdat het gaat over een set (een vooraf aantal gekende mogelijkheden) Select Naam,functie from mdw where afd in (10, 30) In bepaalde omstandigheden moet er gezocht worden naar een gegeven of een groep van gegvens waarvan de juiste inhoud niet op voorhand geweten is. Bijvoorbeeld je weet dat een bepaalde persoon 'JANSEN' noemt, maar bent niet zeker van de schrijfwijze. Om dit probleem op te lossen wordt er gebruik gemaakt van de LIKEoperator. Select Naam,functie from mdw where naam like 'JAN%' De SQL zal de tabel van de medewerkers gaan aflopen en zoeken naar alle namen die beginnen met 'JAN'. Hetzelfde kan worden toegepast indien alle namen gegevens moeten worden waar de letter 'A' in voorkomt. Select Naam,functie from mdw where naam like '%A%' Vormingscentrum Tongeren 16
17 De 'IS NULL' - operator wordt dan weer gebruikt voor het controleren op velden binnen een tabel die geen waarde hebben of beter waar er geen inhoud beschikbaar is. Aangezien er geen inhoud is kan de '=' - operator niet gebruikt worden omdat de NULL - waarde noch gelijk noch niet-gelijk is aan eender welke waarde. Volgende voorbeeld geeft de juiste syntax voor het opvragen van de zogenaamde NULL-velden uit een tabel. Select Naam,functie from mdw where comm is null Toepassen van meerder criteria In veel gevallen is het niet mogelijk om enkel met de 'WHERE' de gevraagde gegevens op te vragen uit de tabel. Vandaar dat er nog een tweetal andere opties zijn die in samen met de 'WHERE' kunnen gebruikt worden om complexere zoekopdrachten te kunnen uitvoeren. Deze twee opties zijn 'AND' en 'OR'. Voorbeeld : Selecteer naam, funtie en afdeling uit de medewerkerstabel waar de afdeling = 30 en het salaris kleiner is dan Select Naam,functie,afd from mdw where afd = 30 and maandsal < 1500 Vormingscentrum Tongeren 17
18 Let op, dit is totaal iets anders dan de volgende query : Select Naam,functie,afd from mdw where afd = 30 or maandsal < 1500 Vormingscentrum Tongeren 18
19 2 Single row functions Doelstellingen: Verklaren en het leren gebruiken van de verschillende types van functies die er beschikbaar zijn in SQL. Op het einde van de les moet men in staat zijn om : De verschillende typen van functies te verklaren Bepalen wanneer functies te gebruiken Functies toepassen in Select-statements Verklaren van omvormingsfuncties en hoe ze te gebruiken Vormingscentrum Tongeren 19
20 Gebruik van Single Row Functions Single row functions worden gebruikt om gegevens te bewerken. De functies hebben één of meerdere parameters en geven voor elke rij in de query een resultaat. Eigenschappen van functies Ze zijn van toepassing op elke rij van de query Ze geven een resultaat per rij Ze kunnen een waarde teruggeven die van een ander type is dan het type van de gerefereerde kolom Er kunnen éénof meerdere argumenten meegegeven worden Functies kunnen gebruikt worden in de SELECT, WHERE en ORDER BY optie. Syntax van een Single Row Function function_name (column expression, [arg1, arg2, ]) Verklaring syntax: FUNCTION_NAME COLUMN EXPRESSION ARG1, ARG2 naam van de functie naam van de kolom uit een tabel een bepaalde string of wijskundige uitdrukking argumenten Algemeen overzicht van beschikbare functies. 1. Karater functies (character function) 2. Numerieke functies (number functions) 3. Datum functies (date functions) 4. Omvormingsfuncties (Conversion functions) Vormingscentrum Tongeren 20
21 Opmerking : Het aantal functies en of de syntax ervan kan verschillen van databank tot databank. Vandaar dat er in de besprekingen verderop de meest gangbare functies besproken zullen worden. Het is aan de gebruiker van een databank om zich te verdiepen in de specifieke functies ervan. Karakter functies (character functions) Deze functies hebben als input een gegeven van het type karater en geven het resultaat terug in de vorm van een numeriek of een karater-type. Overzicht Operator lower upper initcap (bij ORACLE) concat (bij ORACLE) substr(column(m[,n]) (bij ORACLE) substring (column,from m, for n) (bij INTERBASE) length (column) (bij ORACLE) Beschrijving Zet alle karaters om in kleine letter zet alle karaters om in hoofdletters zet de eerste letter om in een hoofdletter de rest in kleine letters (voeg twee waarden samen) geeft een deel van de karaterstring-string terug Geeft het aantal karaters in de waarde Voorbeeld : Selecteer select from mdw lower(naam) Vormingscentrum Tongeren 21
22 Numerieke functies (number functions) Deze functies hebben als input een numeriek gegevenen geven tevens een numeriek resultaat. Overzicht Operator round(column expression[, n]) (bij ORACLE) trunc(column expression[, n]) (bij ORACLE) mod(m, n) Beschrijving Afronden van een getal tot op n-decimalen Afronden van een getal geeft de modulus van beide getallen Datum functies (date functions) Aangezien een databank een datum gaat opslaan als een getal is het mogelijk om hierop een reeks van bewerkingen te doen Overzicht Bewerking Resultaat Omschrijving datum + nummer datum Telt een aantal (nummer) dagen bij een datum (datum) datum - nummer datum Vermindert de datum met een aantal dagen (nummer) datum - datum aantal dagen Maakt het verschil tussen twee data en geeft het resultaat terug als het aantal dagen verschil tussen beiden datum + nummer/24 datum telt een aantal uren bij een bepaalde datum Voorbeeld : select from mdw gbdatum + 10 Vormingscentrum Tongeren 22
23 3 Weergeven van gegevens uit meerdere tabellen Doelstellingen: Het opvragen van gegevens uit meer dan één tabel, gebruikt makend van een aantal methoden. Op het einde van de les moet men in staat zijn om : Een select - statement schrijven om gegevens uit meer dan één tabel te gaan lezen outer-joins maken een tabel verbinden aan zichzelf Vormingscentrum Tongeren 23
24 Wat is een join?. Een join wordt gebruikt om gegevens uit meer dan één tabel te ondervragen. Hierbij worden rijen van verschillende tabellen samengevoegd op basis van gemeenschappelijke gegevens, meestal sleutelvelden. Soorten join-methoden 1 Equijoins 2 Non-equijoins 3 Outer joins 4 Self joins Cartesiaans product Een cartesiaans product is het gevolg van een slecht gemaakte join (verbinding), of een join die volledig werd weggelaten. In zo'n situatie worden alle combinaties van de rijen van beide tabellen weergeven. m.a.w Alle rijen van de eerste tabel worden verbonden met alle rijen van de tweede tabel. Voorbeeld : select naam,functie from mdw,afd Dit geeft als resultaat dat er 56 rijen worden weergegeven. (14 *4 = 56) Vormingscentrum Tongeren 24
25 Simple Join Query Om gegevens uit twee of meerdere tabellen weer te geven is het voldoende om een 'simple join' te schrijven in de WHERE-optie van de SQL. Syntax : select tabel.kolom, tabel.kolom, from tabel1, tabel2 where tabel1.kolom1 = tabel2.kolom Verklaring syntax : tabel.kolom: geeft de naam van de tabel en de kolom vanwaar de gegevens moeten gelezen worden tabel1.kolom = tabel2.kolom: is de voorwaarde die de verbinding (join) tussen beide tabellen maakt. Enkele richtlijnen: Wanneer een select-statement geschreven wordt, laat dan de kolomnaam voorafgaan door de naam van de tabel. Dit komt de overzichtelijkheid en duidelijkheid ten goede. Indien eenzelfde kolomnaam voorkomt in beide tabellen, dan moet de kolomnaam voorafgegaan worden door de naam van de tabel. Het aantal condities om te verbinden s in de meeste gevallen afhankelijk van het aantal tabellen die verbonden worden. Stel dat je twee tabellen gaat verbinden, dan is er minsten één WHEREoptie nodig om dit te doen. Idem voor wanneer er drie tabellen verbonden worden, dan zijn er twee voorwaarden nodig. Dit is geldig zolang het niet gaat om een samengestelde sleutel, want dan zijn er meerdere voorwaarden nodig. Vormingscentrum Tongeren 25
26 Equijoin De equijoin is een verbinding tussen tabellen die worden verbonden op basis van dezelfde waarden (niet noodzakelijk dezelfde kolomnaam). Voorbeeld: Ik wil weten in welke afdeling de medewerkers tewerkgesteld zijn. select mdw.naam,afd.naam from mdw,afd where mdw.afd = afd.anr Resultaat : SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK CLERCKX SCHOTTEN DE KONING DEN DRAAIER ADAMS JANSEN SPIJKER MOLENAAR OPLEIDINGEN VERKOOP VERKOOP OPLEIDINGEN VERKOOP VERKOOP HOOFDKANTOOR OPLEIDINGEN HOOFDKANTOOR VERKOOP OPLEIDINGEN VERKOOP OPLEIDINGEN HOOFDKANTOOR Ook hier kunnen er meerder voorwaarden gesteld worden. select mdw.naam,afd.naam from mdw,afd where mdw.afd = afd.anr and afd.naam = 'VERKOOP' Vormingscentrum Tongeren 26
27 geeft als resultaat : ALDERS DE WAARD MARTENS BLAAK DEN DRAAIER JANSEN VERKOOP VERKOOP VERKOOP VERKOOP VERKOOP VERKOOP Tabel Alias Net als bij de kolom-alias kan er ook aan een tabel een alias gegevens worden. Dit is zeer praktisch in het geval dat de tabelnaam nogal lang is. Eenmaal dat een alias gemaakt is, moet die verderop in het SQL-statement gebruikt worden. Voorbeeld: Ik wil weten in welke afdeling de medewerkers tewerkgesteld zijn. select m.naam,a.naam from mdw m,afd a where m.afd = a.anr Vormingscentrum Tongeren 27
28 Non - Equijoin Een 'non-equijoin' verbinding tussen twee tabellen doet zich voor als er uit tabel1 geen enkele kolom een gelijke waarde heeft in een kolom van tabel2. Er moet dus een relatie gelegt worden niet op basis van '='. Outer join Indien een bepaalde rij niet voldoet aan de gestelde eisen, dan heeft dit tot gevolg dat deze rij niet zal verschijnen in de resultaat. Voorbeeld : select u.begindatum,c.omschrijving,m.naam from crs c,uitv u,mdw m where u.cursus = c.code and u.docent = m.mnr order by 1 Wanneer dit uitgevoerd wordt krijgen we het volgende resultaat. 16/04/90 Introductie SQL en SQL*plus SPIJKER 10/08/90 ORACLE voor Applicatiegebruikers JANSEN 8/10/90 Introductie SQL en SQL*plus SMIT 17/12/90 Applicatiebouw met SQL*Forms JANSEN 17/12/90 Introductie SQL en SQL*plus SMIT 4/02/91 Bouwen met SQL*ReportWriter SMIT 5/02/91 Applicatiebouw met SQL*Forms ADAMS 11/09/91 Bouwen met SQL*Menu SCHOTTEN 27/09/91 ORACLE voor Applicatiegebruikers SPIJKER 24/02/92 Relationeel Systeemontwerp SCHOTTEN Vormingscentrum Tongeren 28
29 In de tabel 'uitv' zijn er nog cursussen die geen docent hebben. Deze worden worden terecht niet weergegeven in het resultaat. Stel dat ik toch de cursussen wil zien, ook al is er nog geen docent voor. Dan kan dit gebeuren door het leggen van een 'outer-join'. Opmerking : Het angeen van een outer-join' kan verschillen van databank tot databank. Het onderstaande voorbeeld is van toepassing op een ORACLE-databank Hier wordt er "(+)" toegevoegd aan het veld, waarvan er geen waarden beschikbaar zijn. select u.begindatum,c.omschrijving,m.naam from crs c,uitv u,mdw m where u.cursus = c.code and u.docent(+) = m.mnr order by 1 Self join De laatste in de rij is de 'self-join'. Een self-join is het verbinden van een bepaalde tabel aan zichzelf, waarbij er gebruik gemaakt wordt van een tabel - alias, zodoende te simuleren dat er twee tabellen zijn. Dit laat toe om rijen van een tabel te verbinden met rijen binnen deze zelfde tabel. Vormingscentrum Tongeren 29
30 Voorbeeld : Geef mij de naam van de medewerker en de naam van zijn chef. Om dit op te lossen moeten we werken binnen dezelfde tabel aangezien een chef ook opgenomen is in de tabel van de medewerkers select werk.naam as werknemer,chef.naam as chef from mdw werk,mdw chef where werk.chef = chef.mnr Resultaat : werknemer SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK CLERCKX SCHOTTEN DEN DRAAIER ADAMS JANSEN SPIJKER MOLENAAR chef SPIJKER BLAAK BLAAK DE KONING BLAAK DE KONING DE KONING JANSEN BLAAK SCHOTTEN BLAAK JANSEN CLERCKX Vormingscentrum Tongeren 30
31 4 Group functions (Groep funkties) Doelstellingen: De nadruk wordt nu geplaatst op het ondervragen van allerhande informatie zoals het bepalen van gemiddelden, minimum en maximum Op het einde van de les moet men in staat zijn om : Herkennen van groep funkties Toepassing van groep funkties GROUP BY toepassen HAVING toepassen Vormingscentrum Tongeren 31
32 Algemeen overzicht van de groep funkties In tegenstelling to 'singel row functions' zijn group funkties aktief op een aantal rijen en geven dus een resultaat per groep. Groep functies komen voor in zowel de SELECT als de HAVING -opties. Funkties AVG (gemiddelde) COUNT (aantal) MAX (maximum) MIN (minimum) SUM (som) Opmerking : Bij sommige databanken zijn er meerdere functies ter beschikking. Controleer de handleiding van de gebruikte databank voor de functies die er ter beschikking zijn. Voorbeeld : Selecteer de eerste en de laaste naam (volgens alfabet) uit de tabel medewerkers select min(naam),max(naam) from mdw Resultaat : ADAMS SPIJKER Vormingscentrum Tongeren 32
33 Voorbeeld : Geeft het gemiddelde, maximum, minimum en de som van alle slaraissen uit de tabel medewerkers select avg(maandsal), max(maandsal), min(maandsal),sum(maandsal) from mdw COUNT : De count funktie heeft twee formaten: count(*) en count(uitdrukking). Count(*) geeft het aantal rijen van een tabel, inclusief de dubbels en de rijen met null-waarden. Voorbeeld : select count(*) from mdw Resultaat : 14 Voorbeeld : select count(comm) from mdw Resultaat : 4 (geeft enkel het aantal kolommen waarcomm niet NULL is) Vormingscentrum Tongeren 33
34 GROUP BY - optie Deze clausule wordt gebruikt om de rijen in een tabel op te splitsen in kleinere groepen, en vervolgens kan hierop een group-funktie toegepast worden om samanvattende informatie te bepalen. Syntax : SELECT COLOMN, GROUP_FUNCTION FROM TABLE [WHERE CONDITION] [GROUP BY GROUP_BY_expression] [ORDER BY COLUMN] Voorbeeld : select chef,count(*) as aantal from mdw group by chef Resultaat : Vormingscentrum Tongeren 34
35 Opmerking : In de group - by clausule worden de functie count(*) niet opgegeven, in tegenstelling tot de kolom 'chef'. Wanneer er groep-functies gebruikt worden, moeten deze niet opgenomen worden in het select-statement. Indien er in de select wel kolommen moeten weergegeven worden, waar er geen groep-functie op wordt toegepast, dan moet die kolom worden opgenomen in de 'group-by' optie. 'zie kolom chef'. Voorbeeld : Geef de verschillende functies en het totale salaris binnen elke functie. select functie,sum(maandsal) as bedrag from mdw group by functie Resultaat : BOEKHOUDER 2.100,00 DIRECTEUR 5.000,00 MANAGER 8.275,00 TRAINER 7.900,00 VERKOPER 5.600,00 Vormingscentrum Tongeren 35
36 Ongeldige sql's bij gebruik van groep-functies Wanneer er in een select-statement een group-functie gebruikt wordt, moet er een group-by optie opgenomen worden. In deze group-by optie moeten de kolommen staan waar er geen groeo-functie op toegepast is. Tracht hetvolgende voorbeeld uit te voeren : select chef,count(functie) from mdw Dit geeft steeds een foutmelding. De beschrijving van de foutmelding zal in functie zijn van de databank waarmee gewerkt wordt, maar het zal er op neer komen dat er een GROUP-BY clausule nodig is. Oplossing : select chef,count(functie) from mdw group by chef Voorbeeld : Geef de functie en het gemiddelde maandsalaris van de verschillende medewerkers waarvan het geimddelde maandsalaris groter is dan Indien je volgende sql uitvoert geeft dit een foutlmelding Vormingscentrum Tongeren 36
37 select functie,avg(maandsal) from mdw where avg(maandsal) > 2000 group by functie De WHERE-optie kan dus niet gebruikt worden om groupen te beperken. Om bovenstaand probleem opte lossen moet er gebruik gemaakt wordn van de HAVING-optie. (zie verderop in de cursus) select functie,avg(maandsal) from mdw group by functie having avg(maandsal) > 2000 Vormingscentrum Tongeren 37
38 HAVING - optie De HAVING-optie wordt gebruikt voor het beperken van groepen, zoals de WHERE - optie gebruikt wordt om rijen te beperken. m.a.w Enkel rijen die voldoen aan de 'having' - voorwaarde zullen worden weergegeven in het resultaat. (cfr where) Voorbeeld : Geef de functie en het gemiddelde maandsalaris van de verschillende medewerkers waarvan het geimddelde maandsalaris groter is dan 1500 en waarvan de functie niet directeur is. select functie,avg(maandsal) from mdw where functie!= 'DIRECTEUR' group by functie having avg(maandsal) > 1500 Resultaat : MANAGER 2.758,33 TRAINER 1.975,00 In onderstaand voorbeeld zijn er geen groep-functies opgenomen in de select lijst, maar toch zijn er 'group by' en 'having' clausules opgenomen. In die geval is er een functie opgenomen in de 'having' -clausule, zodat er ook een 'group by ' - clausule moet opgenomen worden. Voorbeeld : Vormingscentrum Tongeren 38
39 Geef de naam en de functie van alle medewerkers die minder dan 1000 maandsal hebben. select naam,functie from mdw group by naam, functie having min(maandsal) < 1000 Resultaat : JANSEN SMIT BOEKHOUDER TRAINER Vormingscentrum Tongeren 39
40 5 Subqueries Doelstellingen: Geavanceerde mogelijkheden van de 'SELECT' onderzoeken. Op het einde van de les moet men in staat zijn om : Schrijven van geneste queries om gegevens gaan op te vragen gebaseerd op onbekende criteria gebruik van subqueries gegevens sorteren met behulp van subqueries Vormingscentrum Tongeren 40
41 Subqueries Een subquery is een SELECT welke deel uitmaakt van een clausule van een ander SELECT - statement. Subqueries worden vooral gebruikt voor het schrijven van een select-statement om gegevens te gaan opvragen op basis van condities die vooraf niet gekend zijn. Syntax : SELECT FROM WHERE SELECT_LIST TABLE EXPR. OPERATOR (SELECT SELECT_LIST FROM TABLE) Andere namen voor dit soort van query zijn o.a. : nested-select; sub-select; inner select. Een subquerie gaat steeds uitvoeren van binnen naar buiten. De querie in het diepste niveau wordt als eerste uitgevoerd. De output van deze query wordt als input (voorwaarden voor de conditie) gebruikt voor de volgende query enz Enkele richtlijnen : Zet een subquery steeds tussen ronde haken Plaats de subquery na de vergelijkingsoperator Plaats nooit en order by in een subquery. Er is slecht één ORDER BY geldig per volledig SQL-statement, en moet dus bezet worden in de buitenste select. Vormingscentrum Tongeren 41
42 Voorbeeld : Geef de naam en het maandsalaris van alle werknemers uit de tabel medewerkers die dezelfde functie hebben als MARTENS select naam,maandsal from mdw where functie = (select functie from mdw where naam = 'MARTENS') Resultaat : ALDERS 1.600,00 DE WAARD 1.250,00 MARTENS 1.250,00 DEN DRAAIER 1.500,00 Opmerking : Indien de subquery meer dan één rij teruggeeft als resultaat, dan moet de IN-operator gebruikt worden in plaats van '=' - operator. Vormingscentrum Tongeren 42
43 6 Create table Doelstellingen: Creatie van tabellen Op het einde van de les moet men in staat zijn om : Een tabel te maken Leggen van bepaalde constraints Maken van indexen Vormingscentrum Tongeren 43
44 Algemeen Een tabel wordt gemaakt door het uitvoeren van het CREATE TABLE instructie. Dit is slecht één van de vele data defenition language (DDL) instructies. DDL instructies zijn een subset van de SQL commando's, die gebruikt worden om een tabel te maken, te wijzigen of te verwijderen. Indien deze instructies uitgevoerd worden zijn ze onmiddelijk geldig, met andere woorden ze kunnen niet ongedaan gemaakt worden door een 'rollback' uit te voeren. Dit in tegenstelling tot DML (Data Manipulation Language) die wel ongedaan gemaakt kunnen worden door een 'rollback' uit te voeren. Om een CREATE TABLE uit te voeren moet de gebruiker hier de nodige rechten voor hebben. Deze rechten dienen gegeven te worden door de databank beheerder (DBA : Database Administrator). Syntax : CREATE TABLE [schema.]table ( column datatype [column constraint], [table_constraint) schema table column datatype column_constraint table_constraint Een schema is een verzameling van objecten. Schema - objecten zijn logische structuren die rechtstreeks refereren naar data in de tabellen. Voorbeelden van schema objecten zijn tabellen, views, sequences, stored procedures, indxen naam van de tabel naam van de kolom is het datatype van de kolom samen met de lengte (indien nodig). Voorbeeld een datumveld heeft geen lengte. een integriteitsvoorwaarde die van toepassing is op de kolom. Een voorbeld hiervan kan zijn dat een kolom geen NULL-waarde mag bevatten (denk aan de sleutel) een integriteitsvoorwaarde die van toepassing is op de gehele tabel. Enkele richtlijnen in verband met naamgeving : - Tabel - en kolomnamen moeten beginnen met een letter - Namen mogen niet dubbel voorkomen - Namen mogen geen gereserveerde namen zijn van de databank. Vormingscentrum Tongeren 44
45 Datatypes Datatype zijn sterk afhankelijk van de gebruikte databank. Voor de specificaties van all beschikbare datatypen van een bepaalde databank wordt verwezen naar de handleiding van de database in kwestie. Onderaan volgen enkel voorbeelden van datatypen van verschillende databanken: databank datatype beschrijving oracle varchar2(size) Alphanumerisch veld met variabele lengte char(size) Alphanumerisch veld met vaste langte (maximaal 255 karakters) number(p,s) Numerisch veld date datum veld long veld van variabele lengte (tot 2GB voor versie 7) raw; long raw veld gebruikt voor het opslaan van binaire data (vb foto's) interbase BLOB Binary Large Object CHAR(n) n characters 1 to bytes DATE DECIMAL Numerisch veld (precision, scale) DOUBLE PRECISION NUMERIC SMALLINT VARCHAR Vormingscentrum Tongeren 45
46 Voorbeelden : Voorbeeld 1 : Create table Maak een tabel met volgende gegevens: Naam : Project Velden : projectnummer, projectomschrijving en budget Voor Interbase : CREATE TABLE project ( projectnummer numeric(6),projectomschrijving varchar(50),budget numeric(6)) Voor Oracle : CREATE TABLE project ( projectnummer number(6),projectomschrijving varchar2(50),budget number(6)) Voor Paradox : CREATE TABLE project ( projectnummer numeric(6),projectomschrijving char(50),budget numeric(6)) Wanneer deze instructie doorgegeven wordt aan de databank zal er een tabel gemaakt worden. Door het opvragen van de meta-data (beschrijving van tabellen en dergelijke, zie verder) kan er gecontroleerd worden of de creatie van de tabel goed is verlopen. SHOW TABLE project PROJECTNUMMER PROJECTOMSCHRIJVING BUGET INTEGER Nullable VARCHAR(50) Nullable INTEGER Nullable Vormingscentrum Tongeren 46
47 Bij het opvragen van deze gegevens valt op dat de databank bijkomende regels (constraints ) heeft gespecifieerd. nl. 'Nullable' of met andere woorden: De inhoud van de velden mag NULL worden. Om te vermijden dat steeds alle velden de inhoud NULL mogen hebben, moeten er afwel bij creatie van de tabel ofwel nadien constraints gezet worden op de betreffende kolommen. Constraint: Een constraint kan gezien worden als een regel waaraan de gegevens moeten voldoen voor ze opgenomen worden in de tabel. Onderstaande tabel geeft een overzicht van een aantal mogelijke constraints die kunnen geplaatst worden op een tabel. Constraint Omschrijving NOT NULL De gegevens in deze kolom mogen NIET NULL zijn, met andere woorden er moet een gegevens in komen. UNIQUE Legt op dat de kolom of combinatie van kolommen ukiek moeten zijn CHECK Geeft bepaalde condities ( voorwaarden ) aan waaraan gegevens moeten voldoen voor ze opgenomen worden in de tabel. PRIMARY KEY FOREIGN KEY Geeft het unieke deel aan Maakt de relatie tussen twee tabellen. ( Referentiele integriteit ) Vormingscentrum Tongeren 47
48 Voorbeeld 2 : Create table, met not null constraint Maak een tabel met volgende gegevens: Naam : Project Velden : projectnummer, projectomschrijving en budget. Het veld projectnummer mag niet null zijn. Voor Interbase : CREATE TABLE project ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6)) De tabel project bevat nu de regel dat het veld projectnummer in geen enkel geval de inhoud NULL mag krijgen. Voorbeeld 3 : Create table, met not null -en primary key - constraint, Maak een tabel met volgende gegevens: Naam : Project Velden : projectnummer, projectomschrijving en budget. Het veld projectnummer mag niet null zijn en moet sleutelveld zijn. Opmerking : Wanneer er een bepaald veld als sleutelveld, of als deel van de sleutel aangegeven wordt, dan moet dit NOT NULL zijn. Voor Interbase : CREATE TABLE project ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6),primary key (projectnummer)) De tabel project bevat nu de regel dat het veld projectnummer in geen enkel geval de inhoud NULL mag krijgen. En het veld projectnummer is sleutel, wat inhoud dat dit veld uniek moet zijn van inhoud. Vormingscentrum Tongeren 48
49 Voorbeeld 4 : Create table, check - constraint, Maak een tabel met volgende gegevens: Naam : Project Velden : projectnummer, projectomschrijving en budget. Er moet een regel zijn die dat het budget niet groter mag worden dan Om deze regel af te dwingen wordt er gebruik gemaakt van een CHECK - constraint. Opmerking: Door gebruik te maken van check-constraints gebeurt de validatie van gegevens op de databank, en niet meer in het programma zelf. Voor Interbase : CREATE TABLE project ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6) CHECK(BUDGET<=1000) ) Voorbeeld 5 : Create table, default - constraint, Maak een tabel met volgende gegevens: Naam : Project Velden : projectnummer, projectomschrijving en budget. Er moet een regel gemaakt worden die zegt dat er bij elke rij die toegevoegd wordt in de tabel, het veld 'BUDGET' de waarde 0 moet krijgen. Om deze regel af te dwingen wordt er gebruik gemaakt van een DEFAULT - constraint. Voor Interbase : CREATE TABLE project ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6) DEFAULT 0) Vormingscentrum Tongeren 49
50 Voorbeeld 6 : Create table, foreign-key - constraint, Een foreign key -constraint kan pas geplaatst worden tussen twee tabellen, op velden van hetzelfde type. Deze regel controleert dat de elementen eerst moeten voorkomen in de gerefereerde tabel (in dit geval tabel project6) vervolgens in de tabel waarop de foreign-constraint gezet is (tabel projectmedewerker). Creatie van de tabellen : CREATE TABLE project6 ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6),primary key (projectnummer)) CREATE TABLE projectmedewerker ( projectnummer numeric(6) NOT NULL,medewerkernummer numeric(6) NOT NULL,uren numeric(6), primary key (projectnummer, medewerkernummer), foreign key (projectnummer) references project6(projectnummer)) Voorbeeld 7 : Create table, unique - constraint, Als laatste behandelen we nog de UNIQUE- constraint. De unique - constraint kan geplaatst worden op kolommen die uniek moeten zijn indien ze niet tot de sleutel behoren. Stel dat we in de projecttabel de regel zouden opleggen dat elk budget uniek moet zijn. Voor Interbase : CREATE TABLE project7 ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6) NOT NULL UNIQUE) Ook hier weer opletten op het feit dat wanneer er een UNIQUE - constraint gezet wordt op een bepaalde kolom, dat deze kolom ook de NOT-NULL - constraint moet hebben. Vormingscentrum Tongeren 50
51 Alter Table In de praktijk is het niet ondenkbaar dat er na een bepaalde tijd uitbreidingen moeten gedaan worden op een bepaalde tabel. Niet alleen uitbreidingen van velden, maar ook wijzigingen van bepaalde kolommen binnen een bepaalde tabel zijn mogelijk. Denk maar aan het aanpassen van een bepaalde check-constraint enz.. Al deze wijzigingen worden gedaan met behulp van het ALTER TABLE - commando. Hier geldt ook weer het feit dat het ALTER TABLE commando sterk afhankelijk is van de gebruikte database. Enkele voorbeelden: Voorbeeld 1: ALTER TABLE, toevoegen van een bepaalde constraint Voor Interbase : CREATE TABLE project8 ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6)) Deze CREATE TABLE maakt de tabel project8 aan, zonder constraints. Met behulp van de ALTER TABLE kunnen nu de ontbrekende constraints gezet worden. ALTER TABLE project8 ADD CONSTRAINT PK_PNBR PRIMARY KEY(projectnummer) Op een gelijkaardige manier kunnen constraints terug weggenomen worden. ALTER TABLE project8 DROP CONSTRAINT PK_PNBR Vormingscentrum Tongeren 51
52 Voorbeeld 2: ALTER TABLE, toevoegen van een kolom Voor de bestaande tabel project, moet er om een bepaalde reden een kolom toegevoegd worden. Dit kan gedaan worden met een ALTER TABLE. Voor Interbase : CREATE TABLE project8 ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6)) ALTER TABLE project8 ADD begindatum date Deze laaste instructie zorgt ervoor dat de tabel project8 eenextra veld krijgt namelijk het veld begindatum. Naast het toevoegen en of veranderen van bepaalde constraints is het ook mogelijk om constraints te verwijderen. Ook hier moet de opmerking gemaakt worden dat de mogelijkheden afhangen van de gebruikte databank. Zo is het in Interbase mogelijk om rechtstreeks een kolom te verwijderen uit een tabel, wat dan in Oracle niet mogelijk is. Ook hier wordt verwezen naar de handleiding voor de specificaties van het ALTER TABEL commando. Voorbeeld 3: ALTER TABLE, verwijderen van een constraint Stel dater op tabel project8, veld budget een check gezet wordt die bepaald dat het budget nooit groter mag worden dan CREATE TABLE project8 ( projectnummer numeric(6) NOT NULL,projectomschrijving varchar(50),budget numeric(6)) ALTER TABLE project8 ADD CONSTRAINT ch_budget CHECK (BUDGET <= 1000) ALTER TABLE project8 DROP CONSTRAINT ch_budget Vormingscentrum Tongeren 52
53 Drop Table Naast het maken van een tabel via het CREATE TABLE commando is er ook een commando voorzin om een tabel terug te verwijderen. Het verwijderen van een tabel houdt in dat de tabel( de beschrijving) samen met de gegevens erin worden verwijderd van de schijf. Samen met het verwijderen van de tabel gaan ook de constraints en triggers, op voorwaarde dat ze bestaan weggedaan worden. Het commando dat gebruikt wordt om een tabel definitief te verwijderen is DROP TABLE. Let hierbij goed op want dit is een DDL-statement. m.a.w. dit kan niet ongedaan gemaakt worden met een rollback uit te voeren. Voorbeeld: DROP TABLE PROJECT DROP TABLE PROJECTMEDEWERKER Vormingscentrum Tongeren 53
54 Indexen Algemeen Een index is een database-object wat het ophalen van gegevens kan versnellen. De bedoeling hierbij is het aantal input-output operaties te verminderen om aldusdanig snelheid te winnen. In principe zijn indexen onafhankelijk van de tabel die ze indexeren, of m.a.w ze kunnen gemaakt of gedropped worden op eender wellk moment zonder effect te hebben op de tabel of andere indexen. Er kunnen een tweetal soorten van indexen gemaakt worden. Een type is de 'unique index'. Deze index wordt automatisch door de databank gemaakt wanneer bij een tabel gemaakt wordt, waarin een kolom de constraint van PRIMARY KEY of UNIQUE krijgt. Een tweede soort is de niet-unieke index die bekomen wordt door bijvoorbeeld het leggen van een FOREIGN KEY, om de bij een join de opzoeksnelheid te verhogen. Wanneer? Meer is niet altijd beter. Bij elk DML-commando (Data Manipulation Language) moeten de indexen bijgewerkt worden. Dit vraagt de nodige tijd.dushoe meer indexen er gezet worden op een bepaalde tabel, des te meer tijd heeft de server nodig om al deze indexen te gaan bijwerken. Enkele richtlijnen: Wel een index gebruiken : De kolom wordt zeer dikwijls gebruikt in een WHERE -clausule, of in een join. De kolom bevat zeer uiteenlopende waarden De kolom bevat een groot aantal NULL-waarden De tabel is zeer groot en de meeste queries gaan ongeveer 10 tot 15 procent van de gegevens ophalen. Geen index gebruiken: De tabel is vrij klein De kolom worden zelden tot nooit gebruikt in een where of een join Niet gebruiken op tabellen die zeer dikwijls ge-update worden Vormingscentrum Tongeren 54
55 Create Index CREATE INDEX index ON table (kolom [,kolom] ) Voorbeeld: Maak een index op de tabel PROJECT op het veld budget CREATE INDEX IX_PR8_BUDGET ON PROJECT8 (BUDGET) Verwijderen van een index Het is niet mogelijk om een index te wijzigen. Om een index te wijzigen moet deze eerst weggedaan worden en vervolgens opnieuw gemaakt om de nieuwe kolom of kolommen. Een index wordt weggedaan door het statement DROP INDEX uit te voeren. Voorbeeld : CREATE INDEX IX_PR8_BUDGET Vormingscentrum Tongeren 55
56 Bijlage 1 : Structuur van de tabellen 1. Het medewerkers bestand : MDW MNR : Medewerkernummer : integer NAAM : Naam : CHAR(12) VOORL : Voorletter, initialen : CHAR(5) FUNCTIE : Functie in het bedrijf : CHAR(10) CHEF : Wie is zijn chef? : Integer GBDATUM : Geboorte datum : Date MAANDSAL : Maand Salaris : Integer COMM : Commissie : Integer AFD : In welke afdeling werkt ie : Integer 2. Het afdelings bestand : AFD ANR : Afdelings nummer : Integer NAAM : Naam afdeling : CHAR(20) LOCATIE : Waar ligt deze afdeling? : CHAR(20) HOOFD : Wie is hoofd v/deze afd : Integer 3. Het cursussen bestand : CRS CODE : ID Van een cursus : CHAR(4) OMSCHRIJVING: no comment : CHAR(50) TYPE : Wat voor een cursus : CHAR(3) LENGTE : Hoelang duurt ze : Integer 4. Het uitvoerings bestand : UITV CURSUS : Welke cursus : CHAR(4) BEGINDATUM : Wanneer begonnnen : Date DOCENT : Wie geeft er de cursus : Integer LOCATIE : Waar gebeurt de cursus : CHAR(20) 5. Het inschrijvings bestand : INSCHR CURSIST : Wie doet er mee? : Integer CURSUS : aan welke cursus? : CHAR(4) BEGINDATUM : van welke begindatum? : Date EVALUATIE : Hoe was de cursus : Integer Vormingscentrum Tongeren 56
57 Vormingscentrum Tongeren 57
58 Bijlage 2 : Inhoud van de tabellen Tabel medewerkers : MDW MNR NAAM VOORL FUNCTIE CHEF GBDATUM MAANDSAL COMM AFD 7369 SMIT N TRAINER /12/ ALDERS JAM VERKOPER /02/ DE WAARD TF VERKOPER /02/ JANSEN JM MANAGER /04/ MARTENS P VERKOPER /09/ BLAAK R MANAGER /11/ CLERCKX AB MANAGER /06/ SCHOTTEN SCJ TRAINER /11/ DE KONING CC DIRECTEUR 17/11/ DEN DRAAIER JJ VERKOPER /09/ ADAMS AA TRAINER /12/ JANSEN R BOEKHOUDER /12/ SPIJKER MG TRAINER /02/ MOLENAAR TJA BOEKHOUDER /01/ Tabel afdeling : AFD ANR NAAM LOCATIE HOOFD 10 HOOFDKANTOOR LEIDEN OPLEIDINGEN DEMEERN VERKOOP UTRECHT PERSONEELSZAKEN GRONINGEN 7839
59 Tabel cursussen : CRS CODE OMSCHRIJVING TYPE LENGTE CGE Systeemgeneratie met ORACLE CASE DSG 4 CSO Systeemontwerp met ORACLE CASE DSG 5 ERM Datamodellering met ERM DSG 3 FOR Applicatiebouw met SQL*Forms BLD 4 OAG ORACLE voor Applicatiegebruikers ALG 1 PMT Procesmodelleringstechnieken DSG 1 RSO Relationeel Systeemontwerp DSG 2 S02 Introductie SQL en SQL*plus ALG 4 SMU Bouwen met SQL*Menu BLD 1 SRW Bouwen met SQL*ReportWriter BLD 2 Tabel uitvoeringen : UITV CURSUS BEGINDATUM ³ DOCENT LOCATIE CSO 17/02/92 DE MEERN ERM 13/01/92 FOR 17/12/ MAASTRICHT FOR 5/02/ DE MEERN OAG 10/08/ UTRECHT OAG 27/09/ DE MEERN RSO 24/02/ UTRECHT S02 16/04/ DE MEERN S02 8/10/ MAASTRICHT S02 17/12/ DE MEERN SMU 11/09/ DE MEERN SRW 4/02/ DE MEERN SRW 18/09/91 MAASTRICHT Vormingscentrum Tongeren 59
60 Tabel inschrijvingen : INSCHR CURSIST CURSUS BEGINDATUM ³ EVALUATIE 7499 FOR 17/12/ S02 16/04/ SMU 11/09/ SRW 1/02/ OAG 10/12/ FOR 5/02/ SMU 11/09/ FOR 5/02/ S02 16/04/ S02 17/12/ FOR 17/12/ FOR 17/12/ FOR 5/02/ S02 8/10/ FOR 17/12/ S02 8/10/ OAG 27/09/ FOR 17/12/ S02 16/04/ SMU 11/09/ OAG 10/08/ SRW 4/02/ OAG 10/08/ S02 8/10/ S02 17/12/ S02 16/04/90 5 Vormingscentrum Tongeren 60
61 8 Unieke volgnummers Doelstellingen: Maken van unieke volgnummers voor kolommen van een tabel. Op het einde van de les moet men in staat zijn om : Het gebruik van unieke volgnummers verklaren Gebruiken van unieke volgnummers
62 Algemeen Vele applicatie's moeten beschikken over een uniek volgnummer die dan als sleutel gebruikt kan worden. Dit kan ofwel ingebouwd worden in de applicatie zelf ofwel kan er gebruik gemaakt worden van een object van de databank. De benamingen van deze objecten verschillen van databank tot databank. Onderstaande tabel geeft een kort overzicht. Overzicht : Databank Benaming ORACLE SEQUENCE INTERBASE GENERATOR ACCESS AUTOINCREMENT Voor de verdere bespreking zal de term "sequence" gebruikt worden. Een sequence generator kan gebruikt worden voor het automatisch genereren van unieke nummers voor rijen in tabellen. Een sequence is een databank-object kan gedeeld kan worden door meerdere gebruikers. Een typisch gebruik van een sequence is het maken van een primary-key waarde, die uniek moet zijn voor elke rij van de tabel. De sequence wordt automatisch met één verhoogd door de databank zelf. Dit kan gebeuren, afhankelijk van databank tot databank, door een interne routine (oracle) ofwel door een bepaalde routine aan te roepen (interbase). Dit kan tijdbesparend werken omdat er op deze manier geen applicatie-code moet geschreven worden om de volgnummers te bepalen. Een sequence is tevens onafhankelijk van een tabel zodat één bepaalde sequence door verschillende tabellen gebruikt kan worden. Vormingscentrum Tongeren 62
63 Creatie van een sequence Voor Oracle : CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n NOMAXVALUE}] [{MINVALUE n NOMINVALUE}] [{CYCLE NOCYCLE] [{CACHE n NOCACHE }] Voor Interbase : CREATE GENERATOR name SET GENERATOR name to 1 (geeft de startwaarde 1) Gebruik van een sequence Oracle : INSERT INTO TABEL_TEST (VOLGNUMMER, NAAM) VALUES (SEQUENCE_NAAM.NEXTVAL, 'NAAM_VAN_IEMAND') Interbase : INSERT INTO TABEL_TEST (VOLGNUMMER, NAAM) VALUES (GEN_ID(GENERATOR_NAAM,VERHOGING_VAN), 'NAAM_VAN_IEMAND') Bij Interbase is het mogelijk om de volgnummer met een bepaald getal te laten stijgen (verhoging_met). Eenmaal een nummer gegeneerd wordt is dit opgebruikt. Dit wil zeggen dat deze nummer niet meer gebruikt kan worden. Ook het ROLLBACK-statement heeft hier geen invloed op. Opmerking : Een sequence geeft unieke nummers. Deze zijn niet noodzakelijke opeenvolgend! Vormingscentrum Tongeren 63
64 Verwijderen van een sequence Oracle : DROP SEQUENCE sequence Interbase : Interbase kent geen drop generator commando. Om bij Interbase een generator te verwijderen wordt er gebruik gemaakt van een delete - commando : DELETE FROM RDB$GENERATORS WHERE RDB$GENERATOR_NAME = 'GENERATOR_NAME' Vormingscentrum Tongeren 64
65 9 Views Op het einde van de les moet men in staat zijn om : Het begrip view te verklaren Views maken Views wijzigen Views verwijderen Vormingscentrum Tongeren 65
66 Algemeen Wat is een view Een view is een logische tabel gebaseerd op een andere tabel of op een andere view. Een view op zich bevat geen data, maar kan best vergeleken worden met een venster waardoor gegevens van tabellen kunnen bekeken of gewijzigd worden. Een view wordt in de databank opgeslaan als een SELECT-statement in de data dictionary. Voordelen van views - beperken van de toegang tot de databank omdat de view slechts een deel van de gegevens gaat tonen van de tabellen in de databank. - Gebruikers toelaten om eenvoudige selekties te maken om resultaten te bekomen van complexe selekties. Bijvoorbeeld, een view kan een gebruiker helpen om informatie op te vragen uit meerdere tabellen zonder te weten hoe hij/zij een join moet opbouwen. - Een view kan gebruikt worden voor het ophalen van gegevens uit meerdere tabellen. Creatie van een view Oracle create [or replace] [force noforce] view view [(alias[, alias] )] as subquery [with check option [constraint constraint]] [with read only] force maakt de view aan, ongeacht of de tabel bestaat of niet noforce maakt de view enkel aan indien de tabel bestaat ( = standaardinstelling) view naam van de view alias alias voor de kolommen uit de view subquery de volledige select with check option specifieert dat enkel rijen die zichtbaar zijn met de view mogen toegevoegd of ge-update worden constraint is de naam die gegeven wordt aan de check option constraint with read only zorgt ervoor dat er geen DML -statements uitgevoerd kunnen worden op deze view Vormingscentrum Tongeren 66
67 Interbase CREATE VIEW name [( view_col [, view_col...)] AS <select> [WITH CHECK OPTION]; Voorbeeld : CREATE VIEW PHONE_LIST AS SELECT EMP_NO,FIRST_NAME,LAST_NAME,LOCATION,PHONE_NO FROM EMPLOYEE,DEPARTMENT WHERE EMPLOYEE.DEPT_NO = DEPARTMENT.DEPT_NO; Opmerking : In een view mag er nooit 'ORDER BY' staan. Opvragen van gegevens Opvragen van gegevens uit de view gebeurt op dezelfde manier als opvragen van gegevens uit een tabel. voorbeeld : select * from phone_list Uitvoeren van DML - statements op een view Het is mogelijk om DML - statements uit te voeren met een view op voorwaarde - een join - voorwaarde - group -function - een group by optie - een distinct commando - kolommen bekomen door bewerking : voorbeeld : salaris * 12 Vormingscentrum Tongeren 67
68 De nieuwe elementen worden dus direct aangepast of toegevoegd in de onderliggende tabellen van de view. Dit wil dus zeggen dat wanneer er van die onderliggende tabellen een aantal velden NOT NULL zijn, dan moeten die dus ook in de view opgenomen worden. Check option Indien er met een view een DML - statement uitgevoerd wordt is het noodzakelijk dat de aangepaste gegevens ook nog te zien zijn door deze view. Om ervoor te zorgen dat dit steeds zo is kan er een CHECK OPTION CONSTRAINT meegegeven worden. Voorbeeld : (voor interbase) Create view view_test01 as select * from employee where job_code = 'Sales' with check option EMP_NO FIRST_NAME LAST_NAME PHONE_EXT HIRE_DATE DEPT_NO JOB_CODE JOB_GRADE JOB_COUNTRY SALARY FULL_NAME ====== ========== ========= ========= =========== ======= ======== ========= =========== ====== ================= 34 Janet Baldwin 2 21-MAR Sales 3 USA Baldwin, Janet 36 Roger Reeves 6 25-APR Sales 3 England Reeves, Roger Stel nu dat we het veld jobgrade willen aanpassen van 3 naar 5 update view_test01 set job_code = 'Test' where emp_no = 34 Wanneer we dit uitvoeren geeft de databank volgende foutmelding : "Operation violates CHECK constraint INTEG_30 on view or table EMPLOYEE" Geen enkele rij werd aangepast omdat de job_code zou aangepast worden. Op deze manier zou de view deze medewerker niet meer zien. De view was trouwens specifiek gemaakt om alle medewerkers met 'job_grade = 'Sales'' te zien. Oracle gaat hier nog een stapje verder. Hier is het mogelijk om te specifiëren om geen DML - statements toe te laten op een view. Dit gebeurt door de constraint 'WITH READ ONLY' mee te geven tijdens de creatie van de view. Vormingscentrum Tongeren 68
69 Verwijderen van een view Door het commando DROP VIEW view_name uit te voeren wordt de view verwijderd van de databank. Het verwijderen heeft geen enkele invloed op de onderliggende tabellen van de view Vormingscentrum Tongeren 69
70 10 Triggers Op het einde van de les moet men in staat zijn om : Het begrip trigger te verklaren Weten wanneer een trigger te gebruiken Maken van een trigger Verwijderen van een trigger Vormingscentrum Tongeren 70
71 Algemeen Een trigger is een op zichzelf bestaande routine die afhankelijk is van een bepaalde tabel of view. Deze routine gaat een aktie ondernemen indien er op die tabel een DML - statement wordt uitgevoerd. Een trigger wordt nooit direct aangeroepen, maarwordt als het ware afgevuurd door de databank op het moment dat er op die tabel een INSERT, UPDATE of DELETE gedaan wordt. Voordelen van triggers : - Invoercontrole doen, m.a.w controleren of er door de gebruiker geldige waarden worden toegvoegd in de kolommen. - Verminderen van onderhoud op bestaande programmatuur omdat wijzigingen aan een trigger automatisch geldig is voor alle programma's. Deze moeten dus niet gehercompileerd worden. - Er kan een automatische logging gedaan worden op de tabel. Creatie van een trigger Oracle : (Deze syntax is geldig voor row-triggers. Er bestaan ook nog statement trigger, maar daarop wordt niet verder ingegaan) CREATE OR REPLACE TRIGGER TRIGGER_NAME TIMING EVENT [OR] ON TABLE_NAME FOR EACH ROW [WHEN RESTRICTION CONDITION] { PL/SQL - BLOCK} trigger_name: timing: event: table_name: pl/sql - block: naam van de trigger geeft de tijd aan wanneer de trigger reageert in verhouding tot de trigger event BEFORE AFTER geeft het type DML-statement aan dewelke de trigger doet afvuren. naam van de tabel code die uitgevoerd word door de trigger Vormingscentrum Tongeren 71
72 Interbase : CREATE TRIGGER NAME FOR { TABLE VIEW} [ACTIVE INACTIVE] {BEFORE AFTER} {DELETE INSERT UPDATE} [POSITION NUMBER] AS < TRIGGER_BODY> Voorbeeld van een trigger : Oracle : create or replace trigger audit_emp after delete or insert or update on employee for each row begin if deleting then update audit_table set del = del +1 where user_name = user and table_name = user and colomn_name is null; elsif inserting then update audit_table set ins = ins +1 where user_name = user and table_name = 'EMPLOYEE' and colomn_name is null; elsif updating ('salary') then update audit_table set upd = upd +1 where user_name = user and table_name = 'EMPLOYEE' and colomn_name = 'salary'; else /* hier gaat het over een algemene update */ update audit_table set upd = upd +1 where user_name = user and table_name = 'EMPLOYEE' and colomn_name is null'; endif; end; Vormingscentrum Tongeren 72
73 Interbase : create trigger save_salary_change for Employee after update as begin if (old.salary <> new.salary) then insert into Salary_History (emp_no, change_date, update_id, old_salary, percent_change) values ( old.emp_no, 'now', user, old.salary, (new.salary - old.salary) * 100 / old.salary ); end Opmerking: Voor de code in de 'trigger-body', de gebruikte commando's tussen 'begin' en 'end' van de trigger wordt verwezen naar de handleiding van de gebruikte databank. Verwijderen van trigger Door het commando DROP TRIGGER trigger_naam uit te voeren wordt de trigger verwijderd van de databank. Oefeningen Hoofdstuk 1 : Select 1. Geef de naam en functie van alle medewerkers die verkoper zijn. ALDERS VERKOPER DE WAARD VERKOPER MARTENS VERKOPER DEN DRAAIER VERKOPER 2. Geef de naam en functie van de medewerkers die geen boekhouder zijn. SMIT ALDERS DE WAARD JANSEN MARTENS TRAINER VERKOPER VERKOPER MANAGER VERKOPER Vormingscentrum Tongeren 73
74 BLAAK MANAGER CLERCKX MANAGER SCHOTTEN TRAINER DE KONING DIRECTEUR DEN DRAAIER VERKOPER ADAMS TRAINER SPIJKER TRAINER 3. Geef naam, functie en maansalaris van alle medewerkers die minder dan 3000 verdienen, en geen manager zijn. SMIT TRAINER 800 ALDERS VERKOPER 1600 DE WAARD VERKOPER 1250 MARTENS VERKOPER 1250 DEN DRAAIER VERKOPER 1500 ADAMS TRAINER 1100 JANSEN BOEKHOUDER 800 MOLENAAR BOEKHOUDER 1300 Vormingscentrum Tongeren 74
75 4. Welke medewerkers verdienen minder dan 2500 SMIT 800 ALDERS 1600 DE WAARD 1250 MARTENS 1250 CLERCKX 2450 DEN DRAAIER 1500 ADAMS 1100 JANSEN 800 MOLENAAR Van welke afdeling is medewerker 7698 de baas? Geef het nummer en de naam van de medewerkers 7369 SMIT 7499 ALDERS 7521 DE WAARD 7566 JANSEN 7654 MARTENS 7698 BLAAK 7782 CLERCKX 7788 SCHOTTEN 7839 DE KONING 7844 DEN DRAAIER 7876 ADAMS 7900 JANSEN 7902 SPIJKER 7934 MOLENAAR 7. Geef de verschillende functies van de medewerkers BOEKHOUDER DIRECTEUR MANAGER TRAINER VERKOPER Vormingscentrum Tongeren 75
76 8. Geef de nummer en de naam van elke cursus CGE CSO ERM FOR OAG PMT RSO S02 SMU SRW Systeemgeneratie met ORACLE CASE Systeemontwerp met ORACLE CASE Datamodellering met ERM Applicatiebouw met SQL*Forms ORACLE voor Applicatiegebruikers Procesmodelleringstechnieken Relationeel Systeemontwerp Introductie SQL en SQL*plus Bouwen met SQL*Menu Bouwen met SQL*ReportWriter 9. In welke locaties zijn er afdelingen gevestigd DE MEERN GRONINGEN LEIDEN UTRECHT 10. Geef de nummer en de naam van elke medewerker die trainer is 7369 SMIT 7788 SCHOTTEN 7876 ADAMS 7902 SPIJKER 11. Geef de naam, functie en het salaris van elke medewerker die in afdeling 30 werkt en meer dan 2500 verdient. BLAAK MANAGER In welke locatie is de afdeling die door medewerker 7566 geleid wordt gevestigd DE MEERN Vormingscentrum Tongeren 76
77 13. Geef de namen van de medewerkers die in afdeling 10 of 20 werken SMIT 20 JANSEN 20 CLERCKX 10 SCHOTTEN 20 DE KONING 10 ADAMS 20 SPIJKER 20 MOLENAAR Geef van elke medewerker de naam en het jaarsalaris!! SMIT 9600 ALDERS DE WAARD JANSEN MARTENS BLAAK CLERCKX SCHOTTEN DE KONING DEN DRAAIER ADAMS JANSEN 9600 SPIJKER MOLENAAR Geef de namen van de medewerkers wiens naam eindigt op N JANSEN SCHOTTEN JANSEN Vormingscentrum Tongeren 77
78 16. Geef de namen en het salaris van de medewerkers van groot naar klein gesorteerd op salaris. DE KONING 5000 SPIJKER 3000 SCHOTTEN 3000 JANSEN 2975 BLAAK 2850 CLERCKX 2450 ALDERS 1600 DEN DRAAIER 1500 MOLENAAR 1300 MARTENS 1250 DE WAARD 1250 ADAMS 1100 JANSEN 800 SMIT Geef de namen en het salaris van alle medewerkers die tussen de 1000 en 3000 verdienen, maar niet gelijk is aan 2850, noch aan De resultaten worden in dalend salaris getoond SCHOTTEN 3000 SPIJKER 3000 JANSEN 2975 CLERCKX 2450 DEN DRAAIER 1500 MOLENAAR 1300 DE WAARD 1250 MARTENS 1250 ADAMS 1100 Vormingscentrum Tongeren 78
79 18. Geef de namen en het salaris van de medewerkers, naam alfabetisch gesorteerd en salaris van groot naar klein. ADAMS 1100 ALDERS 1600 BLAAK 2850 CLERCKX 2450 DE KONING 5000 DE WAARD 1250 DEN DRAAIER 1500 JANSEN 2975 JANSEN 800 MARTENS 1250 MOLENAAR 1300 SCHOTTEN 3000 SMIT 800 SPIJKER Geef de namen van alle medewerkers waarin een dubbele E voorkomt. NIKS, NOPPES, NIEMAND Geef een lijst waarop de naam van de medewerker staat, zijn huidig salaris en zijn toekomstig salaris als elke medewerker een opslag van 10% zou krijgen. Zorg voor fatsoenlijke namen in het getoonde resultaat. SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK CLERCKX SCHOTTEN DE KONING DEN DRAAIER ADAMS JANSEN SPIJKER MOLENAAR Vormingscentrum Tongeren 79
80 21. Geef de cursus en de begindata van de inschrijvingen weer, als alle cursussen 1 week later beginnen. FOR 24/12/90 S02 23/04/90 SMU 18/09/91 SRW 8/02/91 OAG 17/08/90 FOR 12/02/91 SMU 18/09/91 FOR 12/02/91 S02 23/04/90 S02 24/12/90 FOR 24/12/90 FOR 24/12/90 FOR 12/02/91 S02 15/10/90 FOR 24/12/90 S02 15/10/90 OAG 4/10/91 FOR 24/12/90 S02 23/04/90 SMU 18/09/91 OAG 17/08/90 SRW 11/02/91 OAG 17/08/90 S02 15/10/90 S02 24/12/90 S02 23/04/ Hoeveel dagen zijn er tussen vandaag en de geboortedatum van de werknemers. SMIT N ALDERS JAM DE WAARD TF JANSEN JM MARTENS P BLAAK R CLERCKX AB SCHOTTEN SCJ DE KONING CC DEN DRAAIER JJ ADAMS AA JANSEN R SPIJKER MG MOLENAAR TJA Vormingscentrum Tongeren 80
81 Oefeningen Hoofdstuk 2 : Single row functies 1. Geef een overzicht van all medewerkers als volgt : SMIT N is TRAINER ALDERS JAM is VERKOPER DE WAARD TF is VERKOPER JANSEN JM is MANAGER MARTENS P is VERKOPER BLAAK R is MANAGER CLERCKX AB is MANAGER SCHOTTEN SCJ is TRAINER DE KONING CC is DIRECTEUR DEN DRAAIER JJ is VERKOPER ADAMS AA is TRAINER JANSEN R is BOEKHOUDER SPIJKER MG is TRAINER MOLENAAR TJA is BOEKHOUDER 2. Geef de namen van de medewerkers in kleine letters : smit alders de waard jansen martens blaak clerckx schotten de koning den draaier adams jansen spijker molenaar Vormingscentrum Tongeren 81
82 3. Geef de namen van de medewerkers in hoofdletter SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK CLERCKX SCHOTTEN DE KONING DEN DRAAIER ADAMS JANSEN SPIJKER MOLENAAR 4. Geef de namen van de medewerkers zodat de eerste letter een hoofdletter is en de rest kleine letters : Smit Alders De waard Jansen Martens Blaak Clerckx Schotten De koning Den draaier Adams Jansen Spijker Molenaar Vormingscentrum Tongeren 82
83 5. Schrijf de sql die het volgende als resultaat geeft : SMIT heeft als functie TRAINER ALDERS heeft als functie VERKOPER DE WAARD heeft als functie VERKOPER JANSEN heeft als functie MANAGER MARTENS heeft als functie VERKOPER BLAAK heeft als functie MANAGER CLERCKX heeft als functie MANAGER SCHOTTEN heeft als functie TRAINER DE KONING heeft als functie DIRECTEUR DEN DRAAIER heeft als functie VERKOPER ADAMS heeft als functie TRAINER JANSEN heeft als functie BOEKHOUDER SPIJKER heeft als functie TRAINER MOLENAAR heeft als functie BOEKHOUDER Vormingscentrum Tongeren 83
84 Oefeningen Hoofdstuk 3 : Joins 1. Geef van elke medewerker het nummer en de naam van de afdeling waarvoor hij/zij werkt, gesorteerd op de afdelingsnummer. CLERCKX 10 HOOFDKANTOOR DE KONING 10 HOOFDKANTOOR MOLENAAR 10 HOOFDKANTOOR JANSEN 20 OPLEIDINGEN SCHOTTEN 20 OPLEIDINGEN ADAMS 20 OPLEIDINGEN SPIJKER 20 OPLEIDINGEN SMIT 20 OPLEIDINGEN MARTENS 30 VERKOOP BLAAK 30 VERKOOP DE WAARD 30 VERKOOP ALDERS 30 VERKOOP DEN DRAAIER 30 VERKOOP JANSEN 30 VERKOOP 2. Geef het nummer van elke medewerker die in de afdeling HOOFDKANTOOR werkt Geef de namen van de medewerkers die in dezelfde afdeling werken als ALDERS ALDERS BLAAK DE WAARD DEN DRAAIER JANSEN MARTENS Vormingscentrum Tongeren 84
85 4. Geef de namen van de medewerkers die in dezelfde plaats een cursus gaan volgen als waar hun afdeling gevestigd is ADAMS DE WAARD JANSEN JANSEN SCHOTTEN SPIJKER AA TF JM R SCJ MG 5. Geef het nummer van elke medewerker gevolgd door de naam van zijn of haar baas 7369 SPIJKER 7499 BLAAK 7521 BLAAK 7566 DE KONING 7654 BLAAK 7698 DE KONING 7782 DE KONING 7788 JANSEN BLAAK 7876 SCHOTTEN 7900 BLAAK 7902 JANSEN 7934 CLERCKX 6. Geef de namen van de medewerkers die een cursus gevolgd hebben die hun baas ook gevolgd heeft. ALDERS CLERCKX SCHOTTEN ADAMS 7. Geef de namen en cursus-code van de docenten die cursussen S02, OAG of ERM doceren. JANSEN OAG SMIT S02 SPIJKER OAG SPIJKER S02 8. Welke medewerkers verdienen meer dan hun baas? SCHOTTEN SPIJKER 9. Geef van alle inschrijvingen de naam van de cursist, de naam van de leraar en de naam van de cursus Vormingscentrum Tongeren 85
86 FOR 17/12/90 ADAMS JANSEN Applicatiebouw met SQL*Forms FOR 17/12/90 DE KONING JANSEN Applicatiebouw met SQL*Forms FOR 17/12/90 SCHOTTEN JANSEN Applicatiebouw met SQL*Forms FOR 17/12/90 CLERCKX JANSEN Applicatiebouw met SQL*Forms FOR 17/12/90 ALDERS JANSEN Applicatiebouw met SQL*Forms FOR 5/02/91 SCHOTTEN ADAMS Applicatiebouw met SQL*Forms FOR 5/02/91 JANSEN ADAMS Applicatiebouw met SQL*Forms FOR 5/02/91 BLAAK ADAMS Applicatiebouw met SQL*Forms OAG 10/08/90 SPIJKER JANSEN ORACLE voor Applicatiegebruikers OAG 10/08/90 JANSEN JANSEN ORACLE voor Applicatiegebruikers OAG 10/08/90 DE WAARD JANSEN ORACLE voor Applicatiegebruikers OAG 27/09/91 DEN DRAAIER SPIJKER ORACLE voor Applicatiegebruikers S02 16/04/90 BLAAK SPIJKER Introductie SQL en SQL*plus S02 16/04/90 ALDERS SPIJKER Introductie SQL en SQL*plus S02 16/04/90 ADAMS SPIJKER Introductie SQL en SQL*plus S02 16/04/90 MOLENAAR SPIJKER Introductie SQL en SQL*plus S02 8/10/90 SCHOTTEN SMIT Introductie SQL en SQL*plus S02 8/10/90 DE KONING SMIT Introductie SQL en SQL*plus S02 8/10/90 SPIJKER SMIT Introductie SQL en SQL*plus S02 17/12/90 BLAAK SMIT Introductie SQL en SQL*plus S02 17/12/90 SPIJKER SMIT Introductie SQL en SQL*plus SMU 11/09/91 JANSEN SCHOTTEN Bouwen met SQL*Menu SMU 11/09/91 ADAMS SCHOTTEN Bouwen met SQL*Menu SMU 11/09/91 ALDERS SCHOTTEN Bouwen met SQL*Menu SRW 1/02/91 ALDERS Bouwen met SQL*ReportWriter SRW 4/02/91 JANSEN SMIT Bouwen met SQL*ReportWriter 10. Geef de namen van de cursussen waarvan de docent niet gekend is Systeemontwerp met ORACLE CASE Datamodellering met ERM Bouwen met SQL* ReportWriter Vormingscentrum Tongeren 86
87 11. Geef de namen van de medewerkers van de afdeling verkoop, wiens commissie niet gekend is BLAAK JANSEN 12. Geef de begindata en de namen van alle cursussen samen met de docent die deze cursussen eventueel doceren 17/02/92 Systeemontwerp met ORACLE CASE 13/01/92 Datamodellering met ERM 17/12/90 Applicatiebouw met SQL*Forms JANSEN 5/02/91 Applicatiebouw met SQL*Forms ADAMS 10/08/90 ORACLE voor Applicatiegebruikers JANSEN 27/09/91 ORACLE voor Applicatiegebruikers SPIJKER 24/02/92 Relationeel Systeemontwerp SCHOTTEN 16/04/90 Introductie SQL en SQL*plus SPIJKER 8/10/90 Introductie SQL en SQL*plus SMIT 17/12/90 Introductie SQL en SQL*plus SMIT 11/09/91 Bouwen met SQL*Menu SCHOTTEN 4/02/91 Bouwen met SQL*ReportWriter SMIT 18/09/91 Bouwen met SQL*ReportWriter 13. Geef de namen van alle medewerkers en de namen van hun eventuele chefs SMIT SPIJKER ALDERS BLAAK DE WAARD BLAAK JANSEN DE KONING MARTENS BLAAK BLAAK DE KONING CLERCKX DE KONING SCHOTTEN JANSEN DE KONING DEN DRAAIER BLAAK ADAMS SCHOTTEN JANSEN BLAAK SPIJKER JANSEN MOLENAAR CLERCKX Vormingscentrum Tongeren 87
88 14. Geef de namen van alle afdelingen en hun eventuele hoofden HOOFDKANTOOR OPLEIDINGEN VERKOOP PERSONEELSZAKEN CLERCKX JANSEN BLAAK DE KONING 15. Geef de namen van de afdelingen die een medewerker in dienst hebben die meer dan 2900 verdient HOOFDKANTOOR OPLEIDINGEN 16. Geef de namen van de afdelingen die medewerker 7566 als baas hebben en minstens één medewerker in dienst hebben die meer dan 2500 verdient OPLEIDINGEN 17. Geef de namen van de medewerkers die zich voor cursus S02 ingeschreven hebben en tot een afdeling behoren die in Leiden of Utrecht gevestigd is. ALDERS BLAAK R CLERCKX DE KONING DE WAARD DEN DRAAIER JJ JANSEN MARTENS MOLENAAR JAM AB CC TF R P TJA 18. Geef het nummer en de naam van elke medewerker die zich tenminste in één cursus heeft ingeschreven waar ook medewerker 7499 zich heeft ingeschreven JANSEN 7698 BLAAK 7782 CLERCKX 7788 SCHOTTEN 7839 DE KONING 7876 ADAMS 7934 MOLENAAR 19. Geef de naam van elke medewerker die in de afdeling verkoop of opleiding werkt, geef ook de naam van de afdeling. JANSEN SMIT SCHOTTEN ADAMS SPIJKER OPLEIDINGEN OPLEIDINGEN OPLEIDINGEN OPLEIDINGEN OPLEIDINGEN Vormingscentrum Tongeren 88
89 DE WAARD VERKOOP MARTENS VERKOOP ALDERS VERKOOP DEN DRAAIER VERKOOP JANSEN VERKOOP BLAAK VERKOOP 20. Geef de naam van elke afdeling waar een medewerker werkt die Trainer is en minder dan 2000 verdient. OPLEIDINGEN 21. Geef de naam en het salaris van eke medewerker die net zoveel verdient als De WAARD DE WAARD 1250 MARTENS Geef de namen van de medewerkers die minstens één cursus gevolgd hebben die hun baas ook gevolgd heeft. ADAMS ALDERS BLAAK R CLERCKX JANSEN SCHOTTEN AA JAM AB JM SCJ Vormingscentrum Tongeren 89
90 23. Geef de naam van elke medewerker die niet in een afdeling werkt die in Leiden is gevestigd SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK SCHOTTEN DEN DRAAIER ADAMS JANSEN SPIJKER 24. Geef de naam van elke cursus die langer dan 3 dagen duurt en minstens door één medewerker gevolgd is. Applicatiebouw met SQL*Forms Introductie SQL en SQL*plus Vormingscentrum Tongeren 90
91 Oefeningen Hoofdstuk 4 : Group functions 1. Op welke datum is voor het laatst een cursus gepland 24/02/92 2. Geef het aantal medewerkers per afdeling Geef het aantal medewerkers voor alle afdelingen behalve de afdeling Geef per afdeling de naam, het max en het min salaris HOOFDKANTOOR OPLEIDINGEN PERSONEELSZAKEN VERKOOP Geef per afdeling en per functie het aantal medewerkers en het gemiddelde salaris 10 BOEKHOUDER DIRECTEUR MANAGER MANAGER TRAINER BOEKHOUDER MANAGER VERKOPER Geef per afdeling het gemiddelde salaris voor die afdelingen waar meer dan 4 medewerkers werken , Vormingscentrum Tongeren 91
92 7. Hoe lang duurt een cursus gemiddeld? 2,7 8. Gemiddelde salaris van alle medewerkers per afdeling HOOFDKANTOOR 2916, OPLEIDINGEN 2175 PERSONEELSZAKEN VERKOOP 1541, Aantal medewerkers per afdeling waar in hun afdelingsnaam OO staat HOOFDKANTOOR 3 VERKOOP Geef het aantal cursussen waarvoor elke medewerker zich heeft ingeschreven, gesorteerd op aantal 7521 DE WAARD TF CLERCKX AB MOLENAAR TJA DEN DRAAIER JJ JANSEN R JANSEN JM DE KONING CC SPIJKER MG SCHOTTEN SCJ ADAMS AA BLAAK R ALDERS JAM 4 Vormingscentrum Tongeren 92
93 11. Hoe heten de drie hoogst betaalde medewerkers? DE KONING 1 SCHOTTEN 3 SPIJKER Wat zijn de namen en de salarissen van de vijf laagst betaalde medewerkers? Dalend gesorteerd op salaris ADAMS DE WAARD JANSEN MARTENS SMIT Hoe heten de 2 meest verdienende verkopers? ALDERS 1 DEN DRAAIER Hoeveel verschillende bazen zijn er (baas= manager, directeur) 4 Vormingscentrum Tongeren 93
94 Oefeningen Hoofdstuk 5 : Sub queries 1. Geef de naam en het salaris van elke medewerker die meer verdient dan BLAAK JANSEN 2975 SCHOTTEN 3000 DE KONING 5000 SPIJKER Geef de namen van de medewerkers die in dezelfde afdeling werken als ALDERS ALDERS DE WAARD MARTENS BLAAK DEN DRAAIER JANSEN 3. Geef de namen van de medewerkers die in dezelfde plaats een cursus gaan volgen als waar een afdeling is gevestigd ADAMS ALDERS BLAAK R DE WAARD DEN DRAAIER JJ JANSEN JANSEN MOLENAAR SCHOTTEN SPIJKER AA JAM TF JM R TJA SCJ MG Vormingscentrum Tongeren 94
95 4. Geef de naam en de tijdsduur van de cursussen die langer duren dan die met de korste tijdsduur Systeemgeneratie met ORACLE CASE 4 Systeemontwerp met ORACLE CASE 5 Datamodellering met ERM 3 Applicatiebouw met SQL*Forms 4 Relationeel Systeemontwerp 2 Introductie SQL en SQL*plus 4 Bouwen met SQL*ReportWriter 2 5. Geef naam, nummer en afdelingsnummer van de medewerkers die in de verkoop werken ALDERS DE WAARD MARTENS BLAAK DEN DRAAIER JANSEN Geef de namen van de medewerkers die een cursus gevolgd hebben die door SMIT gedoceerd werd BLAAK DE KONING JANSEN SCHOTTEN SPIJKER 7. Geef de namen van de medwerkers die niet in een Leidense afdeling werken SMIT ALDERS DE WAARD JANSEN MARTENS BLAAK R SCHOTTEN DEN DRAAIER JJ ADAMS JANSEN SPIJKER N JAM TF JM P SCJ AA R MG 8. Geef de namen van de medewerkers die alle cursussen gevolgd hebben NIEMAND 9. Geef de naam en het salaris van elke medewerker die meer verdient dan Jansen Jm Vormingscentrum Tongeren 95
96 SCHOTTEN 3000 DE KONING 5000 SPIJKER Geef de namen van de medewerkers die zich op minstens één cursus ingeschreven hebben waar ook jansen zich heeft ingeschreven. ADAMS ALDERS BLAAK CLERCKX DE KONING DE WAARD DEN DRAAIER JANSEN MARTENS MOLENAAR SCHOTTEN SMIT SPIJKER 11. Geef de namen van de cursussen die door alle medewerkers gevolgd zijn GEEN ENKELE 12. Geef de naam en het salaris van de medewerker die het meest verdient DE KONING 5000 Vormingscentrum Tongeren 96
97 13. Geef per afdeling de naam van de afdeling en de naam van de medewerker(s) die het meest verdient HOOFDKANTOOR DE KONING OPLEIDINGEN SCHOTTEN OPLEIDINGEN SPIJKER VERKOOP BLAAK 14. Geef de namen van de medewerkers die een hoger salaris hebben dan het gemiddelde salaris JANSEN BLAAK CLERCKX SCHOTTEN DE KONING SPIJKER 15. Geef de namen van de medewerkers die een hoger salaris hebben dan het gemiddelde salaris van hun afdeling ALDERS 1600 JANSEN 2975 BLAAK 2850 SCHOTTEN 3000 DE KONING 5000 SPIJKER Hoe luiden de namen van de medewerkers die minder dan het gemiddelde salaris verdienen? SMIT ALDERS DE WAARD MARTENS DEN DRAAIER ADAMS JANSEN MOLENAAR Vormingscentrum Tongeren 97
98 17. Wat is het gemiddelde salaris van de medewerkers die in dezelfde afdeling werken als Den Draaier? 1541, Hoeveel medewerkers verdienen minder dan het gemiddelde salaris plus 200? Hoe heten de medewerkers die onder jansen JM werken SCHOTTEN SPIJKER 20. Hoe heet de baas van Smit SPIJKER Vormingscentrum Tongeren 98
Oefeningen Hoofdstuk 1 : Select
Oefeningen Hoofdstuk 1 : Select 1. Geef de naam en functie van alle medewerkers die verkoper zijn. VERKOPER VERKOPER MARTENS VERKOPER DEN DRAAIER VERKOPER 2. Geef de naam en functie van de medewerkers
SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.
BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is
12. Meer dan één tabel gebruiken en sub-queries
12. Meer dan één tabel gebruiken en sub-queries 12.1. Inleiding In de vorige hoofdstukken heb je telkens queries uitgevoerd op één tabel. In de praktijk is het raadplegen van gegevens over het algemeen
SQL datadefinitietaal
SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen
DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.
SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases
1. Geef code en omschrijving van alle cursussen die precies vier dagen duren.
Antwoorden Deze bijlage geeft de antwoorden van de opgaven waarmee de hoofdstukken 4, 5, 7, 8, 9, en 10 zijn afgesloten. Waar dat van toepassing is geven we alternatieve oplossingen aan, evenals waarschuwingen
SQL Aantekeningen 3. Maarten de Rijke [email protected]. 22 mei 2003
SQL Aantekeningen 3 Maarten de Rijke [email protected] 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets
Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64
Klas Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters JONGENS Number Integer MEISJES Number Integer Lessen Veldnaam Datatype Lengte KLASNAAM Short Text 3 Characters DOCCODE Short Text 3 Characters
DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.
SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Op dit moment gebruiken
SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.
SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens
Query SQL Boekje. Fredrik Hamer
Query SQL Boekje Query SQL Boekje Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402162103 Fredrik Hamer Inhoudsopgave A. Aanhef bepalen 17 Aantal 18 Aantal dagen tussen
1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model...
1. Inleiding... 2 1.1. Inleiding SQL... 3 1.1.1. Inleiding... 3 1.1.2. Database, databaseserver en databasetaal... 4 1.1.3. Het relationele model... 4 1.1.4. Wat is SQL?... 6 1.1.5. Verschillende categorieên
Databases - Inleiding
Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden
Structured Query Language (SQL)
Structured Query Language (SQL) Huub de Beer Eindhoven, 4 juni 2011 Database: in essentie 0 of meer tabellen elke tabel nul of meer kolommen (of velden) elke tabel nul of meer unieke rijen elke query werkt
Les S-02: Meer geavanceerde SQL-instructies
Les S-02: Meer geavanceerde SQL-instructies 2.0 Overzicht les 1: De basisvorm van een SQL query ziet er als volgt uit: (DISTINCT) selecteer de velden uit de tabel waar de volgende voorwaarde geldt ; Bij
Structured Query Language
Structured Query Language SQL = internationale standaardtaal. Origineel IBM. SQL92 (SQL2), SQL99 (SQL3), SQL:2003, SQL:2007 en SQL:2008. Vele dialecten. In wat volgt beperken we ons tot wat tot de kern
Introductie (relationele) databases
Eerste les Introductie (relationele) databases Database en DBMS Een verzameling van gestructureerd opgeslagen gegevens Dus ook een kaartenbak is een database Van oudsher waren er hiërarchische en netwerkdatabases
Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank
v Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank 1 Introductie: data en informatie 1.0 Wat leer je in dit hoofdstuk? 1.1 Verschil tussen gegevens en
Data Definition Language
Data Definition Language We gaan hier dezelfde database gebruiken als in de vorige les. Nu gaan we deze echter maken met behulp van DDL gedeelte van SQL. Om in het SQL deel van Microsoft Access te komen
11. Het selecteren van gegevens deel II
11. Het selecteren van gegevens deel II 11.1. Inleiding In hoofdstuk 7 heb je kennis gemaakt met het statement Select. In dit hoofdstuk ga je wat dieper in op het statement. Je gaat sorteren / groeperen
6. Het maken van een database
6. Het maken van een database 6.1. Inleiding In hoofdstuk 5 heb je de oefendatabase gemaakt doormiddel van een script. In dit hoofdstuk ga je zelf een database maken en deze vullen met tabellen. Hiervoor
Data Manipulation Language
Data Manipulation Language (DML) In de vorige les hebben we een database structuur gemaakt van 4 tabellen. Hiervoor worden de volgende scripts gebruikt voor de verschillende tabellen: Tabel A ROBERT ELLIS
Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster
4. 4. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Databank Terminologie, Navigeren, Importeren Tabellen Records/Velden manipuleren Queries (Vragen) [Ook in SQL] sorteren filter volgens
Inleiding... 3. 1 Databases en Data Base Management Systems... 3. 2 Tabellen... 3. 3 Wat is SQL?... 5
1 Inhoudsopgave. Inleiding.... 3 1 Databases en Data Base Management Systems.... 3 2 Tabellen.... 3 3 Wat is SQL?... 5 4 Gegevens opvragen (deel 1).... 5 4.1 Boolean operatoren.... 7 4.2 IN en BETWEEN
Databases en SQL Foundation (DBSQLF.NL)
Databases en SQL Foundation (DBSQLF.NL) EXIN Hét exameninstituut voor ICT ers Janssoenborch - Hoog Catharijne Godebaldkwartier 365 3511 DT Utrecht Postbus 19147 3501 DC Utrecht Nederland T +31 30 234 48
Hoofdstuk: 1 Principes van databases
DBSQLF Databases en SQL Hoofdstuk: 1 Principes van databases aant Css: 4 732 blz 9 1.1 Doel ve database - om op het juiste moment op de juiste plaats de juiste gegevens beschikbaar te hebben richten we
SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC
Aantekeningen IRDB Vak: IRDB > Infrma1ca Rela1nele DataBase Onderstaande database scripts zijn gebaseerd p PstgreSQL. Standaarden Schrijf SQL wrden al1jd in hfdlefers, k al werkt het met kleine lefers;
Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2
v Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2 1 Introductie: data en informatie 3 1.0 Wat leer je in dit hoofdstuk? 3 1.1 Verschil tussen
Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank
Inhoud Computervaardigheden Hoofdstuk 5 Databanken (Let op: dit is enkel voor studenten Bio-Ingenieur.) Terminologie Data importeren Basis queries Allerhande Joins Doe dit. Aandachtspunt! Wat gebeurt hier?
Les 2 Eenvoudige queries
Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten
Sparse columns in SQL server 2008
Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : [email protected] www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG
[TOETS SQL INLEIDING]
2011 ROC ter AA afdeling T&T Team ICT Toets SQL Inleiding Duur: 100 minuten Hulpmiddelen: Alleen Pen en Papier Er is één voorblad en vijf opgaven pagina s. Normering: Deel I: 14 punten (7x2 Deel II: 10
ISO SQL: Structured Query Language
ISO SQL: Structured Query Language Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. SQL: query taal met woorden doel: intuitieve query taal gebruikt Engelse woorden: select, from,
Informatie & Databases
Informatie Wat is informatie en waaruit het bestaat? Stel op een kaart staat het getal 37 geschreven. Wat kun je dan zeggen van het cijfer 37? Niets bijzonders, toch? Alleen dat het een getal is. Gaat
SQL: query taal met. woorden. ISO SQL: Structured Query Language. de SQL basis query structuur. voorbeeld: doel: intuitieve query taal
SQL: query taal met woorden ISO SQL: Structured Query Language Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. doel: intuitieve query taal gebruikt Engelse woorden: select, from,
Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts
Elfde-Liniestraat 24 3500 Hasselt Schooljaar 2009-2010 TINFO POKER GAME Oracle Scripts Studenten: Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters Inhoudsopgave
Les S-01: De basisbeginselen van SQL
Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database
EXIN Databases en SQL Foundation
EXIN Databases en SQL Foundation Preparation Guide Editie 201608 Copyright 2016 EXIN All rights reserved. No part of this publication may be published, reproduced, copied or stored in a data processing
SQL & Datamodelleren
SQL & Datamodelleren HVA-CMD-V1-datamodelleren Algemene handleiding bij het lesprogramma 2012-2013 Inhoud Inhoud... 2 Inleiding... 3 Leerdoelen:... 3 Plaats in het leerplan:... 3 Werkwijze:... 3 Lesstof:...
SQL.
SQL [email protected] Mogelijkheden Tabellen maken: create table Tabellen verwijderen: drop table Tabellen vullen: insert into Tabellen wijzigen: update, delete from Gegevens opvragen: select
7. Het selecteren van gegevens
7. Het selecteren van gegevens 7.1. Inleiding Het doel van databases is het ontsluiten van gegevens. Een database wordt gebruikt om gegevens in op te slaan en te lezen. In dit hoofdstuk ga je door gebruik
SQL & Relationele datamodellen in interactieve media
SQL & Relationele datamodellen in interactieve media HVA-CMD-V1-datamodelleren oefeningen deel 1: SQL 2012-2013 Inhoud Inhoud... 2 Selecties uit een enkelvoudige datatabel... 3 Selecties uit een meerdere
SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.
SQL en XML Datamodellering 2007 1 XML schema s & DMO Schema een ruim begrip (zie Møller, p. 96) DTD schema W3C Schema In dit overzicht: Wat zijn de belangrijke zaken uit XML voor datamodellering? (onvolledig)
Relationele databases
Systematisch bouwen van informatiesystemen t.b.v. practicumopdracht : Relationele databases Structured Query Language SQL Relationele databases Geautomatiseerde informatiesystemen gebruiken bijna altijd
Databanken - les 2.
Databanken - les 2 [email protected] http://www.cs.kuleuven.be/~joost/dn/ Bv. tennisclub Onze tennisclub heeft een aantal spelers, die allemaal een uniek spelersnummer hebben. Soms krijgt een
Puzzelen met SQL 38. De Muzieklijst, deel 2 PUZZELEN MET SQL
2 3 4 10 2 14 15 18 21 PUZZELEN MET SQL 3 26 27 1 32 33 33 36 Puzzelen met SQL 38 0 41 5 46 47 De Muzieklijst, deel 2 intro In het vorige nummer is een start gemaakt met het bijhouden van een muzieklijst,
Les S-01: De basisbeginselen van SQL
Les S-01: De basisbeginselen van SQL 1.0 Relationele databases en SQL Een database is een bestand waarin gegevens worden opgeslagen in de vorm van tabellen. Zo kan een huisarts met behulp van een database
Databanken - les 2.
Databanken - les 2 [email protected] http://www.cs.kuleuven.be/~joost/dn/ Samenvattend Probleemstelling ER-Diagramma Databank definitie Gegevens invoeren Gegevens opvragen Huiswerk! Practicum
6.8 Lijsten: oefeningen
6.8 Lijsten: oefeningen Opgaven 44.: Records zoeken Open het document "Autokosten". Klik in de lijst. Kies de opdracht 'Data - Formulier' [Data - Form]. Klik de knop 'Criteria' [Criteria]. Vul als zoekcriterium
hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1
relationele databases 9.1 hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit Als voorbeeld nemen we een eenvoudige database, bestaande uit twee tabellen. De
F. TRUYEN - Informatiekunde QBE. MS Access
F. TRUYEN - Informatiekunde QBE MS Access Maak queries via Design View Voeg de tabellen toe die je wil bevragen Selecteer de gewenste kolommen Bekijk resultaat met View knop Bekijk SQL code SQL venster
= > >= < <= BETWEEN IS NULL IS NOT NULL
Select queries SELECT...FROM... SELECT DISINCT...FROM... WHERE...AND...OR...NOT...LIKE...IN = > >= <
Zelftest DB2 for z/os basiscursus
Zelftest DB2 for z/os basiscursus Document: n1067test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST DB2 FOR Z/OS BASISCURSUS
Het omzetten van een ER-diagram naar SQL
Het omzetten van een ER-diagram naar SQL Huub de Beer Eindhoven, 4 juni 2011 Omzetting ER-diagram naar SQL in twee stappen 1: ER-Diagram relationeel model Onderwerp van hoofdstuk 3 Entiteittype relatie,
Zelftest SQL Workshop
Zelftest SQL Workshop Document: n0087test.fm 25/06/2014 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST SQL WORKSHOP Handleiding Deze test
Spiekboekje Excel Query SQL
Spiekboekje Excel Query SQL Spiekboekje Excel Query SQL Fredrik Hamer Schrijver: Fredrik Hamer Coverontwerp: Fredrik Hamer ISBN: 9789402163100 Fredrik Hamer Inhoudsopgave Excel functies Inhoudsopgave
Integriteitsbewaking bij een relationele database
Integriteitsbewaking bij een relationele database Bij het ontwikkelen van een informatiesysteem voor een organisatie moet er koste wat koste voor gezorgd worden, dat er geen tegenstrijdige gegevens in
DATABASEBEHEER IN EXCEL
DATABASEBEHEER IN EXCEL 1. LIJSTEN Een lijst is een reeks van rijen met gelijksoortige gegevens waarvan de eerste rij de labels (veldnamen) bevat. Een voorbeeld: Je kunt een lijst beschouwen als een eenvoudige
DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1
DATAMODEL SQL Middelbare School Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: 500625333 Groep TDI 1 INHOUDSOPGAVE 1. Informatiedomein 3 1.1 Informatiedomein 3 1.2 Toepassingen 3 2.
Inhoud Basiscursus. Access 2010 NL-NL
Inhoud Basiscursus Access 2010 NL-NL 1 - Access starten... 6 Een bestaande database openen... 8 Menu-opdrachten gebruiken... 9 Werkbalken tonen en verbergen... 11 Menu- en werkbalkopties aanpassen... 12
8. De invoer van gegevens
8. De invoer van gegevens 8.1. Inleiding Voor het invoeren van gegevens kan het DML-statement INSERT INTO worden gebruikt. Om dit statement correct te kunnen gebruiken, moet je wel antwoord weten op de
oefeningen TOP2000 antwoorden
oefeningen TOP2000 antwoorden vragen niveau 1 Niveau 1 beslaat de volgende onderwerpen: SELECT, FROM, WHERE, DISTINCT, ORDER BY, LIKE, BETWEEN, IN, wildcards, eenvoudige vergelijkingen, eenvoudige logische
Zelftest SQL Workshop
Zelftest SQL Workshop Document: n0087test.fm 04/01/2018 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST SQL WORKSHOP Handleiding Deze test
Zelftest Oracle basiscursus
Zelftest Oracle basiscursus Document: N0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST ORACLE BASISCURSUS Dit is een
ExpertHandboek Business Intelligence met Power BI in Excel Wim de Groot
ExpertHandboek Business Intelligence met Power BI in Excel Wim de Groot Van Duuren Media, ISBN 9789463560665 Inhoud Voorwoord 1. Goed beginnen Voor wie is dit boek bedoeld? Werken met dit boek Afspraken
II. ZELFGEDEFINIEERDE FUNCTIES
II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual
Les 11 : Basis SQL (deel2).
Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit
SQL / Systeemanalyse
SQL / Systeemanalyse Wie ben ik Hans de Wit 44 jaar HBO BI in deeltijd gedaan Sinds 2008 werkzaam met BI / DWH med.hro.nl/wihan SQL De gegevens in een database vormen de grondstof voor informatie De informatie
EXIN Databases en SQL Foundation
EXIN Databases en SQL Foundation Voorbeeldexamen Editie 201608 Copyright 2016 EXIN All rights reserved. No part of this publication may be published, reproduced, copied or stored in a data processing system
Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium
Zelftest SQL Document: n0453test.fm 19/04/2012 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST SQL Korte handleiding Deze test heeft als bedoeling
Data Warehouse Script Generator Doel
Data Warehouse Script Generator Doel Op basis van een aantal standaard sql scripts ( create table, create view ) een nieuwe sql script genereren welke alle objecten ( tables & views ) kan aanmaken in een
Miniles gegevensbanken bevragen met SQL
Miniles gegevensbanken bevragen met SQL In deze miniles gaat het over gegevensbanken of databases. Dit zijn bestanden waarin gegevens kunnen worden opgeslagen. Het is dan van belang dat je op een eenvoudige
Informatie verwerking en databases... 4. RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE... 10 SQL INSERT... 14 SQL UPDATE... 17 SQL DELETE...
Databases+SQL 1 Inhoud Informatie verwerking en databases... 4 RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE... 10 SQL INSERT... 14 SQL UPDATE... 17 SQL DELETE... 18 SQL ORDER BY... 19 SQL Aggregate
Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie
Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes
We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.
MySQL talk Trage website? Het optimaliseren van een bestaande website die een MySQL database heeft is niet altijd even makkelijk. Het probleem kan namelijk op veel verschillende plekken zitten: de database
Info-books. Toegepaste Informatica. Handleiding. Deel 40c : Gegevensbeheer en algoritmen in Access. HA40c. Jos Gils Erik Goossens
Info-books HA40c Toegepaste Informatica Handleiding Deel 40c : Gegevensbeheer en algoritmen in Access Jos Gils Erik Goossens Veldlengte Het maximale aantal tekens dat in een veld kan ingevoerd worden.
voorbeeldexamen I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006
voorbeeldexamen Databases and SQL Foundation (DBSQLF) I-Tracks Databases and SQL Foundation Voorbeeldexamen DBSQLF Uitgave juni 2006 inhoud 3 inleiding 4 voorbeeldexamen 21 antwoordindicatie 44 beoordeling
Databases gebruiken. Databases gebruiken
Databases gebruiken In deze module wordt van de kandidaat verwacht dat hij een goed begrip heeft van databases en aantoont competent te zijn in het gebruik van een database. Doel van de module De kandidaat:
Technische nota AbiFire Rapporten maken via ODBC
Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern
Datamodelleren en databases 2011
Datamodelleren en databases 21 Capita selecta 1 In dit college Modelleren Normaliseren Functionele afhankelijkheid 1-3N M:N-relaties, associatieve entiteittypes, ternaire relaties Weak entiteittypes Multivalued
SQL. Datamodellering 2008
SQL Datamodellering 2008 1 Wat is SQL? SQL is een standaard interactieve bevragings- en definitietaal voor relationele DBMSen SQL is een set-based, declaratieve query-taal (dus niet procedureel!) DB-leveranciers
SQL. Wat is SQL? Geschiedenis SQL SQL DMO 2008 1. Datamodellering 2008
SQL Datamodellering 2008 1 Wat is SQL? is een standaard interactieve bevragings- en definitietaal voor relationele DBMSen is een set-based, declaratieve query-taal (dus niet procedureel!) DB-leveranciers
Puzzelen met SQL: Fileleed
Puzzelen met SQL: Fileleed Patrick Barel, Alex Nuijten - AMIS Services BV Na begin de dag met een dansje en de NOS Headlines worden op Radio 3 de files voorgelezen. Heleen de Geest of John Bakker, van
2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311
LEEREENHEID Oracle Dit document bestaat uit twee onderdelen - Onderdeel Leereenheid - Onderdeel Onderwijsproduct 1 Naam leereenheid In deze tabel staat de naam en het type van de leereenheid Leereenheid
Technische nota AbiFire5 Rapporten maken via ODBC
Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...
Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,
Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt
Macro s. 4.2 Een macro maken
4.2 Een macro maken Een macro is een reeks van commando s die u kunt maken en die een programma uitvoeren. Wanneer u de macro in zijn geheel uitvoert, dan worden de acties opeenvolgend uitgevoerd. Elk
COMPUTERWOORDEN.NL SQL - basis
Inhoudsopgave... 1 Introductie: SQL... 7 SQL... 7 SQL geschiedenis...7 SQL dialecten...7 Basis SQL-commando's...8 CREATE TABLE... 8... 8... 8 Datatype...8 Grootte...10 Veldtype... 10 DELETE FROM... 10...
oefeningen eredivisie antwoorden
oefeningen eredivisie antwoorden vragen niveau 1 Niveau 1 beslaat de volgende onderwerpen: SELECT,, WHERE, DISTINCT, ORDER BY, eenvoudige vergelijkingen, LIKE, wildcards en eenvoudige logische operatoren.
Les 15 : updaten van gegevens in de database (deel2).
Les 15 : updaten van gegevens in de database (deel2). In de volgende reeks lessen zal alle vorige leerstof uitgebreid aan het bod komen. Zie ook de vorige lessen en documenten om informatie op te zoeken
Variabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311
LEEREENHEID PhP 2 Dit document bestaat uit twee onderdelen - Onderdeel Leereenheid - Onderdeel Onderwijsproduct 1 Naam leereenheid In deze tabel staat de naam en het type van de leereenheid Leereenheid
Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:
Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de
7.8 Lijsten oefeningen
7.8 Lijsten oefeningen Opgaven 58.: Gegevensvalidatie Open het document Autokosten.xls. Selecteer kolom-a. Selecteer Gegevens Gegevensvalidatie Gegevensvalidatie [Data Data Validation Data Validation].
Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010
4 Tabellen maken in MS Access In dit hoofdstuk starten we met de bouw van ons informatiesysteem met de belangrijkste bouwstenen: de tabellen. 4.1 Starten met MS Access Als je het programma Microsoft Access
1. * Database worden vaak gebruikt in Client-Server architectuur.
Naam Studentnummer Klas Herkansing [ ] ja, nee [ ], zoja uit welk jaar? kernbegrippen relationele database Minimaal drie van de vijf vragen goed beantwoorden. 1. * Database worden vaak gebruikt in Client-Server
Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )
OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................
