310 likes | 428 Views
Download en installeer de gereedschappen. XAMP Apache server ( http ) mySql server PHP myAdmin IAM SQL oefeningen Database phpmyAdmin Import : sql_producten.sql , sql_winkel.sql, sql_festival.sql SAMS’ SQL in 10 minuten mySQL reference. SQL en database ontwerp.
E N D
Download en installeer de gereedschappen • XAMP • Apache server ( http ) • mySql server • PHP myAdmin • IAM SQL oefeningen Database • phpmyAdmin Import : sql_producten.sql , sql_winkel.sql, sql_festival.sql • SAMS’ SQL in 10 minuten • mySQL reference
SQL en database ontwerp • Deel 1 ( week 2 – 5 ) • SQL queries • Deel 2 ( week 6 – 9 ) • datamodelleren
Hoe zit data in een database?tabel Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
rij Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
kolom Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
veld Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
datatype Type informatie in een veld • Bepaalt het soort operaties dat je er op kan uitvoeren. basis datatypen • Numeriek optellen, aftrekken, gemiddelde • Tekst aan_elkaar_plakken, substring, teveel_spaties_verwijderen, zoek_en_vervang • Boolean and, or, xor, not • Binair/BLOB geen operaties • Datum/tijd • Lange tekst • XML
BLOB Binary large object Bijv: beeldmateriaal, geluid, bestanden. Operaties: geen Vaak niet in een database maar als aparte bestanden, wel bestandsnaam in de database Er bestaan speciale databases met speciale functies voor speciale bestanden
Speciale datatype: datum/tijd Datum/tijd • Eigenlijk ‘numeriek’: • aantal milliseconden sinds het jaar nul ( of sinds 1900 ) • Echter : • Speciale onregelmatige rekeneenheden ( maanden, schrikkeljaar, etc ) • Speciale manier van weergeven ‘1-1-2004’ of ‘2004-01-01’ of ‘1 jan 2004’ Subtype: • Date • Time
XML in een database • XML als datatype: • XML data opgeslagen in een database-veld • Speciale XML functies • SQL/XML standaard wordt nog niet door alle RDBMS’s ondersteund • NB: geen stof voor tentamen, wel mogelijkheid tot bonuspunten
Basis datatype Type informatie in een veld • Bepaald het soort operaties dat je er op kan uitvoeren. basis datatypen die in iedere database of programmeertaal op één of andere manier worden ondersteund: • Numeriek • Tekst • Boolean • Binair • Datum/tijd • XML
Vraag? Welke data type is • Telefoonnummer? • Huisnummer? • Leeftijd? Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
En dan nu... SQL Structured Query Language • Een taal om database te bevragen en te manipuleren. • Als sinds begin 70 relatief stabiel • Ondersteund door ieder DBMS Selecteren en wijzigen van opgeslagen gegevens Aanbrengen/veranderen van de structuur van de database
Syntax van een eenvoudige SELECT • SELECT ID,naam, prijs FROM product • SELECT {kolomnamen} FROM {tabelnaam}
SELECT resultaat • Het resultaat van een SQL query is altijd een tabel. SELECT ID, naam, prijs FROM product • ID naam prijs1 Koken voor … 20,107 appelsap 2,958 groentensoep 2,159 blik tonijn 3,10
Syntax van een eenvoudige SELECT • SELECT ID,naam, prijs FROM product WHERE categorie = ‘voedsel’ ORDER BY prijs • SELECT {kolomnamen} FROM {tabelnaam} WHERE {criteria} ORDER BY {kolomnaam}
SELECT resultaat SELECT ID, naam, prijs FROM productWHERE categorie =‘voedsel’ORDER BY prijs • ID naam prijs8 groentensoep 2,157 appelsap 2,959 blik tonijn 3,15
Korte opdracht (10 min ) • Doe je eerste SQL querie op de ‘producten’-database SELECT …FROM …WHERE …ORDER BY …
Syntax van een eenvoudige SELECTvariaties • SELECT naam, prijs FROM product WHERE categorie = ‘boek’ ORDER BY prijs • SELECT product.naam, product.prijs FROM product WHERE product.categorie = ‘boek’ ORDER BY product.prijs • SELECT [product.naam], [product.prijs] FROM product WHERE [product.categorie] = ‘boek’ ORDER BY [product.prijs]
SELECT WHERE • SELECT naam, prijs FROM product WHERE categorie = ‘eten’ AND prijs < 5 ORDER BY producent ,prijs DESC • Logische operaties: AND, OR, NOT • Vergelijkingen: =, >, < , <> , <=, >=, LIKE
Berekeningen in SELECT (numeriek) • Selecteer de naam, prijs en prijs_plus_btw • SELECT naam, prijs, prijs + prijs* btw_tarief/100 AS prijs_met_btw FROM product • Naam prijs prijs_met_btwfiets 100 120brood 1 1,05 boek 30 36
Berekeningen in SELECT (datum) • Selecteer de naam en de ‘leeftijd’ van een product • SELECT naam, beschikbaar_vanaf, DATEDIFF( 'yyyy' , beschikbaar_vanaf , DATE() ) AS leeftijdFROM product; WHERE beschikbaar_vanaf <= DATE() • Naam beschikbaar_vanaf leeftijdfiets 1-1-2003 1brood 1-2-1999 5 boek 3-2-2004 0
Functies en operatoren • Gebruik de (my)SQL reference :
Aggregaties/statistieken • Dwz: • Informatie uit een tabel als geheel (ipv uit een rij) Voorbeelden: • Gemiddelde • Aantal • Hoogste
Verschillende soorten selecties • Rijen • Selecteren van kolommen (hst 2) • Sorteren (hst 3) • Filteren van rijen (hst 4,5,6) • Het berekenen van kolommen (hst 7,8) • Aggregaties • Statistieken ( hst 9 ) • Groeperen ( hst 10 ) • Lijst van voorkomende waarden ( ? ) Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
statistieken • SELECT COUNT(*) AS aantal, AVG(prijs) AS midPrijs, MAX(prijs) AS maxPrijs, MIN(prijs) AS minPrijsFROM product • Aantal midPrijs maxPrijs minPrijs11 1188 8000 2.05 Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Statistieken per groep • SELECT categorie, COUNT(*) AS aantal, AVG(prijs) AS midPrijs, MAX(prijs) AS maxPrijs, MIN(prijs) AS minPrijsFROM productGROUP BY categorie • Categorie aantal gemPrijs maxPrijs minPrijsboek 5 30,38 50 20voedsel 3 2996 8000 300vervoer 3 2,75 3,15 2.05
GROUP BY vs ORDER BY GROUP BY: Alleen in combinatie met eenstatistischefunctie gemiddeldeprijsper categorie ORDER BYSortering van rijen Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - j.meuwese@interactievemedia.hva.nl - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Speciaal geval: SELECT DISTINCT • SELECT DISTINCT categorie, FROM product • categorievervoervoedselboek Is hetzelfde als: • SELECT categorie FROM productGROUP BY categorie
oefenen • Doe de oefeningen uit de reader !
Volgende week • Meerdere tabellen in de database