Relationele Databases Hoofdstuk 10

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
SQL Les 01 & 02. SELECT Weergeven van alle gegevens uit een tabel: SELECT * FROM tlbPersonen; Weergeven van alle personen die uit Aruba komen: SELECT.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Relationele Databases
Databases.
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
LauwersCollege Buitenpost Informatica
Informatica Hoofdstuk 11 LauwersCollege Buitenpost Informatica
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
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 - -
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Workshop PHP Een productencatalogus Met database.
Statistische functies (aggregaatfuncties)
Werken met een adressenbestand
Werken met een adressenbestand in Word 2010 wo
Databases.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
Presentatie bij hoofdstuk 12 van Informatica Edu’Actief
havo B Samenvatting Hoofdstuk 1
Klikdemo: CRM registreren acties Versie: Academie Werkbedrijf Doel klikdemo In deze klikdemo leer je hoe je bij een werkgever acties kunt registreren,
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.
Unfold your potential Excellente Excel-tips Februari 2015.
?.
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.
Let’s go! ›Beginnerspresentatie ›Starten met prospero ›Verschil CMS en web navigator ›Nieuwe content > nieuwe folder aanmaken ›Bestanden uploaden ›Linkobject.
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 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Week 1 BIMAIV03 Les B2 BIMAIV03 Les B2. Uit het voorgaande... CREATE TABLE... Opdracht om een nieuwe tabel binnen de database te creëren. Aandachtspunten.
Invullen van de tevredenheidspeiling door ouders via het Ouderportaal.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
Trimester 2. Hfdst 1: e-Presentatie, master! e-Presentatie Met de hulp van Powerpoint gaan we leren hoe we een elektronische presentatie kan maken.
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.
Informatica-Actief Thema: Databases en informatiemodellering
LauwersCollege Buitenpost Informatica
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
Databases.
SQL Les February 2019.
SQL Les 3 23 February 2019.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
Databases SQL.
Transcript van de presentatie:

Relationele Databases Hoofdstuk 10 Giel Jacobs oktober 2003

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

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

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

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

Relationeel model Kolommen Kolommen Kolommen Kolommen Kolommen Rijen Rijen Rijen Rijen Rijen Giel Jacobs oktober 2003

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

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 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. Leerling Klas: Jan Jansen 4B Gegevens in de regels Giel Jacobs oktober 2003

Voorbeeld database Een database met informatie over de schoolbibliotheek Deze database bevat 6 tabellen Elke tabel bevat een aantal kolommen Giel Jacobs oktober 2003

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

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

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

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

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

Microsoft Access & SQL Kies de tab Query’s Giel Jacobs oktober 2003

Microsoft Access & SQL Kies daarna voor: Nieuw Giel Jacobs oktober 2003

Microsoft Access & SQL Kies dan voor: Ontwerpweergave En druk daarna op: OK Giel Jacobs oktober 2003

Kies Sluiten in de tabel Toevoegen Microsoft Access & SQL Kies Sluiten in de tabel Toevoegen Giel Jacobs oktober 2003

En kies daarna voor: SQL Microsoft Access & SQL Kies voor: Beeld En kies daarna voor: SQL Giel Jacobs oktober 2003

Microsoft Access & SQL Of kies meteen: SQL Giel Jacobs oktober 2003

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

Basisstructuur van een eenvoudige query Microsoft Access & SQL Basisstructuur van een eenvoudige query Giel Jacobs oktober 2003

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 = 25.300 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

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

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

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