Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G319 4 4 HomePage: te bereiken via

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Computervaardigheden
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Hoofdstuk 8: Werken met SQL voor eindgebruikers
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Relationele databases en
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 - -
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>
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Overzicht databanken - Oefeningen
Databanken by Steven Stinis.
Relationele databases: Fysiek databaseontwerp en SQL
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.
Databases I Relationeel Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam definitieve versie 2002.
Workshop PHP Een productencatalogus Met database.
Statistische functies (aggregaatfuncties)
Databases.
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.
Vakgroep Telecommunicatie en Informatieverwerking 1 Relationele databases: Het relationeel databasemodel Hoofdstuk 4 Database, Document and Content Management.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Databases I Het Entity-Relationship Model
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
Analyse 3 INFANL01-3 week 3 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 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.
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.
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.
1 februari 2016 PHP expressie statement. 1 februari 2010 Titel van de presentatie 2 Boole logica? Definitie De booleaanse operatoren zijn genoemd naar.
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
– Software development fundamentals
LauwersCollege Buitenpost Informatica
SQL Les February 2019.
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 7 24 February 2019.
SQL Les 1 5 April 2019.
SQL Les 6 14 April 2019.
SQL en Datanormalisatie
SQL Les 9 12 May 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
SQL Les May 2019.
Software Development fundamentals
Databases SQL.
Transcript van de presentatie:

Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via

Inleiding Databanken: leerstof 4 SQL –DDL & DML: syntax en toepassingen 4 Relationeel model en relationele algebra 4 Domein & tuple calculus 4 Entity Relationship modeling 4 FA’s & Normalisatie

Relational model:overzicht

Relational model Herhaling terminologie

Relatie (tabel) Een relatie is een tabel met kolommen en rijen.

Attribuut Een attribuut is een kolom van een relatie

Tupel Een tupel is een rij van een relatie.

Domein Een domein is een verzameling van toegelaten waarden voor 1 of meerdere attributen. Voorbeelden (informeel) van domeinen voor attributen zijn “integers”, “strings”, “datum”, …

Relationele databank Een relationele databank is een collectie van relaties (tabellen)

Relational model:overzicht

Superkey Een attribuut of een verzameling van attributen die elk tuple uniek identificeert binnen een relatie.

Candidate key 4 Een superkey {K} zodanig dat geen enkele echte deelverzameling van K een superkey is. 4 Elk tuple van R wordt door de waarde van K uniek geidentificeerd (uniciteit). 4 Geen enkele echte deelverzameling van K heeft de uniciteit eigenschap.

Primary key De candidate key die gekozen werd om tuples uniek te identificeren in een relatie

Foreign key Een attribuut of een verzameling van attributen binnen een relatie die overeenkomt met een candidate key van een andere relatie.

Relational model: keys

Structured Query Language (SQL)

SQL: doel 4 Een database taal moet de gebruiker 3 zaken toelaten: - de relationele databank creeren - de relationele databank populeren - (simpele en minder simpele) queries uitvoeren 4 2 delen: - DDL voor het definieren van de databank struktuur - DML voor het opvragen en updaten van tupels

SQL: kenmerken 4 SQL bevat geen control flow commando’s. 4 SQL is een “non-procedural language”, d.w.z. dat je specificeert wat je wil, in plaats van hoe je het wil bekomen.

Algemene SQL Statement SELECT [ DISTINCT | ALL ] { * | attribuut (-expressie) [ AS new_name] [,...] } FROM relatie [alias_name] [,...] [ WHERE conditie] [ GROUPBY column_list] [ HAVING condition] [ ORDER BY column_list]

Algemene SQL Statement SELECT [ DISTINCT | ALL ] { * | attribuut (-expressie) [ AS new_name] [,...] } FROM relatie [alias_name] [,...] [ WHERE conditie] [ GROUPBY column_list] [ HAVING condition] [ ORDER BY column_list]

Algemene SQL Statement SELECT [ DISTINCT | ALL ] { * | attribuut (-expressie) [ AS new_name] [,...] } FROM relatie [alias_name] [,...] [ WHERE conditie] [ GROUPBY column_list] [ HAVING condition] [ ORDER BY column_list]

Algemene SQL Statement SELECT [ DISTINCT | ALL ] { * | attribuut (-expressie) [ AS new_name] [,...] } FROM relatie [alias_name] [,...] [ WHERE conditie] [ GROUPBY column_list] [ HAVING condition] [ ORDER BY column_list]

De basis SELECT statement 4 SELECT: specificeert welke attributen (kolommen) in het resultaat moeten verschijnen 4 FROM: specificeert de te gebruiken relatie(s) 4 WHERE: filtert de tupels in het resultaat door test van een bepaalde conditie

De basis SELECT statement: simpel voorbeeld 4 Vind naam en voornaam van alle studenten die in het derde jaar zitten

De basis SELECT statement: simpel voorbeeld 4 SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 4 Vind naam en voornaam van alle studenten die in het derde jaar zitten

De basis SELECT statement: simpel voorbeeld 4 SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Relatie

De basis SELECT statement: simpel voorbeeld 4 SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Attribuut Relatie Attribuut

De basis SELECT statement: simpel voorbeeld 4 SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3 Conditie Attribuut Relatie Attribuut

SQL Data Manupilation Language: Specificatie

SQL: alle attributen en tupels teruggeven 4 SELECT StudentFirstname, StudentSecondname, StudentID, StudentDateOfBirth,StudentGrade FROM Student

SQL: alle attributen en tupels teruggeven 4 SELECT StudentFirstname, StudentSecondname, StudentID, StudentDateOfBirth,StudentGrade FROM Student 4 Equivalent: SELECT * FROM Student

Specifiek attribuut, alle tupels teruggeven 4 Geef alle voornamen van studenten terug 4 SELECT StudentFirstname FROM Student 4 Geef alle voor- en familienamen van studenten terug 4 SELECT StudentFirstname, StudentSecondname FROM Student

DISTINCT 4 Elimineert dubbels

DISTINCT 4 Elimineert dubbels 4 Geef alle verschillende voornamen van studenten 4 SELECT DISTINCT StudentFirstname FROM Student

Hernoemen van kolommen: AS 4 Gebruik AS om kolommen te hernoemen 4 SELECT DISTINCT StudentFirstname AS VoornamenZonderDubbels FROM Student

Tupel selectie 4 Gebruik WHERE (conditie) 4 Geef naam en voornaam van alle studenten die in het 3de jaar zitten 4 SELECT StudentSecondname, StudentFirstname FROM Student WHERE StudentGrade = 3;

Toegelaten in de WHERE clause 4 =,, =, 4 Logische operatoren: OR, AND, NOT 4 Volgorde van evaluatie: – van links naar rechts –subexpressies tussen haakjes eerst geevalueerd –NOT wordt vóór AND en OR geevalueerd –AND wordt geevalueerd voor OR

Range conditie: BETWEEN/ NOT BETWEEN 4 Waarden binnen een bepaald interval 4 Geef voor- en familienaam terug van alle studenten die geboren zijn in SELECT StudentFirstname, StudentDateOfBirth FROM Student WHERE StudentDateOfBirth BETWEEN # # AND # #;

Pattern matching: LIKE 4 % doet dienst al wildcard (nul of meer characters) 4 _ (underscore) stelt exact 1 character voor 4 SELECT StudentFirstname FROM Student WHERE StudentFirstname LIKE '%an%';

Testen op NULL: IS NULL / IS NOT NULL 4 NULL stelt een onbekende waarde voor in een tabel 4 Geef voornaam en studiejaar terug van alle studenten waarvan de geboortedatum gekend is 4 SELECT StudentFirstname, StudentGrade FROM Student WHERE StudentDateOfBirth IS NOT NULL

Resultaten sorteren: ORDER BY 4 ORDER BY wordt gebruikt om het resultaat van een query te sorteren 4 ORDER BY kan stijgend (ASC) of dalend (DESC)

Resultaten sorteren (ORDER BY) 4 ORDER BY wordt gebruikt om het resultaat van een query te sorteren 4 ORDER BY kan stijgend (ASC) of dalend (DESC) 4 Geef de voornamen terug van alle studenten gerangschikt per jaar (laagste jaar eerst) 4 SELECT StudentFirstname, StudentGrade FROM Student ORDER BY StudentGrade ASC

Ordenen naar meerdere kolommen 4 Geef alle voornamen van studenten gerangschikt per jaar en alfabetisch gerangschikt (per jaar)

Ordenen naar meerdere kolommen 4 Geef alle voornamen van studenten gerangschikt per jaar en alfabetisch gerangschikt (per jaar) 4 SELECT StudentFirstname, StudentGrade FROM Student ORDER BY StudentGrade, StudentFirstname

Aggregate functions (1/4) 4 COUNT: geeft het aantal waarden in een kolom terug 4 SUM: geeft de som van de waarden in een kolom terug 4 AVG: geeft het gemiddelde van de waarden in een kolom terug 4 MIN: geeft de kleinste waarde van een kolom terug 4 MAX: geeft de grootste waarde van een kolom terug

Aggregate functions (2/4) 4 Alle aggregate functions gaan over 1 kolom van een relatie, en geven 1 waarde terug 4 COUNT, MIN en MAX kunnen niet numerieke domeinen aan, SUM en AVG kunnen enkel gebruikt worden met numerieke waarden 4 Al deze functies elimineren eerst NULL waarden ( uitgezonderd COUNT (*) )

Aggregate functions (3/4) 4 Aggregate functies kunnen ENKEL gebruikt worden in de SELECT clause en de HAVING clause (zie verder) 4 SELECT StudentFirstName FROM Student WHERE MIN(StudentDateOfBirth)

Aggregate functions (4/4) 4 Als een SELECT clause een aggregate function bevat en er wordt geen GROUP BY clause gebruikt, dan kan de SELECT clause geen kolom referenties bevatten tenzij die kolom in een aggregate wordt gebruikt 4 SELECT StudentID, COUNT(StudentGrade) FROM Student

Count: voorbeeld 4 Hoeveel studenten zijn ingeschreven in het 2de jaar? 4 SELECT COUNT(StudentFirstname) FROM Student WHERE StudentGrade = 2

COUNT en DISTINCT: voorbeeld 4 Hoeveel verschillende voornamen komen voor onder de studenten? 4 SELECT COUNT(DISTINCT StudentFirstname) AS DifferentNames FROM Student

COUNT en AVG: voorbeeld 4 Vind het totaal aantal studenten en hun gemiddelde studiejaar die niet geboren zijn in SELECT COUNT(StudentFirstname) AS AantalStudenten, AVG(StudentGrade) AS GemiddeldeStudiejaar FROM Student WHERE StudentDateOfBirth NOT BETWEEN # # AND # #

MIN MAX AVG: voorbeeld 4 Geef de leeftijd van de oudste en jongste student terug 4 SELECT MIN(StudentDateOfBirth) AS Oudste, MAX(StudentDateOfBirth) AS Jongste FROM Student

Subqueries 4 Subqueries kunnen gebruikt worden in de WHERE en HAVING (zie verder) clauses 4 Drie soorten: –Scalaire subquery: geeft een enkele waarde terug –Rij subquery: geeft meerdere attributen (kolommen) terug, maar slechts 1 enkele tupel (rij) –Table subquery: geeft een relatie (tabel) terug

Subqueries: voorbeeld 4 Geef de voornamen van alle studenten terug die geboren zijn op dezelfde dag als de student met StudentID 1. 4 SELECT StudentFirstname FROM Student WHERE StudentDateOfBirth = (SELECT StudentDateOfBirth FROM Student WHERE StudentID = 1)

Subquery met aggregate function (1/2) 4 Geef de namen terug van alle studenten die in een hoger jaar zitten dan de gemiddelde student 4 SELECT StudentFirstname FROM Student WHERE StudentGrade > (SELECT AVG(StudentGrade) FROM Student)

Subquery met aggregate function (2/2) 4 Merk op dat we hier niet kunnen schrijven: SELECT StudentFirstname FROM Student WHERE StudentGrade > AVG(StudentGrade) 4 Aggregate functions mogen immers enkel gebruikt worden in de SELECT en HAVING clause, niet in de WHERE clause.

Subquery met aggregate function: rules (1/2) 4 ORDER BY mag niet gebruikt worden in een subquery 4 De SELECT lijst in de subquery moet bestaan uit 1 enkele attribuutnaam of expressie, behalve voor subqueries die het keyword EXISTS gebruiken (zie verder) 4 Attribuutnamen in de subquery verwijzen by default naar de tabel in de FROM clause van de subquery.

Subquery met aggregate function: rules (2/2) 4 Wanneer de subquery voorkomt als operand in een vergelijking, dan moet de subquery de rechtse operand zijn SELECT StudentFirstname FROM Student WHERE (SELECT AVG(StudentGrade) FROM Student) < StudentGrade

Nested subqueries; gebruik van IN: voorbeeld 4 Geef de voornamen terug van alle studenten die geboren zijn tussen het geboortejaar van de student met studentenummer 7 en voor 1980

Nested subqueries; gebruik van IN: voorbeeld SELECT StudentFirstname FROM Student WHERE StudentDateOfBirth IN (SELECT StudentDateOfBirth FROM Student WHERE StudentDateOfBirth BETWEEN (SELECT StudentDateOfBirth FROM Student WHERE StudentID = 7) AND # #);

Nested subqueries; gebruik van IN: opmerkingen 4 De query wordt uitgevoerd van binnen naar buiten 4 Merk op dat we hier niet de gelijkheids conditie kunnen gebruiken, gezien er meerdere geboortedata tussen de opgegeven tijdstippen kunnen vallen, in plaats wordt IN gebruikt

ANY/SOME en ALL (1/2) 4 ANY/SOME en ALL kunnen gebruikt worden in subqueries die een kolom met meerdere waarden teruggeven 4 Als de subquery voorafgegaan wordt door ALL dan zal de conditie waar zijn enkel en alleen indien ze geldt voor ALLE waarden geproduceerd door de subquery

ANY/SOME en ALL (2/2) 4 Als de subquery voorafgegaan wordt door SOME dan zal de conditie waar zijn enkel en alleen indien ze geldt voor een (een of meerdere) waarde geproduceerd door de subquery 4 ANY en SOME zijn synoniemen 4 Als de subquery leeg is, dan geeft ALL true terug, ANY geeft false terug

ANY / SOME: voorbeeld 4 Geef de voornamen van alle studenten die jonger zijn (=later geboren) zijn dan ten minste 1 student uit het 2de jaar 4 SELECT StudentFirstname FROM Student WHERE StudentDateOfBirth > SOME (SELECT StudentDateOfBirth FROM Student WHERE StudentGrade = 2)

Oefeningen Databank 4 Server / host: wendy.vub.ac.be 4 Poort: Initiele databank:, bijv. ‘CasteleynSven’ 4 Login:, bijv. ‘CasteleynSven’ 4 Paswoord: database_01