sql deel 1: sql queries
DESCRIPTION
SQL deel 1: SQL queries. Database Architectuur. Een datamodel is het fundament van je toepassing:. Sql, php, html enzo. Front-End Client : Browser | Flash | Feedreader | …. URL. HTML + CSS (+ JavaScript ) | XML. WebServer ( + scripting) : PHP | ASP | JSP. SQL querie. - PowerPoint PPT PresentationTRANSCRIPT
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SQL deel 1:SQL queries
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Database Architectuur
Een datamodel is het fundament van je toepassing: User interfase
Bussines logic
Data repository
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Sql, php, html enzo
DataBase ( gegevens ) : mySQL| Oracle | MSSQL
WebServer ( + scripting) : PHP | ASP | JSP
SQL querie Datatabel (recordset )
Front-End Client : Browser | Flash | Feedreader | …
URL HTML + CSS (+ JavaScript ) | XML
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Wat is een database DB: Database
Een verzameling tabellen gevuld met data
DBMS: 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
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Client-Server architectuur
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
DBMSServer
DBClientDB
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SQL 1 : SELECT
Het selecteren van data uit een enkelvoudige tabel
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Tabel: rijen en kolommen
Datatype: tekst, getal, datum, etc…
Selecties uit één tabel: SELECT query Selectie criteria Berekeningen Statistieken Groeperen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
tabellen
Een database bestaat uit een verzameling tabellen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Hoe zit data in een database?
Tabellen, bijvoorbeeld : telefoonnummers
Bert Jansen 062234763Bert de Jong 069867543Fred Zaanstra 064383489Els Romein 064359349Floor Kamp 064309934Maud Ooster 069039034
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
tabel
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
rij
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
kolom
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
veld
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
‘Datatype’
De informatie in de cellen van een kolom zijn allemaal van hetzelfde ‘type’
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - 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 *
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
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’
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Speciaal datatype: lange tekst
Tekst kan worden onderverdeeld in Korte tekst ( <255 karakters ) Lange tekst ( >255 karakter )
Slecht een puur technische onderscheidHeeft te maken met Efficiënt gebruik van geheugenruimte. Andere manier van zoeken
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Onzinnige datatypen in ACCESS
Valuta Hyperlink
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
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 Lange tekst
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Vraag?
Welke data type is Telefoonnummer? Huisnummer? Leeftijd?
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - 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
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
‘SELECT’ query
Het selecteren van informatie uit een tabelbijvoorbeeld ‘product’ -tabel selecteer productnamen en productprijzen uit de
tabel ‘product’ selecteer namen van producten uit de categorie
'boeken' Selecteer alle producten die duurder zijn dan 5 euro
Selecteer een lijst met alle categorie-namen Selecteer de gemiddelde prijs van de producten per
categorie
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
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 Lijst van voorkomende waarden ( ? ) Statistieken ( hst 9 ) Groeperen ( hst 10 )
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Syntax van een eenvoudige SELECT
SELECT ID, naam, prijsFROM productWHERE categorie = ‘boek’ORDER BY prijs
SELECT {kolomnamen}FROM {tabelnaam}WHERE {criteria}ORDER BY {kolomnaam}
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SELECT resultaat
Het resultaat van een SQL query is altijd een tabel.
ID naam prijs8 groentensoep 2,157 appelsap 2,959 blik tonijn 3,15
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Syntax van een eenvoudige SELECTvariaties
SELECT naam, prijsFROM productWHERE categorie = ‘boek’ORDER BY prijs
SELECT product.naam, product.prijsFROM productWHERE product.categorie = ‘boek’ORDER BY product.prijs
SELECT [product.naam], [product.prijs]FROM productWHERE [product.categorie] = ‘boek’ORDER BY [product.prijs]
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SELECT WHERE
SELECT naam, prijs FROM productWHERE categorie = ‘eten’
AND prijs < 5ORDER BY producent, prijs
Logische operaties: AND, OR, NOT
Vergelijkingen: =, >, < , <> , <=, <=, LIKE
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Berekeningen in SELECT (numeriek)
Selecteer de naam, prijs en prijs_plus_btw
SELECT naam, prijs, prijs + prijs* btw_tarief/100 AS prijs_met_btwFROM product
Naamprijs prijs_met_btwfiets 100 120brood 1 1,05boek30 36
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
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 leeftijdfiets1-1-2003 1brood1-2-1999 5boek 3-2-2004 0
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SELECT
Tot nu toe: Selecteren van rijen uit een tabel
Kolommen Rijen filteren Berekende kolommen
Ook mogelijk: Aggregatie functies
Gemiddelde prijs van de producten Gemiddelde prijs per categorie Lijst van alle categorieën Lijst van producenten met meer dan één product
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
SELECT DISTINCT
SELECT DISTINCT categorie, producent
FROM product
categorievervoervoedselboek
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - 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 minPrijs
FROM product
Aantal midPrijs maxPrijs minPrijs11 1188 8000 2.05
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - 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 minPrijs
FROM productGROUP BY categorie
Categorie aantal gemPrijs maxPrijs minPrijsboek 5 30,38 50 20voedsel 3 2996 8000 300vervoer 3 2,75 3,15 2.05
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - [email protected] - http://oege.ie.hva.nl/~meuwj/ - http://hva.jochem.nl
Herhaal: 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 Lijst van voorkomende waarden ( ? ) Statistieken ( hst 9 ) Groeperen ( hst 10 )