34
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

SQL deel 1: SQL queries

  • Upload
    vernon

  • View
    178

  • Download
    3

Embed Size (px)

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 Presentation

Citation preview

Page 1: 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

SQL deel 1:SQL queries

Page 2: 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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

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

Page 6: 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

SQL 1 : SELECT

Het selecteren van data uit een enkelvoudige tabel

Page 7: 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

Tabel: rijen en kolommen

Datatype: tekst, getal, datum, etc…

Selecties uit één tabel: SELECT query Selectie criteria Berekeningen Statistieken Groeperen

Page 8: 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

tabellen

Een database bestaat uit een verzameling tabellen

Page 9: 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

Hoe zit data in een database?

Tabellen, bijvoorbeeld : telefoonnummers

Bert Jansen 062234763Bert de Jong 069867543Fred Zaanstra 064383489Els Romein 064359349Floor Kamp 064309934Maud Ooster 069039034

Page 10: 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

tabel

Page 11: 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

rij

Page 12: 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

kolom

Page 13: 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

veld

Page 14: 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

‘Datatype’

De informatie in de cellen van een kolom zijn allemaal van hetzelfde ‘type’

Page 15: 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

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 *

Page 16: 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

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’

Page 17: 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

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

Page 18: 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

Onzinnige datatypen in ACCESS

Valuta Hyperlink

Page 19: 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

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

Page 20: 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

Vraag?

Welke data type is Telefoonnummer? Huisnummer? Leeftijd?

Page 21: 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

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

Page 22: 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

‘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

Page 23: 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

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 )

Page 24: 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

Syntax van een eenvoudige SELECT

SELECT ID, naam, prijsFROM productWHERE categorie = ‘boek’ORDER BY prijs

SELECT {kolomnamen}FROM {tabelnaam}WHERE {criteria}ORDER BY {kolomnaam}

Page 25: 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

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

Page 26: 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

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]

Page 27: 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

SELECT WHERE

SELECT naam, prijs FROM productWHERE categorie = ‘eten’

AND prijs < 5ORDER BY producent, prijs

Logische operaties: AND, OR, NOT

Vergelijkingen: =, >, < , <> , <=, <=, LIKE

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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

Page 31: 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

SELECT DISTINCT

SELECT DISTINCT categorie, producent

FROM product

categorievervoervoedselboek

Page 32: 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

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

Page 33: 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

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

Page 34: 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

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 )