Les 2 Eenvoudige queries
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
Week 1 4 : SQL queries oefeningen Week 5 7 : datamodel ontwerp-opdracht
Front-End Client : Browser Flash Feedreader App URL HTML + CSS (+ JavaScript ) XML WebServer ( + scripting/framework) : PHP ASP JSP SQL querie Datatabel (recordset )/2D-array DataBase ( gegevens ) : mysql Oracle MSSQL
DB: Database Een verzameling tabellen gevuld met data RDBMS: Relationeel Database management systeem Software om een database te creëren en te manipuleren Oracle mysql SQL-server MS ACCESS SQL: Structured Query Language Taal om met een database te praten Informatie selecteren Informatie toevoegen, veranderen, wijzigen Tabellen definiëren Relaties tussen tabellen definiëren
Onderscheid Database-server ( SQL-server, Oracle ) Database-cliënt ( MS ACCESS, web-server ) NB: MS ACCESS kan ook zonder server direct met een database werken
Wat is phpmyadmin? [ ] een database server [ ] een database client
Het selecteren van data uit een enkelvoudige tabel
1 --------------------------- Tabel: rijen en kolommen SELECT FROM WHERE ORDER BY.. 2 -------------------------- Datatypen (numeriek, tekst, boolean, datum/tijd) Diverse functies ( SQL reference ) 3 ---------------------------- Aggregaties en statistieken GROUP BY DISTINCT
Tabellen, bijvoorbeeld : telefoonnummers
Data met betrekking tot één entiteit (persoon)
Data-element
SELECT ID, naam, prijs FROM product SELECT {kolomnamen} FROM {tabelnaam}
Het resultaat van een SQL query is altijd een tabel. SELECT ID, naam, prijs FROM product! ID naam prijs 1 Koken voor 20,10 7 appelsap 2,95 8 groentensoep 2,15 9 blik tonijn 3,10
SELECT id, naam, prijs FROM product WHERE categorie = voedsel ORDER BY prijs SELECT {kolomnamen} FROM {tabelnaam} WHERE {criteria} ORDER BY {kolomnaam}
SELECT ID, naam, prijs FROM product WHERE categorie = voedsel ORDER BY prijs! ID naam prijs 8 groentensoep 2,15 7 appelsap 2,95 9 blik tonijn 3,15
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]
Doe je eerste SQL querie op de producten -database (t/m vraag 7) SELECT FROM WHERE ORDER BY!
Type informatie in een veld Bepaalt het soort operaties dat je er op kan uitvoeren. basis datatypen en operaties Numeriek Tekst Boolean optellen, aftrekken, gemiddelde aan_elkaar_plakken, substring, teveel_spaties_verwijderen, zoek_en_vervang and, or, not Binair/BLOB geen operaties Datum/tijd speciale rekenoperaties Lange tekst
Operaties: Optellen, aftrekken, delen, percentages Vergelijkingen: >, <, = Subtype: -integer -float
Operaties: Zoek en vervang Hoofdletters zetten Aan elkaar plakken Reguliere expressies (voor gevorderden ) Vergelijkingen: =, LIKE, bevat, begint_met Subtype - Varchar (255) - Text
Operaties: And, Or, Not Vergelijkingen: IS
Operaties: Er bestaan speciale databases met speciale functies voor speciale objecten als beeld en geluid Vergelijkingen: NB: Vaak niet in een database maar als aparte bestanden, wel bestandsnaam in de database
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 Speciale operaties, zoals maand(), tijdsverschill() Subtype: - Date - Time
Operaties (optellen, aftrekken, vermengvuldigen) YEAR(), MONTH(), DAY, WEEKDAY() HOUR(), MINUTE(),SECOND() DATEDIFF(), TIMEDIFF() DATE_FORMAT() Zie reference!
Type informatie in een veld Bepaald het soort operaties en vergelijkingen 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
Welk datatype moet je definiëren voor: Telefoonnummer? Huisnummer? Leeftijd? Numeriek? Tekst? Boolean? Datum/tijd?
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_btw fiets 100 120 brood 1 1,05 boek 30 36
SELECT naam, SUBSTRING( omschrijving,1,6 ) AS omschr FROM product" naam omschr fiets een le appelsap sap va blik tonijn blik t
SELECT naam, prijs FROM product WHERE categorie = eten AND prijs < 5 ORDER BY producent, prijs Logische operaties: AND, OR, NOT Vergelijkingen: =, >, <, <>, <=, >=, LIKE
Selecteer de naam en de leeftijd van alle producten die u beschikbaar zijn. SELECT naam, beschikbaar_vanaf, DATEDIFF( 'yyyy', beschikbaar_vanaf, DATE() ) AS leeftijd FROM product; WHERE beschikbaar_vanaf <= DATE() Naam beschikbaar_vanaf leeftijd fiets 1-1-2003 1 brood 1-2-1999 5 boek 3-2-2004 0
geen niks afwezig niet ingevuld leeg Operatie: IS NULL() test of een waarde NULL is.
Gebruik de (my)sql reference :
Doe je de volgende SQL queries op de producten -database (t/m vraag 14) SELECT FROM WHERE ORDER BY!
Dwz: Informatie uit een tabel als geheel (ipv uit een rij) Voorbeelden: Gemiddelde prijs Aantal producten Hoogste aantal in voorrad
SELECT COUNT(*) AS aantal, AVG(prijs) AS midprijs, MAX(prijs) AS maxprijs, MIN(prijs) AS minprijs FROM product Aantal midprijs maxprijs minprijs 11 1188 8000 2.05
SELECT categorie, COUNT(*) AS aantal, AVG(prijs) AS midprijs, MAX(prijs) AS maxprijs, MIN(prijs) AS minprijs FROM product GROUP BY categorie Categorie aantal midprijs maxprijs minprijs boek 5 30,38 50 20 voedsel 3 2996 8000 300 vervoer 3 2,75 3,15 2.05
GROUP BY Alleen in combinatie met een statistische functie bijv.: gemiddelde prijs per categorie ORDER BY Sortering van rijen op volgorde van iets
Rijen Selecteren van kolommen (hst 2) Sorteren (hst 3) Filteren van rijen (hst 4,5,6) Berekeningen in kolommen (hst 7,8) Aggregaties/statistieken Statistieken ( hst 9 ) Groeperen ( hst 10 ) Lijst van voorkomende waarden (? )
SELECT DISTINCT categorie, FROM product categorie vervoer voedsel boek Is hetzelfde als: SELECT categorie FROM product GROUP BY categorie!
Doe de oefeningen uit de reader! Maak met mysqlworkbench een tabel met persoonsgegevens van klasgenoten
Meerdere tabellen in de database