SQL Flashcards
Je wil een lijst met bieren waarbij de naam de tekst ‘ale’ bevat.
SELECT naam FROM bieren WHERE naam like ‘%ale%’
Je wil een lijst met alle bieren met een alcoholpercentage tussen 5% en 7%.
SELECT naam FROM bieren WHERE alcohol between 5 and 7
Je wil een lijst met alle bieren met 0%, 5% of 8% als alcoholpercentage.
SELECT naam FROM bieren WHERE alcohol in (0, 5, 8)
Je wil een lijst van de brouwerijen uit Leuven, Genk, Antwerpen, Dendermonde en Wevelgem.
SELECT brnaam FROM brouwers
WHERE gemeente in (‘Leuven’, ‘Genk’, ‘Antwerpen’, ‘Dendermonde’, ‘Wevelgem’)
Je wil een lijst met alle bieren waarbij het alcoholpercentage niet ingevuld is.
SELECT naam FROM bieren WHERE alcohol is Null
Je wil een lijst met alle bieren waarbij in de naam het woord ‘wit’ voorkomt en met een
alcoholpercentage hoger dan 5.
SELECT * FROM bieren WHERE naam like ‘%wit%’ and alcohol > 5
Je wil een lijst met alle bieren waarbij het woord ‘wit’ niet in de naam voorkomt.
SELECT * FROM bieren WHERE naam not like ‘%wit%’
Je wil een alfabetische lijst van de bieren met hun alcoholpercentage.
SELECT naam, alcohol FROM bieren ORDER BY naam asc
Je wil een alfabetische lijst van de bieren met hun alcoholpercentage.
SELECT naam, alcohol FROM bieren ORDER BY 1 asc
Je wil een lijst met alle bieren (naam en alcoholpercentage). De bieren met het hoogste
alcoholpercentage staan bovenaan. Zorg ook voor een sortering op naam.
SELECT naam, alcohol FROM bieren ORDER BY alcohol desc, naam asc
Geef een overzicht, met alle gegevens, van de leveranciers uit Aalsmeer.
select * from leveranciers where woonplaats=’aalsmeer’
Geef een alfabetisch overzicht op plantennaam, met plantId, plantennaam en prijs, van alle planten.
select plantId, plantnaam, prijs from planten order by 2 asc
Welke planten beginnen in de maand maart te bloeien?
Toon plantId, plantennaam, en de beginmaand van de bloeiperiode.
select plantId, plantnaam, beginbloeimaand from planten where beginbloeimaand = 3
Maak een overzicht uit de table artikelsleveranciers, gesorteerd op plantId en binnen plantId een
sortering op artikelcode van de leverancier.
Toon alleen de gegevens plantId, artikelcode van de leverancier en leverancierId.
select plantId, artikelLeverancierCode, leverancierId from artikelsLeveranciers order by 1, 2
Maak een gesorteerd overzicht van alle waterplanten. Sorteer op hoogte, grootste voorop.
select * from planten where soort=’water’ order by hoogte desc
Maak een lijst van de verschillende kleuren die bij de planten uit de table planten horen.
select distinct kleur from planten order by kleur
Maak een lijst van alle planten waarvan de kolom kleur niet ingevuld is.
select * from planten where kleur is null
Toon de verschillende soorten planten in de table planten.
select distinct soort from planten
Geef een overzicht van alle vaste planten met gele bloemen. Van iedere plant toon je de volgende
gegevens: plantId, plantennaam, hoogte en de beginmaand van de bloeiperiode.
select plantId, plantnaam, hoogte, beginbloeimaand from planten where kleur=’geel’ and soort=’vast’
Geef een overzicht van alle planten met een prijs boven de 10 € die niet tot de soort bomen behoren.
Resultaat: 8 records
SELECT * FROM planten WHERE prijs > 10 and soort<>’boom’
Maak een lijst van alle planten die in juni beginnen te bloeien en witte bloemen geven en tevens van alle planten die in augustus voor het eerst bloeien en gele bloemen hebben.
Plaats alle beschikbare gegevens in het overzicht.
SELECT * FROM planten WHERE (beginBloeiMaand=6 and kleur=’wit’) or (beginBloeiMaand=8 and kleur=’geel’)
Welke planten met gemengde bloeikleuren worden maximum 60 cm hoog?
Toon plantId, plantennaam en hoogte.
Resultaat: 13 records
select plantId, plantnaam, hoogte from planten where kleur=’gemengd’ and hoogte <= 60
Geef een overzicht van alle leveranciers die niet in Hillegom wonen.
Resultaat: 9 records
select * from leveranciers where woonplaats <> ‘hillegom’
Van welke planten is de kleur onbekend? Geef plantId en plantennaam.
Resultaat: 11 records
select plantId, plantnaam from planten where kleur is null
Welke planten bloeien in ieder geval in de periode augustus tot en met oktober? Geef plantId en
plantennaam.
Resultaat: 6 records
select plantId, plantnaam from planten where beginBloeiMaand<=8 and eindBloeiMaand>=10
Welke planten bloeien in ieder geval in de maand september? Geef plantId en plantennaam.
Resultaat: 26 records
select plantId, plantnaam from planten where beginBloeiMaand<=9 and eindBloeiMaand>=9
Geef een overzicht van alle vaste planten met een prijs tussen 3 € en 5 €.
Resultaat: 17 records
select * from planten where soort=’vast’ and prijs between 3 and 5
Geef een overzicht van alle planten die in maart, april, september of oktober beginnen te bloeien.
Resultaat: 15 records
select * from planten where beginBloeiMaand in (3,4,9,10)
Van welke planten is zowel de kleur als de hoogte onbekend? Geef plantId, plantennaam, kleur en
hoogte.
Resultaat: geen records
select plantId, plantnaam, kleur, hoogte from planten where hoogte is null and kleur is null
Bij welke planten komt het woord BOOM voor? Geef plantId en plantennaam.
Resultaat: 5 records
select plantId, plantnaam from planten where plantnaam like ‘%boom%’
Geef plantId en plantennaam van alle planten die als derde letter een N hebben.
Resultaat: 11 records
select plantId, plantnaam from planten where plantnaam like ‘__n%’
Welke 1- en 2-jarige planten staan er in de table planten?
Probeer deze vraag met en zonder de operator LIKE op te lossen.
Resultaat: 23 records
select * from planten where soort like (‘__jarig’)!!! met like
select * from planten where soort in (‘1-jarig’, ‘2-jarig’)!!! zonder like
Geef een overzicht van alle planten, behalve de bomen en de heesters, die tussen de 100 en 200 cm
hoog zijn, rode of blauwe bloemen geven, en vóór augustus beginnen te bloeien.
Alle gegevens behalve de prijs zijn belangrijk.
Sorteer de lijst op soort en binnen soort op plantennaam.
Resultaat: 4 records
select plantId, plantnaam, soort, kleur, hoogte, beginBloeiMaand, eindBloeiMaand from planten where soort not in ('boom', 'heester') and hoogte between 100 and 200 and kleur in ('rood','blauw') and beginBloeiMaand <=8 order by soort, plantnaam
Bij welke planten, die niet behoren tot de soort kruid, komt het woord KRUID voor in hun
plantennaam?
Geef plantId en plantennaam.
Resultaat: 6 records
select plantId, plantNaam from planten
where soort <> ‘kruid’ and plantnaam like ‘%kruid%’
Geef plantId en plantennaam van alle planten die beginnen met de letter L en eindigen met de letter
E.
Resultaat: 4 records
select plantId, plantNaam from planten where plantnaam like ‘l%e’
Welke planten hebben een plantennaam van precies 5 letters lang? Geef plantId en plantennaam.
Resultaat: 7 records
select plantId, plantNaam from planten where plantnaam like ‘_____’
Welke planten hebben een plantennaam van minimum 5 letters lang? Geef plantId en plantennaam.
Resultaat: 111 records
select plantId, plantNaam from planten where plantnaam like ‘_____%’
Je wil het totaal aantal bieren kennen.
SELECT count(*) as aantal FROM bieren
Je wil het gemiddelde, het grootste, het kleinste en het totale alcoholpercentage uit de table bieren.
SELECT avg(alcohol) as gemiddeld, max(alcohol) as maximum, min(alcohol) as minimum,
sum(alcohol) as som
FROM bieren
Je wil het aantal tafelbieren (soortnr 51) kennen.
SELECT count(biernr) FROM bieren WHERE soortnr=51
Volgend voorbeeld kan je weer uittesten in de database Bieren.
Maak een lijst van alle brouwerijen met hun omzet in dollar en in yen.
SELECT brnaam, omzet0.9118 as omzet_dollar, omzet116.6 as omzet_yen
FROM brouwers
Resultaat: 118 records
Hoeveel leveranciers telt ons tuincentrum?
select count(*) as aantal from leveranciers
Geef de gemiddelde prijs van alle waterplanten.
select avg(prijs) as gemiddelde_prijs from planten where soort = ‘water’
Geef de gemiddelde, de laagste en de hoogste offerteprijs van leverancier 4.
select avg(offerteprijs) as gemiddelde, max(offerteprijs) as hoogste, min(offerteprijs) as laagste from artikelsleveranciers where leverancierId=4
Wat is de maximale hoogte van de bomen in de table planten?
select max(hoogte) as maximale_hoogte from planten where soort = ‘boom’
Wat is de laagste offerteprijs voor artikel 1?
select min(offerteprijs) as minimum from artikelsleveranciers where plantId=1
Geef bestelnummer, artikelLeverancierId en het totale bestelbedrag per bestelrij uit de table
bestellijnen.
Resultaat: 93 records
SELECT bestelId, artikelLeverancierId, (aantal*bestelPrijs) as totaal FROM bestellijnen
Maak een overzicht van de heesters uit de table planten, waarbij je de prijzen met 5% verhoogt.
Resultaat: 14 records
select plantId, plantnaam, (prijs*1.05) as verhoogd from planten where soort=’heester’
Hoeveel stuks van leveranciersartikelnummer 59 zijn er besteld?
select sum(aantal) from bestellijnen where artikelLeverancierId=59
Wat is het totale bestelbedrag (exclusief korting) voor leveranciersartikelnummer 8?
SELECT sum(aantal*bestelPrijs) as totaal FROM bestellijnen WHERE artikelLeverancierId=8
Bereken het gemiddelde alcoholpercentage per brouwer.
SELECT brouwernr, avg(alcohol) as gem
FROM bieren
GROUP BY brouwernr
Resultaat: 113 records
Bereken het aantal bieren per biersoort.
SELECT soortnr, count(*) as aantal
FROM bieren
GROUP BY soortnr
Bepaal het minimum alcoholpercentage per brouwernr. De lijst toont enkel de brouwernr’s en
percentages die kleiner zijn dan 5%.
Om dit op te lossen gebruiken we HAVING i.p.v. WHERE.
Je gebruikt having als de selectie gebaseerd is op het resultaat van een bewerking met een aggregate functie. In alle andere gevallen gebruik je WHERE.
SELECT brouwernr, min(alcohol) as mini
FROM bieren
GROUP BY brouwernr
HAVING min(alcohol)<5
Bereken het gemiddelde alcoholpercentage per brouwernr voor alle brouwers die meer dan 10
bieren produceren.
SELECT brouwernr, avg(alcohol) as gem
FROM bieren
GROUP BY brouwernr
HAVING count(*)>10
Tel het aantal planten per plantensoort uit de table planten.
Resultaat: 10 records
select soort, count(*) as aantal from planten group by soort
Tel het aantal bestelregels per bestelling.
Resultaat: 15 records
planten
SELECT bestelId, count(*) as aantal FROM bestellijnen GROUP BY bestelId
Wat is de gemiddelde prijs per plantensoort?
Resultaat: 10 records
select soort, avg(prijs) as gemiddelde from planten group by soort
Hoeveel planten zijn er per plantensoort-kleurgroep?
Resultaat: 54 records
select soort, kleur, count(*) as aantal from planten group by soort, kleur
Maak een overzicht zodat duidelijk is welke kleur van de vaste planten de hoogste gemiddelde prijs
heeft.
Resultaat: 10 records
select kleur, avg(prijs) as gemiddelde from planten where soort=’vast’ group by kleur order by 2 desc
Laat per leveranciersId het aantal artikelen zien dat de leverancier aanbiedt onder voorwaarde dat
de levertijd van het artikel minder dan 18 dagen is.
Resultaat: 10 records
select leverancierId, count(*) as aantal from artikelsleveranciers where levertijd < 18 group by leverancierId
Wat is de gemiddelde prijs per plantensoort, exclusief de geelbloemige planten?
Resultaat: 10 records
select soort, avg(prijs) as gemiddelde from planten where kleur <> ‘geel’ group by soort
Maak een overzicht met de laagste en de hoogste offerteprijs per plant.
Resultaat: 119 records
select plantId, min(offerteprijs) as min, max(offerteprijs) as max from artikelsleveranciers group by plantId order by plantId asc
Wat is de gemiddelde prijs per plantensoort voor soorten met minstens 10 exemplaren in de table
planten?
Resultaat: 5 records
select soort, avg(prijs) as gemiddelde from planten group by soort having count(*) >= 10
Hebben de planten met korte levertijden in het algemeen een hogere gemiddelde offerteprijs?
Resultaat: 4 records
select levertijd, avg(offerteprijs) as gemiddelde from artikelsLeveranciers group by levertijd
Maak een overzicht met de laagste en de hoogste bestelprijs per artikelLeverancierId.
Resultaat: 70 records
select artikelLeverancierId, min(bestelprijs) as laagste, max(bestelprijs) as hoogste
from bestellijnen
group by artikelLeverancierId
order by artikelLeverancierId
Geef een overzicht van het aantal beschikbare planten per beginBloeiMaand/hoogte/kleur groep?
Resultaat: 109 records
SELECT beginBloeiMaand, hoogte, kleur, count(*) as aantal
FROM planten
GROUP BY beginBloeiMaand, hoogte, kleur
Wat is de laagste prijs per plantensoort van de planten die in ieder geval bloeien in de periode mei tot en met juni?
Resultaat: 5 records
select soort, min(prijs) as laagste from planten
where beginBloeiMaand <=5 and eindBloeiMaand >=6
group by soort
Tel het aantal planten per prijs. De prijs moet je afronden op een geheel getal.
Resultaat: 17 records
select round(prijs,0) as afgeronde_prijs, count(*) as aantal
from planten
group by afgeronde_prijs
order by round(afgeronde_prijs,0)
Geef een lijst van de klanten uit Gent of Wetteren met de velden naam, voornaam, postcode,
woonplaats en klantstatus. Sorteer op klantstatus en naam.
Video
SELECT naam, voornaam, postcode, woonplaats, klantstatus FROM klanten
WHERE (woonplaats=’wetteren’) OR (woonplaats=’gent’)
ORDER BY klantstatus, naam
Maak een lijst van de klanten waarvan de postcode groter of gelijk is aan 9000 en de klanten
waarvan het huuraantal groter is dan 200. Deze lijst moet gesorteerd worden op postcode
video
SELECT naam, voornaam, postcode, woonplaats, totaalgehuurd FROM klanten
WHERE postcode >= 9000 AND totaalgehuurd > 200 ORDER BY postcode
Geef een lijst van de klanten wiens naam niet begint met een ‘d’.
video
SELECT * FROM klanten WHERE naam NOT LIKE ‘d%’ ORDER BY naam
Geef een lijst van klanten waar in de naam van de gemeente op de derde plaats een ‘n’ staat.
video
SELECT * FROM klanten WHERE woonplaats LIKE ‘__n%’
Bereken voor alle films de prijs incl BTW (21%).
video
SELECT titel, prijs AS prijs_excl_BTW, (prijs*1.21) AS prijs_incl_BTW FROM films
Uit welke woonplaatsen komen onze klanten?
video
SELECT DISTINCT woonplaats FROM klanten ORDER BY woonplaats
Maak een lijst van het aantal klanten per gemeente.
video
SELECT woonplaats, count(*) AS aantal FROM klanten GROUP BY woonplaats ORDER BY 1
Maak een lijst die het mogelijk maakt een inzicht te krijgen in de verhuringen per gemeente.
Op deze lijst moet de gemeente/stad met de meeste verhuringen bovenaan staan.
Indien in een bepaalde gemeente geen 200 verhuringen gebeurd zijn, mag deze gemeente
niet op de lijst staan.
video
SELECT woonplaats, sum(totaalgehuurd) AS SumTotaalGehuurd FROM klanten GROUP BY woonplaats HAVING SumTotaalGehuurd >= 200 ORDER BY SumTotaalGehuurd DESC
We willen een lijst van alle bieren met daarbij de naam van de brouwerij.
We moeten de tables bieren en brouwers koppelen via het veld brouwernr. Hierdoor kunnen we de
naam van het bier en de naam van de bijhorende brouwer tonen.
SELECT naam, brnaam
FROM bieren INNER JOIN brouwers
ON bieren.brouwernr = brouwers.brouwernr
Resultaat: 1215 records
Geef een lijst van alle bieren met de velden naam, brouwerij en soort.
SELECT naam, brnaam, soort
FROM brouwers
INNER JOIN bieren ON bieren.brouwernr=brouwers.brouwernr
INNER JOIN soorten ON bieren.soortnr=soorten.soortnr
OF
SELECT naam, brnaam, soort
FROM soorten
INNER JOIN bieren ON soorten.soortnr = bieren.soortnr
INNER JOIN brouwers ON bieren.brouwernr = brouwers.brouwernr
Resultaat: 1215 records
In volgend voorbeeld worden de tables soorten en bieren gekoppeld op het veld soortnr. Deze instructie genereert een lijst van alle soorten, inclusief de soorten waarvan er geen bieren aanwezig zijn in de table bieren.
SELECT naam, soort
FROM soorten LEFT JOIN bieren
ON soorten.soortnr = bieren.soortnr
Resultaat: 1215 records
In dit voorbeeld worden de tables brouwers en bieren gekoppeld. De select-instructie genereert een lijst van alle brouwers, inclusief de brouwerijen waarvan er geen bieren aanwezig zijn in de table bieren.
SELECT brnaam, naam FROM bieren RIGHT JOIN brouwers ON bieren.brouwernr = brouwers.brouwernr ORDER BY naam Resultaat: 1220 records
Maak een lijst van brouwers die in dezelfde gemeente wonen.
Aan de table brouwers wordt telkens een aliasnaam gegeven. Als je een kolomnaam gebruikt, ben je verplicht om die aliasnaam te gebruiken.
SELECT b1.brnaam, b2.brnaam
FROM brouwers as b1 INNER JOIN brouwers as b2
ON b1.gemeente = b2.gemeente and b1.brouwernr < b2.brouwernr
b1.brouwernr < b2.brouwernr zorgt ervoor dat de combinaties zoals Artois – Artois en dubbele
records zoals Artois – Domus en Domus – Artois vermeden worden.
Resultaat: 10 records
Maak een overzicht van de bestellingen met het bestelnummer, de naam van de leverancier en de
leverdatum.
Planten
Resultaat: 15 records
SELECT bestelId, leverancierNaam, leveringsDatum FROM bestellingen
INNER JOIN leveranciers
ON bestellingen.leverancierId = leveranciers.leverancierId
Welke planten hebben een levertijd van maximum 10 dagen?
Plaats in het overzicht de gegevens artikelcode, leveranciers-artikelcode, plantennaam en levertijd.
Resultaat: 113 records
SELECT planten.plantId, artikelLeverancierCode, plantNaam, levertijd FROM artikelsleveranciers
INNER JOIN planten
ON artikelsleveranciers.plantId= planten.plantId
WHERE levertijd<=10
Geef een overzicht waaruit blijkt bij welke leverancier(s) de planten besteld kunnen worden.
In het overzicht moeten de volgende gegevens staan:
plantid, plantennaam, leverancierscode, naam van de leverancier, levertijd en offerteprijs.
Sorteer het overzicht op plantennaam.
Resultaat: 218 records
SELECT planten.plantId, plantNaam, leveranciers.leverancierId, leverancierNaam, levertijd, offerteprijs
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId=artikelsleveranciers.plantId
INNER JOIN leveranciers ON artikelsleveranciers.leverancierId = leveranciers.leverancierId
ORDER BY plantNaam
Maak een overzicht van die planten die een prijs hebben welke minstens 50% boven de offerteprijs ligt.
Geef plantId, plantennaam, prijs van de plant, leveranciersId en offerteprijs.
Sorteer je lijst op plantennaam.
Resultaat: 212 records
SELECT planten.plantId, plantNaam, prijs, leverancierId, offertePrijs
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId = artikelsleveranciers.plantId
WHERE prijs>=(offertePrijs*1.5)
ORDER BY plantNaam
Hoeveel verschillen de gehanteerde bestelprijzen met de huidige offerteprijzen?
Presenteer in de lijst de gegevens bestelnummer, artikelcode van de leverancier en het positieve of negatieve verschil.
Resultaat: 93 records
SELECT bestellijnen.bestelId, artikelLeverancierCode, bestelPrijs - offertePrijs as verschil
FROM artikelsleveranciers
INNER JOIN bestellijnen ON artikelsleveranciers.artikelLeverancierId = bestellijnen.artikelLeverancierId
In welke plaatsen kan het tuincentrum vaste planten bestellen?
Resultaat: 2 records
SELECT DISTINCT woonplaats
FROM leveranciers
INNER JOIN artikelsleveranciers ON leveranciers.leverancierId = artikelsleveranciers.leverancierId
INNER JOIN planten ON artikelsleveranciers.plantId=planten.plantId
WHERE soort=’vast’
Maak een overzicht van alle rode planten geleverd door leveranciers die niet in Aalsmeer wonen.
Vermeld de gegevens plantId, plantennaam, soort, naam van de leverancier, woonplaats.
Sorteer op soort en plantennaam.
Resultaat: 10 records
SELECT planten.plantId, plantNaam, soort, leverancierNaam, woonplaats
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId = artikelsleveranciers.plantId
INNER JOIN leveranciers ON artikelsleveranciers.leverancierId = leveranciers.leverancierId
WHERE woonplaats<>’Aalsmeer’ and kleur=’rood’
ORDER BY soort, plantNaam
Bepaal voor iedere artikelcode de laagste offerteprijs.
Vermeld in het overzicht plantId, plantennaam en de bijbehorende offerteprijs.
Sorteer het overzicht op plantennaam.
Resultaat: 119 records
SELECT planten.plantId, plantNaam, min(offertePrijs) AS minimum
FROM planten INNER JOIN artikelsleveranciers
ON planten.plantId= artikelsleveranciers.plantId
GROUP BY plantNaam, planten.plantId
ORDER BY 2
Zoek de bestellingen welke een besteldatum hebben die gelijk is aan de leverdatum van één of meer andere bestellingen.
Geef bestelnummer 1e bestelling, besteldatum 1e bestelling, bestelnummer 2e bestelling, leveringsdatum 2e bestelling.
Resultaat: 2 records
SELECT e.bestelId as eerstenr, e.bestelDatum as eerstedatum, t.bestelId as tweedenr, t.leveringsDatum as tweededatum
FROM bestellingen e INNER JOIN bestellingen t
ON e.bestelDatum=t.leveringsDatum and e.bestelId<>t.bestelId
Geef een overzicht van alle leveranciers en de bijbehorende bestellingen. Toon ook de leveranciers bij wie we nog niets besteld hebben.
We zijn enkel geïnteresseerd in de velden bestelId en leverancierNaam.
Resultaat: 17 records
SELECT leveranciernaam, bestelid FROM leveranciers LEFT JOIN bestellingen ON leveranciers.leverancierId = bestellingen.leverancierId ORDER BY bestelId
Selecteer alle bieren met soortnr 3 of 5
SELECT * FROM bieren WHERE soortnr=3
UNION
SELECT * FROM bieren WHERE soortnr=5
Resultaat: 8 records
in praktijk
SELECT * FROM bieren WHERE soortnr in (3,5)
Je wil een lijst met alle bieren. Elk bier krijgt de vermelding ‘Alcoholvrij’, ‘Alcoholarm’, ‘Bevat alcohol’ of ‘Niet gekend’.
De juiste boodschap kan je bepalen op basis van het alcoholpercentage (<0,2; <0,5; >0,5 en IS NULL).
Sorteer op alcoholpercentage.
SELECT naam, alcohol, ‘Alcoholvrij’ AS type FROM bieren WHERE alcohol<0.2
UNION
SELECT naam, alcohol, ‘Alcoholarm’ AS type FROM bieren WHERE alcohol>=0.2 and alcohol
<0.5
UNION
SELECT naam, alcohol, ‘Bevat alcohol’ AS type FROM bieren WHERE alcohol>=0.5
UNION
SELECT naam, alcohol, ‘Niet gekend’ AS type FROM bieren WHERE alcohol IS NULL
ORDER BY alcohol
Geef een lijst van alle bieren met het hoogste alcoholpercentage.
1 record
SELECT naam
FROM bieren
WHERE alcohol = (SELECT max(alcohol) FROM bieren)
In dit voorbeeld mag de subquery slechts één waarde als resultaat geven. Dit is zo voor de
operatoren =, , >=, <= en <>.
Resultaat: 1 record
Geef een lijst van alle bieren die in Oudenaarde gebrouwen worden.
SELECT naam
FROM bieren
WHERE brouwernr in (SELECT brouwernr FROM brouwers WHERE gemeente =
‘Oudenaarde’)
Alleen met de operator in kan je met een set van waarden werken.
Resultaat: 14 records
Geef de soortnr van de soorten die maar door 1 brouwerij gebrouwen worden.
SELECT soortnr
FROM (SELECT DISTINCT soortnr, brouwernr FROM bieren) as lijst
GROUP BY soortnr
HAVING count(*)=1
De subquery staat in de from-clausule. Eerst wordt de subquery uitgevoerd, nadien wordt de rest van de select-instructie uitgevoerd.
Als de substring in de from-component staat, moet deze een alias krijgen.
Resultaat: 5 records
Maak een lijst met het gemiddelde alcoholpercentage per soort.
SELECT soort, gemiddelde
FROM (SELECT soortnr, avg(alcohol) as gemiddelde FROM bieren GROUP BY soortnr) as r1
INNER JOIN soorten
ON r1.soortnr = soorten.soortnr
In de subquery wordt eerst het gemiddelde alcoholpercentage berekend per soortnr.
Gemiddelde is een aliasnaam uit de subquery die als kolomnaam gebruikt wordt in de buitenste query.
Om het resultaat van de subquery te kunnen joinen met een andere table moet je een aliasnaam geven aan de subquery.
Resultaat: 38 records
Maak een lijst van alle bieren met een lagere alcoholpercentage dan het gemiddelde
alcoholpercentage van zijn eigen soort.
SELECT b1.*
FROM bieren as b1
WHERE b1.alcohol < (SELECT avg(b2.alcohol) FROM bieren as b2 WHERE
b2.soortnr=b1.soortnr)
Hier wordt tweemaal gebruik gemaakt van de table bieren. Daarom wordt er aan de table een alias toegekend. Om aan te duiden tot welke table de velden behoren gebruiken we hier de alias i.p.v. de tablenaam bieren.
Resultaat: 603 records
Het tuincentrum wil graag een lijst waarop is aangegeven welke bomen in Aalsmeer en welke buiten
Aalsmeer verkrijgbaar zijn. Op het overzicht moeten de volgende gegevens verschijnen : plantid,
plantennaam, artikelcode van de leverancier, alsmede een aanduiding ‘AALSMEER’ of ‘BUITEN
AALSMEER’.
Sorteer de lijst op plantId.
Resultaat: 23 records
SELECT planten.plantId, plantNaam, artikelLeverancierCode, ‘Aalsmeer’ as plaats
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId = artikelsleveranciers.plantId
INNER JOIN leveranciers ON artikelsleveranciers.leverancierId = leveranciers.leverancierId
WHERE woonplaats=’Aalsmeer’ and soort=’boom’
UNION
SELECT planten.plantId, plantNaam, artikelLeverancierCode,’buiten Aalsmeer’ as plaats
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId = artikelsleveranciers.plantId
INNER JOIN leveranciers ON artikelsleveranciers.leverancierId = leveranciers.leverancierId
WHERE woonplaats<>’Aalsmeer’ and soort=’boom’
ORDER BY plantId
Je wil een overzicht waarop is aangegeven welke bestellingen te laat zijn. Voor de bestellingen die te laat zijn moet in een extra kolom de opmerking ‘TE LAAT’ worden geplaatst; voor de andere bestellingen wordt in die kolom een aantal streepjes geplaatst.
Sorteer het overzicht op bestelid.
Geef bestelid, besteldatum, artikelLeverancierId, leveringsdatum, levertijd, bericht ‘TE LAAT’ of ‘——-‘.
Resultaat: 93 records
SELECT bestellingen.bestelId, bestellijnen.artikelLeverancierId, bestelDatum, leveringsDatum, levertijd, ‘TE LAAT’ as bericht
FROM bestellingen
INNER JOIN bestellijnen ON bestellingen.bestelId=bestellijnen.bestelId
INNER JOIN artikelsleveranciers ON artikelsleveranciers.artikelLeverancierId=bestellijnen.artikelLeverancierId
WHERE datediff(leveringsDatum,bestelDatum) > levertijd
UNION
SELECT bestellingen.bestelId, bestellijnen.artikelLeverancierId, bestelDatum, leveringsDatum, levertijd, ‘——-‘ as bericht
FROM bestellingen
INNER JOIN bestellijnen ON bestellingen.bestelId=bestellijnen.bestelId
INNER JOIN artikelsleveranciers ON artikelsleveranciers.artikelLeverancierId=bestellijnen.artikelLeverancierId
WHERE datediff(leveringsDatum,bestelDatum) <= levertijd
ORDER BY bestelId
Welke planten zijn hoger dan de gemiddelde hoogte van alle planten samen? Toon alle gegevens.
Resultaat: 21 records
SELECT * FROM planten WHERE hoogte > (SELECT avg(hoogte) FROM planten)
Welke planten zijn duurder dan de gemiddelde prijs van de bomen? Toon alle gegevens.
Resultaat: 13 records
SELECT * FROM planten WHERE prijs > (SELECT avg(prijs) FROM planten WHERE soort=’boom’)
Maak een overzicht van de leveranciers (alle gegevens) waar nog bestellingen uitstaan met een
leverdatum die vóór 1 april 2016 ligt.
Resultaat: 7 records
SELECT *
FROM leveranciers
WHERE leverancierId in (SELECT leverancierId FROM bestellingen WHERE leveringsDatum
Welke rijen hebben de laagste offerteprijs van alle offertes in de table artikelsleveranciers? Geef alle
gegevens.
Resultaat: 2 records
SELECT * FROM artikelsleveranciers WHERE offertePrijs=(SELECT min(offertePrijs) FROM artikelsleveranciers)
Welke planten zijn lager dan de laagste vaste plant?
Toon alle gegevens.
Planten waar de hoogte 0 is, worden niet meegerekend.
Resultaat: 5 records
“SELECT *
FROM planten
WHERE hoogte > 0 and hoogte 0)”
Welke planten zijn hoger dan de gemiddelde hoogte van vaste planten en tevens goedkoper dan de
gemiddelde prijs van vaste planten? Geef alle gegevens.
Resultaat: 13 records
SELECT * FROM planten WHERE hoogte > (SELECT AVG(hoogte) FROM planten WHERE soort=’vast’)
AND prijs < (SELECT AVG(prijs) FROM planten WHERE soort=’vast’)
Welke planten hebben een prijs die tussen de laagste en hoogste prijs van de klimplanten ligt? Geef
alle gegevens.
Resultaat: 11 records
SELECT * FROM planten
WHERE prijs > (SELECT min(prijs) FROM planten WHERE soort = ‘klim’)
AND prijs < (SELECT max(prijs) FROM planten WHERE soort = ‘klim’)
Maak een overzicht van alle plantIds die een lagere offerteprijs hebben dan de gemiddelde
offerteprijs voor de betreffende plantId.
Plaats de gegevens plantId, leveranciersnaam en offerteprijs op het overzicht. Sorteer op plantId.
Resultaat: 71 records
SELECT a1.plantid, leverancierNaam, a1.offertePrijs
FROM artikelsleveranciers a1 INNER JOIN leveranciers
ON a1.leverancierId = leveranciers.leverancierId
WHERE a1.offerteprijs < (SELECT avg(a2.offertePrijs) FROM artikelsleveranciers a2 WHERE a2.plantId=a1.plantId)
ORDER BY a1.plantId
Maak een overzicht van bestelde planten die een bestelprijs hebben welke hoger is dan de maximum
offerteprijs voor zo’n plant.
Plaats de volgende gegevens op het overzicht : bestelnummer, artikelcode van de leverancier,
plantennaam en bestelprijs.
Resultaat: 34 records
SELECT bestellijnen.bestelid, a1.artikelLeverancierCode, plantNaam, bestelPrijs
FROM planten
INNER JOIN artikelsleveranciers a1 ON planten.plantId=a1.plantId
INNER JOIN bestellijnen ON bestellijnen.artikelLeverancierId = a1.artikelLeverancierId
INNER JOIN bestellingen ON bestellijnen.bestelId = bestellingen.bestelId and bestellingen.leverancierId=a1.leverancierId
WHERE bestelPrijs > (SELECT max(offertePrijs) FROM artikelsleveranciers a2 WHERE a2.plantId=planten.plantId)
Geef een lijst van de films die in de titel noch het woord “kill” noch het woord “blood”
hebben. We willen enkel de films van de genres griezel en thriller.
video
SELECT filmId, titel, genre FROM films
INNER JOIN genres ON films.genreId=genres.genreId
WHERE genre in (‘thriller’,’griezel’) AND titel NOT LIKE ‘%blood%’ AND titel NOT LIKE ‘%kill%’
We willen een lijst maken van wie welke films huurt. De lijst wordt oplopend gesorteerd op
naam en titel.
video
SELECT naam, voornaam, titel FROM klanten
INNER JOIN verhuringen ON verhuringen.klantId=klanten.klantId
INNER JOIN films ON films.filmId=verhuringen.filmId
ORDER BY 1,3
Wat is de totale voorraad per genre?
video
SELECT genres.genreId, genre, sum(voorraad) as TotaalVoorraad FROM genres
INNER JOIN films ON films.genreId=genres.genreId
GROUP BY 1
ORDER BY 1
Op basis van het huuraantal willen we een label toevoegen aan elke klant:
Als het huuraantal groter is dan 250 krijgt de klant het label ‘Zeer goede klant’, als het
huuraantal kleiner is dan 150 krijgt hij het label ‘Slechte klant’. In de andere gevallen komt er
als label ‘Goede klant’.
video
SELECT *, ‘Zeer goede klant’ AS label FROM klanten
WHERE totaalGehuurd > 250
UNION
SELECT *, ‘Goede klant’ AS label FROM klanten
WHERE totaalGehuurd BETWEEN 150 AND 250
UNION
SELECT *, ‘Slechte klant’ AS label FROM klanten
WHERE totaalGehuurd < 150
Geef alle gegevens van de duurste film.
video
SELECT * FROM films
WHERE prijs = (SELECT max(prijs) FROM films)
Voeg een nieuwe soort ‘Extra donker’ toe aan de table soorten.
INSERT INTO soorten (Soort)
VALUES (‘Extra donker’)
Voeg een nieuwe brouwer toe aan de table brouwers.
Gegevens van de nieuwe brouwerij: Brouwerij Vaattappers is gevestigd aan Interleuvenlaan 2 in 3000
Heverlee met een omzet van 1000.
INSERT INTO brouwers (BrNaam, Adres, Postcode, Gemeente, Omzet)
VALUES (‘Brouwerij Vaattappers’, ‘Interleuvenlaan 2’, 3000, ‘Heverlee’, 1000)
Voeg met één instructie drie nieuwe biersoorten toe aan de table soorten: witbier, Ice bier en
honingbier.
INSERT INTO soorten (Soort) VALUES ('witbier'), ('Ice bier'), ('honing bier')
Voeg de bieren met een alcoholpercentage hoger dan 10 toe aan de table bieren_oud.
Selecteer eerst de gegevens om je instructie te controleren:
SELECT *
FROM bieren
WHERE alcohol > 10
Deze select-instructie voeg je in in je insert into-instructie:
INSERT INTO bieren_oud
SELECT *
FROM bieren
WHERE alcohol > 10
Verhoog het alcoholpercentage van de bieren (met soortnr 21) met 0,5. Doe deze aanpassing in de
table bieren_oud.
UPDATE bieren_oud
SET alcohol = alcohol+0.5
WHERE soortnr = 21
Verlaag het alcoholpercentage met 1 van de bieren waarvan de brouwerij een omzet heeft die groter
is dan 25000. Doe deze aanpassing in de table bieren_oud.
UPDATE bieren_oud
SET alcohol = alcohol - 1
WHERE brouwernr in (SELECT brouwernr FROM brouwers WHERE omzet > 25000)
Verwijder het bier met biernr 750 uit de table bieren_oud.
DELETE
FROM bieren_oud
WHERE biernr=750
Verwijder uit de table bieren_oud de bieren die in Soy gebrouwen worden.
DELETE
FROM bieren_oud
WHERE brouwernr in (SELECT brouwernr FROM brouwers WHERE gemeente=’Soy’)
Het tuincentrum breidt zijn leverancierskring uit met GROEN BV. De volgende gegevens zijn bekend :
Zie kader p.96
INSERT INTO leveranciers (leverancierNaam, adres, woonplaats)
VALUES (‘GROEN BV.’, ‘ONDER DE LINDE 234’, ‘AALSMEER’ )
Wijzig in de table bestellingen de leverdatum in 5 april 2016 voor de bestelling met nummer 8.
UPDATE bestellingen
SET leveringsDatum=’2016-4-5’
WHERE bestelId=8
Verwijder alle rijen uit de table artikelsleveranciers die betrekking hebben op de heesters van
leverancier 8.
Resultaat: 14 records verwijderd
DELETE
FROM artikelsleveranciers
WHERE leverancierId=8 and plantId in (SELECT plantId FROM planten WHERE soort=’heester’)
Op 23 april 2016 is een nieuwe bestelling geplaatst bij leverancier 4. Dit zijn de details:
Zie kader p.97
De leverancier geeft 8% korting op het bruto bestelbedrag. De leverdatum is één week na de
bestelling.
Doe de nodige aanpassingen in de tables bestellingen en bestellijnen. Denk aan de volgorde!
Toevoegingen aan de table bestellingen
INSERT INTO bestellingen (leverancierId, bestelDatum, leveringsDatum,korting) VALUES (4, '2016-4-23', '2016-4-30', 0.08) Bestelnr opzoeken Zoek het bestelnr van de laatst toegevoegde bestelling. SELECT * FROM bestellingen Het laatste record heeft als bestelId 16. Toevoegingen aan de table bestellijnen INSERT INTO bestellijnen (bestelid, artikelLeverancierId, aantal, bestelprijs) VALUES (16, 62, 10, 8.15) INSERT INTO bestellijnen (bestelid, artikelLeverancierId, aantal, bestelprijs) VALUES (16, 58, 200, 0.4) INSERT INTO bestellijnen (bestelid, artikelLeverancierId, aantal, bestelprijs) VALUES (16, 59, 25, 2.3) INSERT INTO bestellijnen (bestelid, artikelLeverancierId, aantal, bestelprijs) VALUES (16, 74, 50, 1.3)
Verhoog alle offerteprijzen van de bolgewassen in de table artikelsleveranciers met 10%.
Resultaat: 7 records aangepast
UPDATE artikelsleveranciers
SET offertePrijs = offertePrijs*1.1
WHERE plantId in (SELECT plantId FROM planten WHERE soort=’bol’)
Voeg de informatie van de planten met een hoogte groter of gelijk aan 1000 toe aan de table
planten_oud. Zorg dat de hoogste planten bovenaan staan.
Resultaat: 11 records toegevoegd
INSERT INTO planten_oud SELECT * FROM planten WHERE hoogte >=1000 ORDER BY hoogte desc
Maak een nieuwe table klanten met de velden klantnr, klnaam, kladres, klpost en klgemeente.
De velden klnr en klnaam moeten een waarde bevatten.
denk video..?
CREATE TABLE klanten (klantnr integer not null, klnaam varchar(30) not null, kladres varchar(40), klpost char(4), klgemeente varchar(40))
Maak een table alcoholarm. Plaats hierin de gegevens van de alcoholarme bieren. Neem naam van
de brouwer en naam van het bier mee.
CREATE TABLE alcoholarm
AS
SELECT naam, brnaam
FROM bieren
INNER JOIN brouwers ON bieren.brouwernr=brouwers.brouwernr
INNER JOIN soorten ON bieren.soortnr=soorten.soortnr
WHERE soort=’Alcoholarm’
Voeg een veld Opmerkingen toe aan de table brouwers.
ALTER TABLE brouwers
ADD Opmerkingen varchar(25)
Voeg een veld Contactpersoon toe aan de table brouwers. Zorg dat hier altijd iets ingevuld moet
worden.
ALTER TABLE brouwers
ADD Contactpersoon varchar(25) NOT NULL
Verwijder de velden Opmerkingen en Contactpersoon uit de table brouwers.
ALTER TABLE brouwers
DROP Opmerkingen, DROP Contactpersoon
Unique
Hiermee kan je een veld aanwijzen als een unieke index. Dit kan voor elk veld van je table toegepast
worden.
Unique voorkomt dat twee records in de table dezelfde waarde hebben voor een bepaald veld.
Als de unieke index toegepast wordt op meerdere velden, betekent dit dat de combinatie van de
waarden in die velden uniek moet zijn.
Ga uit van volgende table:
Zie kader p. 106
Situatie 1: unique op veld 2
Het record met veld 1=1, veld 2=4 en veld 3=2 kan toegevoegd worden aan de table.
Een record met veld 1=1, veld 2=1 en veld 3=2 kan niet toegevoegd worden aan de table omdat er
reeds een record is met 1 als waarde in veld 2.
Situatie 2: unique op veld 1 en veld 2
Het record met veld 1=1, veld 2=3 en veld 3=1 kan toegevoegd worden aan de table.
Een record met veld 1=1, veld 2=1 en veld 3=3 kan niet toegevoegd worden omdat deze combinatie
van veld 1 en veld 2 reeds bestaat in de table.
Maak een table klanten met de velden klantId en klantnaam.
KlantId is de primaire sleutel.
De naam mag maximaal 30 tekens lang zijn en moet altijd ingevuld worden.
denk video..?
CREATE TABLE klanten (
klantId integer not null auto_increment,
klantnaam varchar(30) not null,
CONSTRAINT pk_klantId primary key (klantId))
De beperkende voorwaarde krijgt hier de naam pk_klantId:
• pk want het gaat om een primaire sleutel
• op het veld klantId
Na de naam komt het sleutelwoord primary key omdat we een primaire sleutel willen maken.
Maak een table gebruikers met de velden nummer, naam en userId.
De inhoud van het veld userId moet een unieke waarde hebben maar is toch niet de primaire sleutel.
Het veld nummer moet de primaire sleutel zijn.
denk video..?
CREATE TABLE gebruikers ( nummer integer not null, naam varchar(30), userId varchar(8), CONSTRAINT pk_nr primary key(nummer), CONSTRAINT u_userid unique(userId)) Hier hebben we 2 constraint-instructies: • CONSTRAINT pk_nr primary key Hiermee maken we een primaire sleutel met de naam pk_nr voor het veld nr. • CONSTRAINT u_userid unique Met deze instructie maken we een unieke index met de naam u_userid op het veld userId.
Maak een table bestellingen met de velden bestelId, klantnummer, besteldatum.
De primaire sleutel is het veld bestelId.
Tussen het veld klantnummer van deze table en het veld klantId van de table klanten wordt een 1-
op-veel-relatie gedefinieerd.
denk video..?
CREATE TABLE bestellingen (
bestelId integer,
klantnummer integer,
besteldatum datetime,
CONSTRAINT pk_bestelId primary key (bestelId),
CONSTRAINT f_klantnummer foreign key (klantnummer) references klanten (klantId))
Ook hier hebben we 2 constraint-instructies:
• CONSTRAINT pk_bestelId primary key
Hiermee maken we een primaire sleutel met de naam pk_bestelId voor het veld bestelId.
• CONSTRAINT f_klantnummer references klanten (klantId)
Met deze instructie maken we een externe sleutel (foreign key) met de naam
f_klantnummer op het veld klantnummer. Dit veld wordt gelinkt aan klantId (de primaire
sleutel) in de table klanten.
Maak een table bestellijnen met de velden: bestelnummer, biernummer en aantal.
Definieer een samengestelde sleutel met de velden bestelnummer en biernummer.
CREATE TABLE bestellijnen (bestelnummer integer, biernummer integer, aantal integer, CONSTRAINT pk_bestbier primary key (bestelnummer, biernummer))
Definieer een 1-op-veel-relatie tussen de tables bestellingen (bestelId) en bestellijnen
(bestelnummer).
ALTER TABLE bestellijnen
ADD CONSTRAINT f_bestelnummer foreign key (bestelnummer) references bestellingen
(bestelId)
Verwijder de beperkende voorwaarde f_bestelnummer.
ALTER TABLE bestellijnen
DROP FOREIGN KEY f_bestelnummer
Verwijder de primaire sleutel van de table bestellijnen.
ALTER TABLE bestellijnen
DROP PRIMARY KEY
Maak een index voor het veld klnaam van de table klanten.
CREATE INDEX i_naam ON klanten (klantnaam)
Verwijder de index i_naam van de table klanten.
DROP INDEX i_naam ON klanten
Creëer een table klachten met de volgende velden: Zie P 113
Voeg nadien volgende klacht toe aan deze table:
Klacht nr. 1 heeft betrekking op plantid 10. De klacht luidt : “Planten (leveranciercode 2) verkocht op
14-1-2016 vertoonden bruine vlekken na circa 2 maanden”.
De status is GL (gemeld aan leverancier) en de klacht wordt ingebracht op 15-3-2016.
Table klachten maken
CREATE TABLE klachten
(klachtId integer, plantId integer, datum datetime, klacht varchar(100), status char(2))
Klacht toevoegen
INSERT INTO klachten
VALUES (1, 10, ‘2016/03/15’, ‘Planten (leveranciercode 2) verkocht op 14-1-2016 vertoonden bruine vlekken na circa 2 maanden’, ‘GL’)
Er is behoefte aan een table aanbied waaruit snel de goedkoopste leveranciers van de planten uit de
table planten kunnen worden opgezocht.
De table heeft de volgende kolommen : plantId, plantNaam, leverancierid en offerteprijs.
Vul deze table vanuit de tables planten en artikelsleveranciers.
CREATE TABLE aanbied
AS
SELECT planten.plantId, plantNaam, a1.leverancierId, offertePrijs
FROM artikelsleveranciers a1 INNER JOIN planten ON a1.plantId = planten.plantId
WHERE offertePrijs = (SELECT min(offertePrijs) FROM artikelsleveranciers a2 WHERE a2.plantId = a1.plantId)
Breid de table planten uit met een kolom voorraad om het aantal stuks dat het tuincentrum nog in
voorraad heeft bij te houden.
ALTER TABLE planten
ADD voorraad integer
Definieer alle relaties tussen de tables van de database Planten. Zie p. 113
ALTER TABLE artikelsleveranciers
ADD CONSTRAINT f_plantId foreign key (plantId) references planten (plantId)
ALTER TABLE artikelsleveranciers ADD CONSTRAINT f_leverancierId foreign key (leverancierId) references leveranciers (leverancierId) ALTER TABLE bestellingen ADD CONSTRAINT f_leverancierId2 foreign key (leverancierId) references leveranciers (leverancierId) ALTER TABLE bestellijnen ADD CONSTRAINT f_bestelId foreign key (bestelId) references bestellingen (bestelId) ALTER TABLE klachten ADD CONSTRAINT f_klachten foreign key (plantId) references planten (plantId) ALTER TABLE planten ADD CONSTRAINT f_categorie foreign key (categorieId) references categorieen (categorieId) ADD CONSTRAINT f_artikelsleveranciers foreign key(artikelLeverancierId) references artikelsleveranciers(artikelLeverancierId) ALTER TABLE bestellijnen ADD CONSTRAINT f_artikelLeverancierId foreign key(artikelLeverancierId) references artikelsleveranciers(artikelLeverancierId)
Maak een index BSRIDX01 op de samengestelde sleutel bestelId en artikelLeverancierId van de table
bestellijnen.
CREATE INDEX bsridx01 ON bestellijnen (bestelId, artikelLeverancierId)
De table artikelsleveranciers wordt regelmatig gejoined met de tables planten, leveranciers en
bestellijnen.
Welke indexen zijn waardevol voor de table artikelsleveranciers?
CREATE INDEX i_plantId ON artikelsleveranciers (plantId)
CREATE INDEX i_leverancierId ON artikelsleveranciers (leverancierId)
Maak een view bierlijst. Op deze lijst staat de naam van het bier, de naam van de brouwer en het
soort bier.
CREATE VIEW bierlijst
AS
SELECT naam, brnaam, soort
FROM bieren
INNER JOIN brouwers ON bieren.brouwernr = brouwers.brouwernr
INNER JOIN soorten on bieren.soortnr=soorten.soortnr
Verwijder de view bierlijst.
DROP VIEW bierlijst
Definieer een view vastlaag waarin alle gegevens van alle vaste planten uit de table planten
voorkomen met een hoogte van maximaaal 15 cm.
CREATE VIEW vastlaag AS SELECT * FROM planten WHERE soort like 'vast' and hoogte<=15
Definieer een view offerteprijzen met de kolommen plantId, minOff, maxOff en gemOff waarin
respectievelijk plantid, laagste, hoogste en gemiddelde offerteprijs vermeld is.
CREATE VIEW offerteprijzen AS SELECT plantId, min(offertePrijs) AS minOff, max(offertePrijs) AS maxOff, avg(offertePrijs) AS gemOff FROM artikelsleveranciers GROUP BY plantId
Maak een view zomerplanten waarmee de gegevens plantid, plantennaam, soort en prijs zijn te
benaderen van alle planten die in de maanden juni, juli en augustus beginnen te bloeien.
CREATE VIEW zomerplanten AS SELECT plantId, plantNaam, soort, prijs FROM planten WHERE beginBloeiMaand between 6 and 8
Definieer een view bomen met de gegevens plantId, plantennaam, hoogte en prijs van alle bomen.
CREATE VIEW bomen AS SELECT plantId, plantNaam, hoogte, prijs FROM planten WHERE soort like 'boom'
Definieer een view leverancier5 waarin alleen van leverancier 5 de volgende gegevens staan: plantId,
plantNaam, artikelLeverancierCode, offertePrijs, prijs
CREATE VIEW leverancier5
AS
SELECT artikelsleveranciers.plantId, planten.plantNaam, artikelLeverancierCode, offertePrijs, planten.prijs
FROM artikelsleveranciers INNER JOIN planten ON planten.plantId = artikelsleveranciers.plantId
WHERE leverancierId=5
Maak een view waardoor alleen de offertegegevens van de leveranciers uit Lisse zijn te selecteren.
CREATE VIEW lisse AS SELECT artikelsleveranciers.* FROM artikelsleveranciers INNER JOIN leveranciers ON artikelsleveranciers.leverancierId = leveranciers.leverancierId WHERE woonplaats like 'Lisse'
Maak een view besteldeplanten die een overzicht geeft van bestelid, artikelcode van de leverancier
en de plantnaam.
CREATE VIEW besteldeplanten
AS
SELECT bestellijnen.bestelid, artikelleveranciercode, plantNaam
FROM planten
INNER JOIN artikelsleveranciers ON planten.plantId = artikelsleveranciers.plantId
INNER JOIN bestellijnen ON artikelsleveranciers.artikelLeverancierId = bestellijnen.artikelLeverancierId
Voeg jezelf toe als klant.
video
INSERT INTO klanten (naam, voornaam, adres, postcode, woonplaats, klantStatus, totaalGehuurd, datumLid, lidgeld)
VALUES (‘AHADDOUR’, ‘ISMAEL’,’GROTE MARKT 1’, 1000, ‘BRUSSEL’, 1, 0, ‘2020-9-18’, 1)
Geef alle films met maatschappijCode VH een prijsverhoging van 10%.
video
UPDATE films
SET prijs = prijs*1.1
WHERE maatschappijId IN (SELECT maatschappijId FROM maatschappijen WHERE maatschappijCode = ‘VH’)
Maak een table met enkel de films van het genre Thriller.
video
denk dat aangepast moet worden , zie feedback coach in mail
CREATE VIEW Thrillers
AS
SELECT * FROM films WHERE genreId IN (SELECT genreId FROM genres WHERE genreId = 13)
Voeg aan de table maatschappijen een veld mailadres toe. Dit veld mag maximaal 40 tekens
lang zijn en mag niet leeg zijn.
video
ALTER TABLE maatschappijen
ADD mailadres varchar (40) NOT NULL
Definieer alle nodige primary en foreign keys. (zie test coach 3)
video
ALTER TABLE films
ADD CONSTRAINT f_maatschappijId FOREIGN KEY (maatschappijId) REFERENCES maatschappijen (maatschappijId)
ALTER TABLE films ADD CONSTRAINT f_genreId FOREIGN KEY (genreId) REFERENCES genres (genreId) ALTER TABLE verhuringen ADD CONSTRAINT f_filmId FOREIGN KEY (filmId) REFERENCES films (filmId) ALTER TABLE verhuringen ADD CONSTRAINT f_klantId FOREIGN KEY (klantId) REFERENCES klanten (klantId)