De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Jan van Brabant College oktober 2003 Giel Jacobs Relationele Databases Hoofdstuk 10.

Verwante presentaties


Presentatie over: "Jan van Brabant College oktober 2003 Giel Jacobs Relationele Databases Hoofdstuk 10."— Transcript van de presentatie:

1 Jan van Brabant College oktober 2003 Giel Jacobs Relationele Databases Hoofdstuk 10

2 Jan van Brabant College oktober 2003 Giel Jacobs Inleiding  Database = Gegevensbank= verzameling van gegevens  Relationeel model Een goede manier om een database te organiseren  DBMS DataBase Management System Gegevensbankbeheersysteem Hulpmiddel om de database te beheren

3 Jan van Brabant College oktober 2003 Giel Jacobs Structuur Eenvoudige structuur: bijv. telefoonklapper Grotere database (bijv. Schooladministratie)  Structuur wordt moeilijker  Bijhouden van: >gegevens van leerlingen > gegevens van docenten > klassen/ roosters/ resultaten/ absentie/ enz

4 Jan van Brabant College oktober 2003 Giel Jacobs  Taak 1: Opslaan De eerste belangrijke taak  Taak 2: Opvragen en verwerken De opgeslagen gegevens gebruiken om allerlei taken goed uit te kunnen voeren  Taak 3: Integriteit Het systeem kan controleren of de ingevoerde gegevens aan een aantal regels voldoen Structuur

5 Jan van Brabant College oktober 2003 Giel Jacobs Relationeel model  Alle gegevens worden opgeslagen in tabellen  Rijen in de tabel Alle gegevens van een bepaalde kaart  Kolommen in de tabel Gegevens van de velden van de systeemkaart

6 Jan van Brabant College oktober 2003 Giel Jacobs Relationeel model Kolomme n Rijen

7 Jan van Brabant College oktober 2003 Giel Jacobs  SQL Structured Query Language = Gestructureerde Vraagtaal  Alle softwareprogramma’s voor relationele databases bevatten dezelfde kern van SQL. Relationeel model

8 Jan van Brabant College oktober 2003 Giel Jacobs Term “relationeel” komt uit de wiskunde > uit de verzamelingenleer. Bijv.: met zinnen als: “Leerling Jan uit klas 4B” leg je een relatie tussen leerling en klas. De elementen van de relatie (leerling en klas) geven de kolommen aan. De in te vullen gegevens komen dan in de rijen. Relationeel model Leerling Klas: Jan Jansen 4B Elementen in de kolommen Gegevens in de regels

9 Jan van Brabant College oktober 2003 Giel Jacobs Voorbeeld database  Een database met informatie over de schoolbibliotheek  Deze database bevat 6 tabellen  Elke tabel bevat een aantal kolommen

10 Jan van Brabant College oktober 2003 Giel Jacobs Structuur Voorbeeld database Tabel: LEERLINGENMet de kolommen: LLNR - VOORNAAM - TUSSENVOEGSEL - ACHTERNAAM - STRAAT - HUISNUMMER - POSTCODE - PLAATS - TELEFOON - GESLACHT - GEB_DATUM - KLAS Tabel: AUTEURSMet de kolommen: AUTEURNR - VOORNAAM - VOORLETTERS - TUSSENVOEGSEL - ACHTERNAAM - GEB_DATUM - STERF_JAAR

11 Jan van Brabant College oktober 2003 Giel Jacobs Structuur Voorbeeld database Met de kolommen: Tabel: BOEKEN BOEKNR - AUTNR - TITEL - RUBRIEK Tabel: EXEMPLAREN EXNR - BOEKNR - UITLEENBAAR - STATUS Er kunnen namelijk verschillende exemplaren van hetzelfde boek zijn.

12 Jan van Brabant College oktober 2003 Giel Jacobs Structuur Voorbeeld database Er komen kolommen voor die alleen maar een nummer bevatten: LLNR / AUTEURNR / BOEKNR / EXNR Reden:Makkelijker om een bepaalde rij aan te duiden. Twee leerlingen met exact dezelfde naam. Bij het stellen van complexere vragen staan de gegevens in verschillende tabellen.

13 Jan van Brabant College oktober 2003 Giel Jacobs Database management systemen Microsoft ACCES FileMaker Oracle Sybase Ingres Solid Al deze systemen:1. Gaan uit van het relationele model 2. Hebben de mogelijkheid om SQL te gebruiken.

14 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Procedure voor het maken van een SQL-query: 1. Kies de tab Query’s 2. Kies Nieuw (New) in het menu – rechts. 3. Kies Ontwerpweergave (Design new) en Klik dan op OK. 4. Kies Sluiten in het venster “Tabel Toevoegen” (Add Table). 5. Klik via het menu: “Beeld” op SQL (View: SQL) 6. Klik op SQL uit het submenu. Nu krijg je een venster waarin je een query kunt typen.

15 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Kies de tab Query’s

16 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Kies daarna voor: Nieuw

17 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL En druk daarna op: OK Kies dan voor: Ontwerpweergave

18 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Kies Sluiten in de tabel Toevoegen

19 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Kies voor: Beeld En kies daarna voor: SQL

20 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Of kies meteen: SQL

21 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Dit is dan het venster waarin de query getypt kan worden Het eerste woord: SELECT; staat er al

22 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Basisstructuur van een eenvoudige query

23 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT:Achter SELECT geef je de kolommen op die je in de uitvoer wilt zien. FROM:Achter FROM geef je de naam van de tabel (of tabellen) waaruit deze kolommen komen. SELECT * FROM LEERLINGEN Door het sterretje krijg je de inhoud van de volledige tabel op het scherm.

24 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECTVOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROMLEERLINGEN Welke kolommen, maar ook de volgorde van de kolommen is van belang.

25 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROMLEERLINGEN ORDER BYACHTERNAAM Door de regel: ORDER BY, wordt de lijst gesorteerd. Je zou ook op twee of meer kolommen kunnen laten sorteren, door achter ORDER BY, de twee kolommen op te geven.

26 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROMLEERLINGEN ORDER BY3 desc Nu wordt op de 3e kolom gesorteerd (ACHTERNAAM) DESC betekent: Aflopend > van Z naar A. Bij Niets vermelden (of ASC vermelden) wordt oplopend gesorteerd.

27 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECTPLAATS FROMLEERLINGEN Het resultaat is een lange waslijst van plaatsnamen. Die plaatsnamen kunnen allemaal meerdere keren voorkomen. Door DISTINCT komt elke plaats maar 1 keer op het scherm voor. SELECTDISTINCT PLAATS FROMLEERLINGEN

28 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Niet alleen kolommen, maar ook rijen kunnen geselecteerd worden. Hiervoor moeten voorwaarden aan de rijen worden gesteld SELECT FROM WHERE VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM LEERLINGEN GESLACHT = ‘M’ Voorwaarden geef je achter het sleutelwoord: WHERE Dus selecteer: Uit de TABEL: LEERLINGEN Die kolommen die achter SELECT staan En alleen die rijen, die een M hebben in de kolom GESLACHT

29 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL WHERE:ACHTERNAAM = ‘Frederiks’ Of:…. WHERE:ACHTERNAAM LIKE ‘Frederi*’ Controle is: Teken voor teken controleren * Geeft aan wat niet precies hoeft te kloppen

30 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL LIKE operatoren: * ? = <> Er mag alles staan. (ook meerdere tekens) Er mag alles staan, maar niet meer dan 1 teken Kleiner dan... en Groter dan…. Kleiner dan of gelijk aan / groter dan of gelijk aan Niet gelijk aan

31 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Samengestelde voorwaarden ANDBindt voorwaarden aan elkaar SELECT FROM WHERE * LEERLINGEN ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL = ‘de’ AND VOORNAAM = ‘Jantine’ Maar wat nu als je Jantine Bakker wilt hebben in plaats van Jantine de Bakker ??

32 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT FROM WHERE * LEERLINGEN ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL = ‘de’ AND VOORNAAM = ‘Jantine’ Vul je hier niets in, of een spatie, dan is dat voor SQL toch een invulling Dit weghalen en iets anders verzinnen

33 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT FROM WHERE * LEERLINGEN ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL AND VOORNAAM = ‘Jantine’ IS NULL De waarde die nu staat ingevuld is: “er is niet ingevuld”

34 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Naast AND, bestaat er nog een ander sleutelwoord Namelijk:... OR Deze OR is niet exclusief. D.w.z.: rijen die aan allebei de voorwaarden voldoen worden ook geselecteerd. SELECT FROM WHERE * LEERLINGEN PLAATS = ‘Utrecht’ OR KLAS = ‘4B’ Dus:…. Leerlingen die in klas 4B zitten EN de leerlingen die in Utrecht wonen worden getoond.

35 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL In een voorwaarden van AND en OR samen, gaat AND altijd voor OR. Opmerking 1: Opmerking 2: Om verwarring te voorkomen is het plaatsen van haakjes handig.

36 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Voorbeeld uit boek: (blz.: 55) Jantine zoekt vriendinnen die met haar meefietsen. Liefst meisjes uit haar klas. Kan dat niet, dan meisjes uit een andere klas, als ze maar in de buurt wonen. Hoe komt dit er in SQL uit te zien????..

37 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, HUISNR, POSTCODE, WOONPLAATS, TELEFOON LEERLINGEN WHERE GESLACHT = ‘v’ AND ( KLAS = ‘4B’ OR ( KLAS LIKE ‘4?’ AND POSTCODE LIKE ‘3253*’ )) Meisje geen jongen Klas 4B of de andere keuze is allebei goed Vele invul- mogelijkheden FROM Hier mag elke wille- keurige letter komen

38 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Functies in SQL: SUM(KOLOMNAAM) MAX(KOLOMNAAM) MIN(KOLOMNAAM) AVG(KOLOMNAAM) De som van een aantal getallen in een kolom. Dit is niet hetzelfde als het aantal rijen! De grootste waarde in een kolom De kleinste waarde in een kolom De gemiddelde waarde in een kolom. Kan alleen als er getallen staan.

39 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Een Query binnen een Query…. SUBQUERY Voorbeeld uit boek: 1e.: Wat is de maximale boete die betaald moet worden 2e.: Welke leerlingen moeten die boete betalen? Samengevat: Welke leerlingen betalen de hoogste boete???

40 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT We gaan eerst de maximale boete uitzoeken MAX (BOETE) FROMUITLENINGEN Dan zoeken we uit welk LLNR uit de tabel UITLENINGEN bij die MAX(BOETE) hoort. Stel: MAX(BOETE) = 4.00 SELECTLLNR FROMUITLENINGEN WHEREBOETE = 4.00 Deze twee queries gaan we combineren tot een query Deze twee queries gaan we combineren tot een query

41 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECTLLNR FROMUITLENINGEN WHEREBOETE = ( SELECTMAX (BOETE) FROMUITLENINGEN ) Dit heet een SUBQUERY Maar nu weet ik alleen het LLNR en nog niet de namen Hoe moet je de Query met Subqueries zo uitbreiden dat i.p.v. LLNR de naam en klas van de leerlingen te zien zijn

42 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT NAAM, KLAS FROM LEERLINGEN WHERE LLNR IN (SELECTLLNR FROMUITLENING WHERE BOETE = ( SELECT MAX(BOETE) FROM UITLENINGEN ) )

43 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Tabellen combineren: Tabel 1 Tabel 2 Pieters Jansen van Dijk Schiedam Rotterdam Breda Goosens Grieken Geerts Breda Oosterhout Schiedam Combinatie van deze twee tabellen: SELECT * FROMTabel 1, Tabel 2 Bedenk nu wat hiervan het resultaat zal zijn

44 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Het resultaat van deze Query is: PietersSchiedamGoosens Breda JansensRotterdamGoosens Breda van Dijk BredaGoosens Breda PietersSchiedamGriekenOosterhout JansensRotterdamGriekenOosterhout van DijkBredaGriekenOosterhout PietersSchiedamGeertsSchiedam JansensRotterdamGeertsSchiedam van DijkBredaGeertsSchiedam Dus een combinatie van 2 tabellen met elk 3 rijen geeft een tabel van 3 x 3 = 9 rijen Dus een combinatie van 2 tabellen met 110 en 230 rijen geeft een tabel van 110 x 230 = rijen Dus niet zo maar alles (*) met elkaar combineren

45 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Groeperen met voorwaarden: GROUP BY: Hiermee kun je de rijen van een kolom indelen in groepen, die dezelfde gegevens in een kolom hebben. Bij SELECT heb je dezelfde kolommen als achter GROUP BY gezet.

46 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL Nu kun je aan GROUP BY een extra voorwaarde stellen! HAVING Voorbeeld in boek op Blz.: 65

47 Jan van Brabant College oktober 2003 Giel Jacobs Microsoft Access & SQL SELECT AUTEURS.NAAM, BOEKEN.TITEL COUNT(EXEMPLAARNR) FROMAUTTEURS, BOEKEN, EXEMPLAREN WHEREAUTEURS.AUTEURNR = BOEKEN.BOEKNR AND EXEMPLAAR.BOEKNR = BOEKEN.BOEKNR GROUP BYBOEKEN.TITEL HAVINGCOUNT(EXEMPLAARNR) >= 2 Hier wordt de voorwaarde gesteld waaraan de groepjes die bij GROUP BY gemaakt worden, moeten voldoen


Download ppt "Jan van Brabant College oktober 2003 Giel Jacobs Relationele Databases Hoofdstuk 10."

Verwante presentaties


Ads door Google