Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdAnke Hendriks Laatst gewijzigd meer dan 10 jaar geleden
1
Relationele Databases Hoofdstuk 10
Giel Jacobs oktober 2003
2
Inleiding Database = Gegevensbank= Relationeel model DBMS
verzameling van gegevens Relationeel model Een goede manier om een database te organiseren DBMS DataBase Management System Gegevensbankbeheersysteem Hulpmiddel om de database te beheren Giel Jacobs oktober 2003
3
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 Giel Jacobs oktober 2003
4
Structuur 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 Giel Jacobs oktober 2003
5
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 Giel Jacobs oktober 2003
6
Relationeel model Kolommen Kolommen Kolommen Kolommen Kolommen
Rijen Rijen Rijen Rijen Rijen Giel Jacobs oktober 2003
7
Relationeel model SQL Structured Query Language = Gestructureerde Vraagtaal Alle softwareprogramma’s voor relationele databases bevatten dezelfde kern van SQL. Giel Jacobs oktober 2003
8
Elementen in de kolommen
Relationeel model Elementen in de kolommen Term “relationeel” komt uit de wiskunde > uit de verzamelingenleer. Bijv.: met zinnen als: “Leerling Jan uit klas B” 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. Leerling Klas: Jan Jansen B Gegevens in de regels Giel Jacobs oktober 2003
9
Voorbeeld database Een database met informatie over de schoolbibliotheek Deze database bevat 6 tabellen Elke tabel bevat een aantal kolommen Giel Jacobs oktober 2003
10
Structuur Voorbeeld database
Tabel: LEERLINGEN Met de kolommen: LLNR - VOORNAAM - TUSSENVOEGSEL - ACHTERNAAM - STRAAT - HUISNUMMER - POSTCODE - PLAATS - TELEFOON - GESLACHT - GEB_DATUM - KLAS Tabel: AUTEURS Met de kolommen: AUTEURNR - VOORNAAM - VOORLETTERS - TUSSENVOEGSEL - ACHTERNAAM - GEB_DATUM - STERF_JAAR Giel Jacobs oktober 2003
11
Structuur Voorbeeld database
Tabel: BOEKEN Met de kolommen: BOEKNR - AUTNR - TITEL - RUBRIEK Tabel: EXEMPLAREN Met de kolommen: EXNR - BOEKNR - UITLEENBAAR - STATUS Er kunnen namelijk verschillende exemplaren van hetzelfde boek zijn. Giel Jacobs oktober 2003
12
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. Giel Jacobs oktober 2003
13
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. Giel Jacobs oktober 2003
14
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. Giel Jacobs oktober 2003
15
Microsoft Access & SQL Kies de tab Query’s Giel Jacobs oktober 2003
16
Microsoft Access & SQL Kies daarna voor: Nieuw Giel Jacobs
oktober 2003
17
Microsoft Access & SQL Kies dan voor: Ontwerpweergave
En druk daarna op: OK Giel Jacobs oktober 2003
18
Kies Sluiten in de tabel Toevoegen
Microsoft Access & SQL Kies Sluiten in de tabel Toevoegen Giel Jacobs oktober 2003
19
En kies daarna voor: SQL
Microsoft Access & SQL Kies voor: Beeld En kies daarna voor: SQL Giel Jacobs oktober 2003
20
Microsoft Access & SQL Of kies meteen: SQL Giel Jacobs oktober 2003
21
Microsoft Access & SQL Dit is dan het venster waarin de query getypt kan worden Het eerste woord: SELECT; staat er al Giel Jacobs oktober 2003
22
Basisstructuur van een eenvoudige query
Microsoft Access & SQL Basisstructuur van een eenvoudige query Giel Jacobs oktober 2003
23
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. Giel Jacobs oktober 2003
24
Microsoft Access & SQL SELECT
VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN Welke kolommen, maar ook de volgorde van de kolommen is van belang. Giel Jacobs oktober 2003
25
Microsoft Access & SQL SELECT
VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN ORDER BY ACHTERNAAM 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. Giel Jacobs oktober 2003
26
Microsoft Access & SQL SELECT
VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN ORDER BY 3 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. Giel Jacobs oktober 2003
27
Microsoft Access & SQL SELECT PLAATS FROM LEERLINGEN
Het resultaat is een lange waslijst van plaatsnamen. Die plaatsnamen kunnen allemaal meerdere keren voorkomen. SELECT DISTINCT PLAATS FROM LEERLINGEN Door DISTINCT komt elke plaats maar 1 keer op het scherm voor. Giel Jacobs oktober 2003
28
Microsoft Access & SQL Dus selecteer: Uit de TABEL: LEERLINGEN
Die kolommen die achter SELECT staan En alleen die rijen, die een M hebben in de kolom GESLACHT Microsoft Access & SQL Niet alleen kolommen, maar ook rijen kunnen geselecteerd worden. Hiervoor moeten voorwaarden aan de rijen worden gesteld SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM FROM LEERLINGEN WHERE GESLACHT = ‘M’ Voorwaarden geef je achter het sleutelwoord: WHERE Giel Jacobs oktober 2003
29
Microsoft Access & SQL Controle is: Teken voor teken controleren
WHERE: ACHTERNAAM = ‘Frederiks’ Of:…. WHERE: ACHTERNAAM LIKE ‘Frederi*’ * Geeft aan wat niet precies hoeft te kloppen Giel Jacobs oktober 2003
30
Microsoft Access & SQL LIKE operatoren: *
Er mag alles staan. (ook meerdere tekens) ? Er mag alles staan, maar niet meer dan 1 teken < en > Kleiner dan... en Groter dan…. <= en >= Kleiner dan of gelijk aan / groter dan of gelijk aan <> Niet gelijk aan Giel Jacobs oktober 2003
31
Jantine Bakker wilt hebben
Microsoft Access & SQL Maar wat nu als je Jantine Bakker wilt hebben in plaats van Jantine de Bakker ?? Samengestelde voorwaarden AND Bindt voorwaarden aan elkaar SELECT * FROM LEERLINGEN WHERE ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL = ‘de’ AND VOORNAAM = ‘Jantine’ Giel Jacobs oktober 2003
32
dat voor SQL toch een invulling
Microsoft Access & SQL Dit weghalen en iets anders verzinnen SELECT * FROM LEERLINGEN WHERE ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL = ‘de’ AND VOORNAAM = ‘Jantine’ Vul je hier niets in, of een spatie, dan is dat voor SQL toch een invulling Giel Jacobs oktober 2003
33
Microsoft Access & SQL SELECT * FROM LEERLINGEN WHERE
ACHTERNAAM = ‘Bakker’ AND TUSSENVOEGSEL IS NULL AND VOORNAAM = ‘Jantine’ De waarde die nu staat ingevuld is: “er is niet ingevuld” Giel Jacobs oktober 2003
34
Microsoft Access & SQL Dus:…. Leerlingen die in klas 4B zitten EN
de leerlingen die in Utrecht wonen worden getoond. 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 LEERLINGEN WHERE PLAATS = ‘Utrecht’ OR KLAS = ‘4B’ Giel Jacobs oktober 2003
35
Microsoft Access & SQL Opmerking 1:
In een voorwaarden van AND en OR samen, gaat AND altijd voor OR. Opmerking 2: Om verwarring te voorkomen is het plaatsen van haakjes handig. Giel Jacobs oktober 2003
36
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????.. Giel Jacobs oktober 2003
37
Microsoft Access & SQL Meisje geen jongen Klas 4B of de andere keuze
is allebei goed VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, HUISNR, POSTCODE, WOONPLAATS, TELEFOON SELECT Hier mag elke wille- keurige letter komen FROM LEERLINGEN Vele invul- mogelijkheden WHERE GESLACHT = ‘v’ AND ( KLAS = ‘4B’ OR ( KLAS LIKE ‘4?’ AND POSTCODE LIKE ‘3253*’ )) Giel Jacobs oktober 2003
38
Dit is niet hetzelfde als
Microsoft Access & SQL De som van een aantal getallen in een kolom. Dit is niet hetzelfde als het aantal rijen! De grootste waarde in een kolom Functies in SQL: SUM(KOLOMNAAM) MAX(KOLOMNAAM) MIN(KOLOMNAAM) De kleinste waarde in een kolom AVG(KOLOMNAAM) De gemiddelde waarde in een kolom. Kan alleen als er getallen staan. Giel Jacobs oktober 2003
39
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??? Giel Jacobs oktober 2003
40
Microsoft Access & SQL Deze twee queries gaan we combineren tot
een query Deze twee queries gaan we combineren tot een query We gaan eerst de maximale boete uitzoeken SELECT MAX (BOETE) FROM UITLENINGEN Dan zoeken we uit welk LLNR uit de tabel UITLENINGEN bij die MAX(BOETE) hoort. Stel: MAX(BOETE) = 4.00 SELECT LLNR FROM UITLENINGEN WHERE BOETE = 4.00 Giel Jacobs oktober 2003
41
Maar nu weet ik alleen het LLNR en
Microsoft Access & SQL Dit heet een SUBQUERY SELECT LLNR FROM Hoe moet je de Query met Subqueries zo uitbreiden dat i.p.v. LLNR de naam en klas van de leerlingen te zien zijn UITLENINGEN WHERE BOETE = ( SELECT MAX (BOETE) FROM UITLENINGEN ) Maar nu weet ik alleen het LLNR en nog niet de namen Giel Jacobs oktober 2003
42
Microsoft Access & SQL SELECT NAAM, KLAS FROM LEERLINGEN WHERE LLNR IN
( SELECT LLNR FROM UITLENING WHERE BOETE = ( SELECT MAX(BOETE) FROM UITLENINGEN ) ) Giel Jacobs oktober 2003
43
Microsoft Access & SQL Bedenk nu wat hiervan het resultaat zal zijn
Tabellen combineren: Tabel 1 Tabel 2 Pieters Schiedam Goosens Breda Jansen Rotterdam Grieken Oosterhout van Dijk Breda Geerts Schiedam Combinatie van deze twee tabellen: SELECT * FROM Tabel 1, Tabel 2 Giel Jacobs oktober 2003
44
Dus niet zo maar alles (*) met elkaar combineren
Microsoft Access & SQL Dus niet zo maar alles (*) met elkaar combineren Het resultaat van deze Query is: Pieters Schiedam Goosens Breda Jansens Rotterdam Goosens Breda van Dijk Breda Goosens Breda Pieters Schiedam Grieken Oosterhout Dus een combinatie van 2 tabellen met 110 en 230 rijen geeft een tabel van 110 x 230 = rijen Jansens Rotterdam Grieken Oosterhout van Dijk Breda Grieken Oosterhout Pieters Schiedam Geerts Schiedam Jansens Rotterdam Geerts Schiedam van Dijk Breda Geerts Schiedam Dus een combinatie van 2 tabellen met elk 3 rijen geeft een tabel van 3 x 3 = 9 rijen Giel Jacobs oktober 2003
45
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. Giel Jacobs oktober 2003
46
Microsoft Access & SQL Nu kun je aan GROUP BY een extra voorwaarde stellen! HAVING Voorbeeld in boek op Blz.: 65 Giel Jacobs oktober 2003
47
Microsoft Access & SQL Hier wordt de voorwaarde gesteld waaraan de groepjes die bij GROUP BY gemaakt worden, moeten voldoen SELECT AUTEURS.NAAM, BOEKEN.TITEL COUNT(EXEMPLAARNR) FROM AUTTEURS, BOEKEN, EXEMPLAREN WHERE AUTEURS.AUTEURNR = BOEKEN.BOEKNR AND EXEMPLAAR.BOEKNR = BOEKEN.BOEKNR GROUP BY BOEKEN.TITEL HAVING COUNT(EXEMPLAARNR) >= 2 Giel Jacobs oktober 2003
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.