Databases SQL.

Slides:



Advertisements
Verwante presentaties
SQL deel 2: datamodel ontwerp
Advertisements

Computervaardigheden
Module 7 – Hoofdstuk 5 (1) SQL – een begin.
Meerdere tabellen: Relaties en Joins
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Functionele opleiding strategische analyse - Module
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Relationele databases en
Databases Informatica Ga verder met een muisklik. SQL FCO DBMS NE FA
Module 7 – Hoofdstuk 5 (4) SQL – voorwaarden aan groepen en meerdere tabellen.
Databank van een restaurant Download op Twee tabellen: Klanten: Alle klanten die minstens.
MySQL-acties Klassikaal: Wijnen.sql. 1.Toon alle wijnen die er zijn. Toon de naam, kleur en prijs. SELECT `naam`,`kleur`,`prijs` FROM `wijnen`
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Het selecteren van data uit meerdere gekoppelde tabellen
Van Nul naar Drie Normaliseren.
SQL Les 01 & 02. SELECT Weergeven van alle gegevens uit een tabel: SELECT * FROM tlbPersonen; Weergeven van alle personen die uit Aruba komen: SELECT.
Sets in een RDBS Een database
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Relationele Databases
Relationele Databases Hoofdstuk 10
Databases.
<Mdl01 hoorcollege 1>
Querytraining Eppo Drenth, CFB SIS HvA | Mark van der Molen, CFB SIS UvA 7 maart 2013.
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
LauwersCollege Buitenpost Informatica
Inleiding Databanken: oefeningen
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
Computervaardigheden en Programmatie Universiteit AntwerpenDatabank - Basis 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Overzicht databanken - Oefeningen
Databanken by Steven Stinis.
Relationele databases: Fysiek databaseontwerp en SQL
Download en installeer de gereedschappen
Download en installeer de gereedschappen
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Vorige week: Referentiele integriteit
SQL (structured Query Language) DDL (Data Definition Language) DML (Data Manipulation Language) Ontwerp databaseBevraag database.
Agenda Boek: inhoud en didactiek De SQL-Boekverkenner Practicum.
Workshop PHP Een productencatalogus Met database.
Statistische functies (aggregaatfuncties)
Databases.
Relationele Databases Hoofdstuk 10 Deel 2 Blz.: 90 t/m 95.
Laat software voor je werken
SQL ( SERVER ) Les #02: T-SQL. A GENDA Herhaling les 4 Views SELECT…INTO Beheren van tabellen: CREATE ALTER DROP Opdracht voor de volgende les.
LauwersCollege Buitenpost Informatica
7 Databases. SAMENGESTELDE VOORWAARDEN 1 Wat is het adres van Odile Goossens? SELECT adres, woonplaats FROM leden WHERE naam = ‘Goossens’ AND voornaam.
Computervaardigheden Hoofdstuk 4 — Databank (Basis)
7 Databases. STRUCTURED QUERY LANGUAGE Bij het relationele model hoort een programmeertaal waarmee de database benaderd kan worden. In de praktijk wordt.
24/04/2015IT-Assurance1 IT-Assurance deeltijd 4. Inleiding SQL Introductie in de basisfuncties Bijbehorend lesmateriaal: -AIV-boek van Derksen en Crins.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK CMI Informatica.
ANALYSE 3 INFANL01-3 WEEK 8 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Herhaling ▸ Normaliseerregels ▸ Omzetten ERD ▸ Group by en SET ▸ Proeftentamen.
Week 2 BIMAIV03 Les A4. Volgorde Soms willen we in het resultaat een bepaalde ordening aanbrengen. Dat doen we met PEILING ORDER BY DatumPartijAantal.
Week 2 BIMAIV03 Les A3. DISTINCT (1) Van welke uitgevers staan er boeken in deze tabel? BOEKNRTITELUITGEVERPRIJS Word in twaalf dagenMEU€ 22,50.
ANALYSE 3 INFANL01-3 WEEK 6 CMI Informatica. ANALYSE 3- INFANL01-3 ▸ Vorige les ▸ Subqueries met correlaties ▸ Subqueries zonder correlaties ▸ Views ▸
Week 3 BIRAIV03 Les B5 BIRAIV03 Les B5. naampnt Jan10 Truus22 Ineke6 Tabel 1 codeomschrprijs a100stoel€ 160,00 a124tafel€ 255,00 Tabel 2 Voorbeeld.
BIMAIV03 Les A6 BIMAIV03 Les A6. Het resultaat van een query (1) BOEKEN SELECT MAX(prijs) FROM boeken; SELECT MAX(prijs) FROM boeken; BOEKNRTITELUITGEVERPRIJS.
Wat is SQL (1)? SQL (Structured Query Language):  is een zeer krachtige taal met een beperkt vocabulaire (aantal ‘woorden’)  is declaratief (‘WAT’ niet.
Databases.
– Software development fundamentals
LauwersCollege Buitenpost Informatica
Informatie-analyse 1: Er zijn veel manieren om een database te vullen
Databases.
Informatie-analyse 2: Informatie-analyse met FCO-IM
SQL Les 3 17 February 2019.
SQL Les 3 23 February 2019.
SQL Les 1 5 April 2019.
SQL Les 4 12 May 2019.
– Software development fundamentals
Transcript van de presentatie:

databases SQL

overzicht de basis filteren gevorderde query's op één tabel tabellen samenvoegen gevorderde query's op meerdere tabellen sub-query's

de basis

een tabel leerlingen lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8

de basis SELECT: FROM: resultaat: gevolgd door veldnamen die je wilt tonen  (joker/wildcard) voor alle veldnamen FROM: gevolgd door tabelnaam resultaat: tabel SELECT * FROM leerlingen

voorbeeld SELECT * FROM leerlingen lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8

filteren

records filteren filteren: in SQL records filteren met: het proces waarbij gewenste elementen van ongewenste worden gescheiden in SQL records filteren met: WHERE gevolgd door Booleaanse expressie (waar/niet waar) SELECT * FROM leerlingen WHERE wpl = "Eindhoven"

voorbeeld SELECT * FROM leerlingen WHERE wpl = "Eindhoven" lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl 2 Marleen Schippers Kerkstraat 12 Eindhoven 4 Joop Visser Brugstraat 15 5 Mieke 8 Nisa Demir Hoogeind 8

velden filteren filteren: in SQL velden filteren met: het proces waarbij gewenste elementen van ongewenste worden gescheiden in SQL velden filteren met: SELECT SELECT voornaam, achternaam, wpl FROM leerlingen

voorbeeld SELECT voornaam, achternaam, wpl FROM leerlingen lln_nr adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 voornaam achternaam wpl Joop Vos Son Marleen Schippers Eindhoven Issam Mourabit Nuenen Visser Mieke Irene Horst Theo Nisa Demir

records en velden filteren SELECT voornaam, achternaam, wpl FROM leerlingen WHERE wpl = "Eindhoven" lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 voornaam achternaam wpl Joop Vos Son Marleen Schippers Eindhoven Issam Mourabit Nuenen Visser Mieke Irene Horst Theo Nisa Demir voornaam achternaam wpl Joop Vos Son Marleen Schippers Eindhoven Issam Mourabit Nuenen Visser Mieke Irene Horst Theo Nisa Demir voornaam achternaam wpl Marleen Schippers Eindhoven Joop Visser Mieke Nisa Demir

en nu tegelijk SELECT voornaam, achternaam, wpl FROM leerlingen WHERE wpl = "Eindhoven" lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 voornaam achternaam wpl Marleen Schippers Eindhoven Joop Visser Mieke Nisa Demir

gevorderde query's op één tabel

gevorderde query's op één tabel moeilijkere record filters DISTINCT sorteren rekenfuncties COUNT groeperen filters op groepen

moeilijkere record filters andere vergelijkingsoperatoren !=, <, >, <=, >= jokers/wildcards %, _ (*, ? in sommige DBMSen) vergelijkingsoperator is LIKE samengestelde Booleaanse expressies AND, OR SELECT * FROM leerlingen WHERE (wpl != "Nuenen" OR lln_nr < 5) AND achternaam LIKE "V%"

voorbeeld SELECT * FROM leerlingen WHERE (wpl != "Eindhoven" OR lln_nr < 5) AND achternaam LIKE "V%" lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 4 Visser Brugstraat 15 Eindhoven 7 Theo Stuurdreef 14a

DISTINCT filtert op unieke waardes in veld of groep velden altijd SELECT DISTINCT gevolgd door velden werkt altijd op alle genoemde velden SELECT DISTINCT wpl FROM leerlingen SELECT DISTINCT achternaam, wpl FROM leerlingen

voorbeeld SELECT DISTINCT wpl FROM leerlingen lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 wpl Son Eindhoven Nuenen

voorbeeld SELECT DISTINCT achternaam, wpl FROM leerlingen lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 achternaam wpl Vos Son Schippers Eindhoven Mourabit Nuenen Visser Horst Demir

sorteren ORDER BY gevolgd door veldnamen altijd aan eind van query ASC(ending): default oplopend: 1  309, 'a'  'z' DESC(ending) aflopend: 423  1, 'z'  'a' SELECT * FROM leerlingen ORDER BY wpl, achternaam DESC

voorbeeld SELECT * FROM leerlingen ORDER BY wpl, achternaam DESC lln_nr voornaam achternaam adres wpl 4 Joop Visser Brugstraat 15 Eindhoven 5 Mieke 2 Marleen Schippers Kerkstraat 12 8 Nisa Demir Hoogeind 8 3 Issam Mourabit Struweel 81 Nuenen 6 Irene Horst Domweg 21 1 Vos Bruggelaan 17 Son 7 Theo Stuurdreef 14a lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl 2 Marleen Schippers Kerkstraat 12 Eindhoven 4 Joop Visser Brugstraat 15 5 Mieke 8 Nisa Demir Hoogeind 8 3 Issam Mourabit Struweel 81 Nuenen 6 Irene Horst Domweg 21 1 Vos Bruggelaan 17 Son 7 Theo Stuurdreef 14a

rekenfuncties gebruikt na SELECT MIN(imum) MAX(imum) SUM (som) AVG (average/gemiddelde) SELECT MIN(lln_nr) FROM leerlingen SELECT SUM(lln_nr) FROM leerlingen MIN(lln_nr) 1 SUM(lln_nr) 36

COUNT telt records in de resultaat tabel/groepen gebruikt na select jullie mogen altijd COUNT(*) gebruiken SELECT COUNT(*) FROM leerlingen WHERE wpl = "Eindhoven" SELECT COUNT(adres) FROM leerlingen WHERE wpl = "Eindhoven" COUNT(*) 4 COUNT(adres) 4

groeperen GROUP BY gevolgd door veldnamen na WHERE (of FROM als WHERE ontbreekt) groepeert op unieke waardes in veld of groep velden werkt altijd op alle genoemde velden COUNT werkt nu op de individuele groepen SELECT wpl, COUNT(*) FROM leerlingen GROUP BY wpl SELECT achternaam, wpl, COUNT(*) FROM leerlingen GROUP BY achternaam, wpl

voorbeeld SELECT wpl, COUNT(*) FROM leerlingen GROUP BY wpl lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 4 3 Issam Mourabit Struweel 81 Nuenen lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 4 3 Issam Mourabit Struweel 81 Nuenen wpl COUNT(*) Son 2 Eindhoven 4 Nuenen

voorbeeld SELECT achternaam, wpl, COUNT(*) FROM leerlingen GROUP BY achternaam, wpl lln_nr voornaam achternaam adres wpl 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 achternaam wpl COUNT(*) Vos Son 1 Schippers Eindhoven Mourabit Nuenen Visser 2 Horst Demir

filters op groepen HAVING werkt hetzelfde als WHERE maar op groepen in plaats van records SELECT achternaam, wpl, COUNT(*) FROM leerlingen GROUP BY achternaam, wpl HAVING COUNT(*) = 1 AND wpl = "Eindhoven"

voorbeeld SELECT achternaam, wpl, COUNT(*) FROM leerlingen GROUP BY achternaam, wpl HAVING COUNT(*) = 1 AND wpl = "Eindhoven" lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 1 Joop Vos Bruggelaan 17 Son 2 Marleen Schippers Kerkstraat 12 Eindhoven 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 2 Marleen Schippers Kerkstraat 12 Eindhoven 1 8 Nisa Demir Hoogeind 8 lln_nr voornaam achternaam adres wpl COUNT(*) 2 Marleen Schippers Kerkstraat 12 Eindhoven 1 8 Nisa Demir Hoogeind 8 achternaam wpl COUNT(*) Schippers Eindhoven 1 Demir

kan ook anders SELECT achternaam, wpl, COUNT(*) FROM leerlingen GROUP BY achternaam, wpl HAVING COUNT(*) = 1 AND wpl = "Eindhoven" SELECT achternaam, wpl, COUNT(*) FROM leerlingen WHERE wpl = "Eindhoven" GROUP BY achternaam, wpl HAVING COUNT(*) = 1 Het is wel belangrijk te beseffen dat de locatie van wpl = "Eindhoven" hier niet uitmaakt omdat wpl in de GROUP BY staat!

tabellen samenvoegen

een tabel klassen erbij klas_code mentor_id lokaal 1a tp K201 1b vp K304 1c ki K103 lln_nr voornaam achternaam adres wpl klas_code 1 Joop Vos Bruggelaan 17 Son 1a 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 1b 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8

tabellen samenvoegen heet join in database termen is van meerdere tabellen één nieuwe maken kan impliciet en expliciet impliciet via komma expliciet: via (INNER/OUTER/LEFT/RIGHT) JOIN SELECT * FROM leerlingen, klassen

voorbeeld SELECT * FROM leerlingen, klassen lln_nr voornaam achternaam adres wpl leerlingen.klas_code klassen. klas_code mentor lokaal 1 Joop Vos Bruggelaan 17 Son 1a tp K201 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c ... 8 Nisa Demir Hoogeind 8 1b vp K304 ki K103

samenvoegen via sleutel data van tabellen zomaar bij elkaar gooien is niet zinvol leerling lijkt nu in drie klassen te zitten zinvol: tabellen samenvoegen op basis van sleutels (primair en vreemd) SELECT * FROM leerlingen, klassen WHERE leerlingen.klas_code = klassen.klas_code

voorbeeld SELECT * FROM leerlingen, klassen WHERE leerlingen.klas_code = klassen.klas_code lln_nr voornaam achternaam adres wpl leerlingen.klas_code klassen. klas_code mentor lokaal 1 Joop Vos Bruggelaan 17 Son 1a tp K201 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c ... 8 Nisa Demir Hoogeind 8 1b vp K304 ki K103 lln_nr voornaam achternaam adres wpl leerlingen.klas_code klassen. klas_code mentor lokaal 1 Joop Vos Bruggelaan 17 Son 1a tp K201 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c ... 8 Nisa Demir Hoogeind 8 1b vp K304 ki K103 lln_nr voornaam achternaam adres wpl leerlingen.klas_code klassen. klas_code mentor lokaal 1 Joop Vos Bruggelaan 17 Son 1a tp K201 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c ki K103 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 1b vp K304 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8

gevorderde query's op meerdere tabellen

gevorderde query's op meerdere tabellen niks nieuws onder de zon resultaat van samenvoegen is één tabel daarop kun je dus alles doen zoals besproken bij theorie over query's op één tabel! SELECT lln_nr, wpl, lokaal FROM leerlingen, klassen WHERE leerlingen.klas_code = klassen.klas_code AND wpl = "Eindhoven" ORDER BY lokaal

voorbeeld SELECT lln_nr, wpl, lokaal FROM leerlingen, klassen WHERE leerlingen.klas_code = klassen.klas_code AND wpl = "Eindhoven" ORDER BY lokaal lln_nr voornaam achternaam adres wpl leerlingen.klas_code klassen. klas_code mentor lokaal 1 Joop Vos Bruggelaan 17 Son 1a tp K201 2 Marleen Schippers Kerkstraat 12 Eindhoven 1c ki K103 3 Issam Mourabit Struweel 81 Nuenen 4 Visser Brugstraat 15 1b vp K304 5 Mieke 6 Irene Horst Domweg 21 7 Theo Stuurdreef 14a 8 Nisa Demir Hoogeind 8 lln_nr wpl lokaal 2 Eindhoven K103 5 K201 4 K304 8

sub-query's

sub-query's query's in query's mogelijk bij: relevante keywords FROM WHERE relevante keywords IN EXISTS ALL ANY vaak aliassen nodig

voorbeeld bij FROM creëer een nieuwe tabel via query tabel is tijdelijk en moet een alias hebben gebruik tijdelijke tabel i.p.v. tabel uit database SELECT MAX(S) FROM (SELECT artikel, SUM(hoeveelheid) AS S FROM bestelde_artikelen GROUP BY artikel) AS R

voorbeeld bij WHERE creëer een nieuwe tabel via query tabel is tijdelijk en mag geen alias hebben heeft 1 veld en 1 record  gebruik =, <, >, enz. heeft 1 veld en meerdere records  gebruik IN heeft meerdere velden en records  gebruik EXISTS SELECT artikel, SUM(hoeveelheid) AS S1 FROM bestelde_artikelen GROUP BY artikel HAVING S1 = (SELECT MIN(S2) FROM (SELECT artikel, SUM(hoeveelheid) AS S2 FROM bestelde_artikelen GROUP BY artikel) AS R)

sub-query keywords IN/EXISTS ALL ANY werkt hetzelfde als bij lijsten gebruiken met vergelijkingsoperatoren <= ALL kun je gebruiken i.p.v. minimum >= ALL kun je gebruiken i.p.v. maximum ANY zelfde als SOME niet veel gebruikt

IN keyword Geef een lijst met voor- en achternamen van alle klanten die iets besteld hebben. SELECT VOORNAAM, ACHTERNAAM FROM klanten WHERE klantnummer IN (SELECT DISTINCT klantnummer FROM bestelde_artikelen)

EXISTS keyword Geef een lijst met alle klantinformatie van alle klanten die iets besteld hebben. SELECT * FROM klanten WHERE EXISTS (SELECT * FROM bestelde_artikelen WHERE K.klantnummer = BA.klantnummer)

ALL keyword Geef een lijst met daarin de slechtst verkopende artikelen en de bijbehorende verkochte aantallen. SELECT artikel, SUM(hoeveelheid) AS S FROM bestelde_artikelen GROUP BY artikel HAVING S <= ALL(SELECT SUM(hoeveelheid) FROM bestelde_artikelen GROUP BY artikel)