LauwersCollege Buitenpost Informatica

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Informatieanalyse en databaseontwerp Practicum 2 Welkom bij het practicum IID: Query’s, Orde in de Chaos.
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Meerdere tabellen: Relaties en Joins
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Relationele databases en
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens.
MySQL-acties Klassikaal: Wijnen.sql. 1.Toon alle wijnen die er zijn. Toon de naam, kleur en prijs. SELECT `naam`,`kleur`,`prijs` FROM `wijnen`
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Wouter van der Zwan Lezing Draaitabellen Wouter van der Zwan
Het selecteren van data uit meerdere gekoppelde tabellen
SQL Les 01 & 02. SELECT Weergeven van alle gegevens uit een tabel: SELECT * FROM tlbPersonen; Weergeven van alle personen die uit Aruba komen: SELECT.
Sets in een RDBS Een database
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Relationele Databases
Relationele Databases Hoofdstuk 10
Databases.
<Mdl01 hoorcollege 1>
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
Informatica Hoofdstuk 11 LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Hoofdstuk 6: Controle structuren
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Download en installeer de gereedschappen
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Statistische functies (aggregaatfuncties)
Hoofdstuk 16 en 19 PHP en MYSQL
Databases.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
Presentatie bij hoofdstuk 12 van Informatica Edu’Actief
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
7 Databases. STRUCTURED QUERY LANGUAGE Bij het relationele model hoort een programmeertaal waarmee de database benaderd kan worden. In de praktijk wordt.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Hoofdstuk 11 Databasemanagementsystem. hoofdstuk 112 STROKENDIAGRAMMEN llnrvoornaamtussenvachternaamstraathuisnummerpostcodeplaatstelefoongeslachtgebdatumklas.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
BIMAIV03 Les A1 BIMAIV03 Les A1 Databases. De gegevens in een database vormen de grondstof voor informatie De informatie wordt opgevraagd in de taal met.
Analyse 3 INFANL01-3 week 2 CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 2 BIMAIV03 Les A4. Volgorde Soms willen we in het resultaat een bepaalde ordening aanbrengen. Dat doen we met PEILING ORDER BY DatumPartijAantal.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
BIMAIV03 Les A6 BIMAIV03 Les A6. Het resultaat van een query (1) BOEKEN SELECT MAX(prijs) FROM boeken; SELECT MAX(prijs) FROM boeken; BOEKNRTITELUITGEVERPRIJS.
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
Training: Inloggen en Zoeken
Databases.
Training: Inloggen en Zoeken
Informatica-Actief Thema: Databases en informatiemodellering
Training: Inloggen en Zoeken
LauwersCollege Buitenpost Informatica
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
Databases.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
Databases SQL.
Transcript van de presentatie:

LauwersCollege Buitenpost Informatica Informatica klas 5 Hoofdstuk 9 Inleiding Relationele databases en SQL: basis SQL functies subqueries twee tabellen exists oefeningen LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Een aantal termen Database Gegevensbank = verzameling van gegegevens DBMS Database Management systeem Relationeel model Een manier om een database te organiseren, nl. met tabellen Een rij in de tabel: Alle gegevens van een bepaalde kaart of record Kolommen in de tabel: Worden ook wel velden genoemd Een aantal DBMS’en: Access Filemaker Oracle MySQL LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Taken van een databasesysteem Het opslaan van gegevens en het mogelijk maken van wijzigingen Het kunnen opvragen van informatie en het verwerken van informatie Het bewaken van de integriteit (dus het voorkomen van fouten) LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Voorbeeld database De voorbeelden op de volgende dia’s hebben betrekking op de database Bibliotheek, met de volgende tabellen: Tabel: LEERLINGEN LLNR - VOORNAAM - TUSSENVOEGSEL - ACHTERNAAM - STRAAT - HUISNUMMER - POSTCODE - PLAATS - TELEFOON - GESLACHT - GEB_DATUM - KLAS Tabel: AUTEURS AUTEURNR - VOORNAAM - VOORLETTERS - TUSSEN-VOEGSEL - ACHTERNAAM - GEB_DATUM - STERF_JAAR Tabel: BOEKEN BOEKNR - AUTNR - TITEL - RUBRIEK Tabel: EXEMPLAREN EXNR - BOEKNR - UITLEENBAAR - STATUS LauwersCollege Buitenpost Informatica

Kolommen met alleen een nummer Er komen kolommen voor die alleen maar een nummer bevatten: LLNR / AUTEURNR / BOEKNR / EXNR Reden: Een nummer is altijd uniek. Je kunt twee leerlingen met exact dezelfde naam hebben, maar de leerlingennummers verschillen altijd. Met een nummer kun je gemakkelijk verwijzen naar een andere tabel. LauwersCollege Buitenpost Informatica

SQL in Access Basisstructuur van een eenvoudige query LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: select en from SELECT: Achter SELECT geef je de kolommen op die je in de uitvoer wilt zien. Zet je achter select een sterretje in plaats van kolomnamen, dan krijg je de inhoud van alle kolommen op het scherm. FROM: Achter FROM geef je de naam van de tabel (of tabellen) waaruit deze kolommen komen. LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: order by SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN ORDER BY ACHTERNAAM Door de opdracht ORDER BY wordt de lijst gesorteerd. Je kunt ook op twee of meer kolommen laten sorteren, door achter ORDER BY de twee kolommen op te geven. LauwersCollege Buitenpost Informatica

SQL: desc SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM, KLAS FROM LEERLINGEN ORDER BY 3 DESC Nu wordt op de 3e kolom gesorteerd (ACHTERNAAM) DESC betekent: Aflopend (Descending), dus van Z naar A. Als er niets vermeld wordt (of ASC = ascending) wordt oplopend gesorteerd. LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: distinct SELECT PLAATS FROM LEERLINGEN Het resultaat is een lange rij van plaatsnamen. Die plaatsnamen kunnen meerdere keren voorkomen. SELECT DISTINCT PLAATS FROM LEERLINGEN Door DISTINCT wordt elke plaats maar één keer afgedrukt. LauwersCollege Buitenpost Informatica

SQL: where Er kunnen voorwaarden worden gesteld aan de rijen, die moeten worden afgedrukt. Voorwaarden geef je achter het sleutelwoord: WHERE SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM FROM LEERLINGEN WHERE GESLACHT = "M" Alleen de leerlingen, die als geslacht M hebben, worden afgedrukt LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: like Je mag wildcards gebruiken bij de voorwaarden, maar je moet dan geen = maar like als vergelijkingsoperator gebruiken. SELECT VOORNAAM, TUSSENVOEGSEL, ACHTERNAAM FROM LEERLINGEN WHERE VOORNAAM like "M*" Alle leerlingen, waarvan de voornaam met een M begint, worden afgedrukt LauwersCollege Buitenpost Informatica

SQL:Wildcards en vergelijkingsoperatoren: * In Access: er mag alles staan (ook meerdere tekens) % Standaard SQL: er mag alles staan (ook meer tekens) ? In Access: één willekeurig teken _ Standaard SQL: één willekeurig teken < en > Kleiner dan / groter dan <= en >= Kleiner dan of gelijk aan / groter dan of gelijk aan < > Niet gelijk aan LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: is null SELECT * FROM LEERLINGEN WHERE TELEFOON IS NULL Dit betekent: Er is niets ingevuld LauwersCollege Buitenpost Informatica

SQL: Samengestelde voorwaarden Als er aan meer dan één voorwaarde moet worden voldaan gebruik je AND SELECT * FROM LEERLINGEN WHERE ACHTERNAAM = "Bakker" AND TUSSENVOEGSEL = "de" AND VOORNAAM = "Jantine" Alleen de gegevens van Jantine de Bakker worden afgedrukt LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: OR Als aan de ene of aan de andere voorwaarde moet worden voldaan gebruik je OR Deze OR is niet exclusief. D.w.z.: rijen die aan allebei de voorwaarden voldoen worden ook afgedrukt. SELECT * FROM LEERLINGEN WHERE KLAS = "4A" OR KLAS = "4B" Leerlingen die in klas 4A of 4B zitten worden afgedrukt, dus je krijgt een lijstje van de leerlingen van 4a en van 4b LauwersCollege Buitenpost Informatica

Functies in SQL Het aantal getallen of woorden in de kolom COUNT(KOLOMNAAM) SUM(KOLOMNAAM) De som van alle getallen in de kolom MAX(KOLOMNAAM) De grootste waarde in de kolom MIN(KOLOMNAAM) AVG(KOLOMNAAM) De kleinste waarde in de kolom De gemiddelde waarde in de kolom LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: subqueries We willen weten welke leerling de hoogste boete heeft betaald na het lenen van een boek Dat doen we eerst m.b.v. twee queries, of als je de naam van de leerling ook wilt weten, zelfs drie 1: Wat is de maximale boete die betaald is? 2: Welke leerling(en) moesten die boete betalen? Daarna laten we zien hoe het ook met één query kan m.b.v. subqueries LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: subqueries We gaan eerst de maximale boete uitzoeken m.b.v. een query: SELECT MAX (BOETE) FROM UITLENINGEN Die maximale boete blijkt 4 euro te zijn Dan zoeken we uit welk leerlingennummer uit de tabel UITLENINGEN bij die maximale boete hoort. Deze twee queries gaan we combineren tot één query Deze twee queries gaan we combineren tot een query SELECT LLNR FROM UITLENINGEN WHERE BOETE = 4 LauwersCollege Buitenpost Informatica

SQL: subqueries Dit is een subquery SELECT LLNR FROM UITLENINGEN WHERE BOETE = ( SELECT MAX (BOETE) FROM UITLENINGEN ) Nu weet je alleen het LLNR en nog niet de naam. Als je die wilt weten moet er nog een subquery bij. Die staat op de volgende dia LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: subqueries SELECT NAAM, KLAS FROM LEERLINGEN WHERE LLNR IN ( SELECT LLNR FROM UITLENING WHERE BOETE = ( SELECT MAX(BOETE) FROM UITLENINGEN ) ) LauwersCollege Buitenpost Informatica

SQL: Tabellen combineren We willen weten wie de auteur is van het boek met de titel: De woeste wandeling. Daarvoor moeten we twee tabellen combineren: AUTEURS en BOEKEN Deze nummers moeten gelijk zijn Deze nummers moeten gelijk zijn Tabel Boeken: Boeknr Auteurnr Titel Pub_jaar Rubriek 88 47 De woeste wandeling 1981 nederl 89 48 Jan van Gent 1968 Tabel Auteurs: Auteurnr Voornaam Achternaam Geb_jaar 47 Willem Frederik Hermans 1921 48 Ward LauwersCollege Buitenpost Informatica

SQL: subqueries De query, die de naam van de auteur van het boek met de titel De woeste wandeling levert, is: Dit noem je een join SELECT TITEL, VOORNAAM, ACHTERNAAM FROM BOEKEN, AUTEURS WHERE TITEL = "De woeste wandeling" AND BOEKEN.AUTEURNR = AUTEURS. AUTEURNR Denk bij een query met twee tabellen altijd om de join (zie hierboven) LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: GROUP BY Met GROUP BY kun je groeperen: de rijen van een kolom worden ingedeeld in groepen, die dezelfde gegevens in een kolom hebben. Daar kun je dan een functie op toepassen, bijv. het aantal rijen tellen, of de getallen optellen. Voorbeeld: geef de plaatsen, waar leerlingen wonen, met het aantal leerlingen per plaats SELECT PLAATS, COUNT(*) FROM LEERLINGEN Het aantal per plaats wordt geteld GROUP BY PLAATS LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: HAVING Stel je bij het gebruik van GROUP BY een extra voorwaarde aan de uitkomst van de functie, dan doe je dat met HAVING Alleen de plaatsen waar meer dan vijf leerlingen wonen worden afgedrukt SELECT PLAATS, COUNT(*) FROM LEERLINGEN GROUP BY PLAATS HAVING COUNT(*) > 5 LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL: Exists Geef de leerlingen die nooit een boek geleend hebben De query, waarin je om de boeken vraagt die de leerling heeft geleend, moet geen resultaten opleveren! SELECT VOORNAAM, ACHTERNAAM Die zijn er dus niet! FROM LEERLINGEN WHERE NOT EXISTS ( SELECT * FROM UITLENINGEN WHERE UITLENINGEN.LLNR = LEERLINGEN.LLNR) LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL-oefeningen Er komen nu een aantal vragen die betrekking hebben op een database waarin de administratie van rundveehouderijen wordt bijgehouden Bedenk na elke opgave zelf wat de sql-query zal zijn, druk dan op PageDown of klik op de muis LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Rundvee administratie: De tabellen en velden Kolommen of Velden Bedrijven Koeien Tabellen Jaarprod LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica SQL, de basis Geef naam, adres en plaats van het bedrijf met nummer 213 Select naam,adres,plaats From bedrijven Where bedrijfsnr=‘213’ ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Alle kolommen Geef alle gegevens van de koeien van het bedrijf met nummer 213 gesorteerd op geboortedatum Select * From koeien Where bedrijfsnr=‘213’ Order by gebdat ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Duplicaten voorkomen Geef een lijstje van alle plaatsen waar bedrijven zijn gevestigd (elke plaats maar één keer tonen) Select distinct plaats From bedrijven ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Samengestelde voorwaarde Geef de nummers van de koeien die in 2002 een melkproductie hadden van meer dan 8000 kg. Select koenr From jaarprod Where jaar=‘2002’ and kgmelk>8000; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Wildcards Geef naam, adres en plaats van alle bedrijven waarvan de postcode met 92 begint Select naam, adres, plaats From bedrijven Where postcode like ‘92*’ ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica De rijen tellen Geef het aantal koeien dat ze op het bedrijf met nummer 213 hebben Select count(*) From koeien Where bedrijfsnr=‘213’ ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica De som van alle getallen in een kolom Geef het totaal aantal kg. melk dat in 2002 is gemolken Select sum(kgmelk) From jaarprod Where jaar=‘2002’ ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Verdeel in groepjes en tel de aantallen daarin Geef een lijstje van alle bedrijfsnummers met het aantal koeien op dat bedrijf Select bedrijfsnr, count(*) From koeien Group by bedrijfsnr; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Groeperen N.B.:achter group by en achter select altijd dezelfde kolomnamen zetten ! Geef een lijstje van alle koe-nummers met het aantal kg. melk dat ze in totaal hebben gegeven Select koenr, sum(kgmelk) From jaarprod Group by koenr; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Having Geef een lijstje van alle moeders die meer dan 10 kinderen hebben Select moeder, count(*) From koeien Group by moeder Having count(*)>10; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Een subquery Geef het nummer van de koe die in 2002 de grootste hoeveelheid melk gaf Select koenr from jaarprod where Kgmelk=(select max(kgmelk) from jaarprod where jaar=‘2002’) ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Subquery met in Geef een lijstje van de koenummers van de koeien van bedrijven die gevestigd zijn in Oenkerk Select koenr from koeien Where bedrijfsnr in (select bedrijfsnr from bedrijven where plaats = ‘Oenkerk’) ; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Twee tabellen gebruiken Geef van koenr 213 de geboorte-datum en de naam en plaats van het bijbehorende bedrijf Select gebdatum,naam,plaats From bedrijven, koeien Where koenr=‘213’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Drie tabellen gebruiken Geef een lijstje met de nummers en de geboorte-data van de koeien en de naam en plaats van het bedrijf van de koeien die in 2002 meer dan 8000 kg. melk gaven. Select koeien.koenr,gebdat,naam,plaats From bedrijven, koeien, jaarprod Where kgmelk>8000 and jaar=‘2002’ and bedrijven.bedrijfsnr=koeien.bedrijfsnr and koeien.koenr=jaarprod.koenr; LauwersCollege Buitenpost Informatica

LauwersCollege Buitenpost Informatica Exists en not exists Geef alle bedrijfsnrs van bedrijven die geen koeien hebben die meer dan 8000 kg. melk hebben gegeven Select distinct bedrijfsnr from koeien Where not exists (select koenr From jaarprod where kgmelk>8000 And jaarprod.koenr=koeien.koenr); Einde LauwersCollege Buitenpost Informatica