Blok 3 - Relationele databases bevragen en wijzigen
7 - Eenvoudige informatie uit één tabel
8 - Informatie uit meerdere tabellen: joins
9 - Statistische informatie
10 – Subselects en views
11 - Wijzigen van een database-inhoud
Leereenheid 7 - Informatie uit één tabel
Het statement om gegevens op te vragen (select) kan complexe vormen aannemen. In deze leereenheid houden we het betrekkelijk eenvoudig, door de opvragingen te beperken tot één tabel.
1 - De Muziekdatabase
2 - Projecties: select … from
- projectie op kolomverzameling
- constante en berekende resultaatkolommen
- aliaskolomnamen
- distinct
3 - Datatypen
- datatypen van de SQL-standaard
- character sets
- typecasting
4 - Operatoren
- numerieke operatoren
- alfanumerieke operatoren
- datum- en tijdoperatoren
- gemengde operatoren
5 - Functies
- wat is een functie?
- datum- en tijdfuncties
- de cast-functie
- de functies case en iif
- user defined functions
6 - Selecties: where
- voorwaarden aan rijen
- vergelijkingsoperatoren
- de operator between ... and
- de operator like
- logische expressies
- prioriteit van operatoren
- de 'is-element-van'-operator in
- selecteren op null's
7 - Ordening: order … by
- klimmend en dalend ordenen
- ordenen op expressie
- verfijnd ordenen
8 - Verzamelingsoperatoren
- vereniging
- doorsnede en verschil
- verzamelingsexpressies en ordening
Leereenheid 8 - Informatie uit meerdere tabellen: joins
In leereenheid 4 hebben we kennisgemaakt met een join als ‘verbrede tabel': een tabel die ontstaat door verbreding van een tabel met kolommen uit een bijbehorende oudertabel. In deze leereenheid zullen we het joinconcept uitbreiden en zien dat een join in twee varianten kan worden gerealiseerd: een ‘inner-joinvariant' en een ‘outer-joinvariant'.
1 - Inner joins
- tabelverbreding op de inner-joinmanier
- joinen als denormaliseren
- de inner join in SQL, via de productoperator
- projectie en selectie van join
2 - Outer joins
- tabelverbreding op de outer-joinmanier
- de left outer join in SQL, via union
3 – Joinoperatoren
- de operator inner join
- de operator left outer join
4 - Samengestelde joins
- navigatie
- gegevens uit drie of meer tabellen
- joinen vanwege een selectieconditie
- gemengd gebruik van inner en outer joins
5 – Autojoins
- inner autojoins
- outer autojoins
6 - Joins over een brede sleutel
7 - Joins over een niet-sleutelverwijzing
8 - De right outer join en de full outer join
Leereenheid 9 - Statistische informatie
Bij de opvragingen in de voorgaande leereenheden correspondeerde elke celwaarde van de resultaattabel met precies één rijwaarde die werd gevonden langs het navigatiepad, een enkele keer via een eenvoudige berekening. Vaak echter is een gebruiker geïnteresseerd in tellingen of gemiddelden over alle rijen van een tabel of over groepen rijen. Denk bijvoorbeeld aan kwartaalcijfers over verkopen, uitgesplitst naar artikelgroep. In deze leereenheid behandelen we zulke statistische opvragingen.
1 - Statistische informatie: groeperen
2 - Statistieken over één groep
- statistische functies
- tellen
- optellen en middelen
- extreme waarden
- foutieve 'scheve' query's
3 - Statistieken over meerdere groepen
- de group by-clausule
- verfijnd groeperen
- voorwaarden aan groepen: having
- kiezen voor having of where
- groeperen op berekende expressie
- groeperen op optionele kolom
- groeperen als denormaliseren
4 - Statistische joinquery's
- joinen in navigatierichting één-veel
- statistische inner-joinquery's
- statistische outer-joinquery's
5 - Genest groeperen
6 - Het conceptuele algoritme
- stap voor stap volgens een denkmodel
- niet-conceptuele aspecten: geheugen en performance
7 - Groeperen en standaardisatie
Leereenheid 10 – Subselects en views
In deze leereenheid kijken we naar subselects; dat zijn select-expressies die voorkomen als deelexpressie van een select-, update- of deletestatement. We beperken ons tot subselects van select-statements. Nauw verwant aan subselects zijn views: select-query's die onder een naam bewaard kunnen worden en die veel eigenschappen gemeenschappelijk hebben met tabellen. Views zijn evenals subselects geschikt om deelproblemen mee op te lossen.
1 - Subselects als oplossing van deelproblemen
- subselect in where-clausule
- subselect in select-clausule
- subselect in from-clausule
- subselect in having-clausule
- problemen stapsgewijs oplossen
2 - Subselects en joins
- subselectnavigatie en joinnavigatie
- conditie op extra tabel
- distinct als pseudo-groeperingsoperator
- navigatie over brede sleutel
3 - Gecorreleerde subselects
- niet-gecorreleerde subselect met gecorreleerde variant
- gecorreleerde subselects met exists
- gecorreleerde subselects met not exists
4 - Geneste subselects
- voorbeelden
- problemen met 'alle' en genest gebruik van not exists
5 - De operatoren all en any
6 – Views
- van subselect naar view
- het create view-statement
7 - Kiezen uit alternatieven
Leereenheid 11 - Wijzigen van een database-inhoud
Databaseonderhoud (het zorgen voor de juiste tabelinhouden) is vaak maar een saaie aangelegenheid. Toch is dat onderhoud vanzelfsprekend van het grootste belang. In deze leereenheid gaat het om dat onderhoud: het toevoegen of verwijderen van rijen (insert, delete), of het wijzigen van celinhouden van rijen (update).
1 - Levenswijzen van een database
- typen database
- online transaction proccessing
- transactionele bedrijfssystemen
- datawarehouses
2 - Transacties
- commitmomenten
- transactiemodellen
3 - Integriteitsregels
- de referentiële integriteitsregel
- deleteregels
4 - Het insert-statement
- enkelvoudige inserts
- meervoudige inserts
5 - Het delete-statement
- eenvoudige deletes
- deletes met subselect
6 - Het update-statement
- eenvoudige updates
- updates met subselect
- update van primaire sleutel
- update van verwijssleutel