aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-09-24 16:08:46 +0200
committerlonkaars <loek@pipeframe.xyz>2022-09-24 16:08:46 +0200
commit8b019f4946141950000b39196e36ce1e72d0f3ff (patch)
treecd9c4c6a4cddaf3649c98baa418203bff8c083dd
parent4e1edb93cc47a616b89fa5188eb444eb665e0160 (diff)
alle huiswerk 5.x klaar
-rw-r--r--huiswerk.md79
1 files changed, 75 insertions, 4 deletions
diff --git a/huiswerk.md b/huiswerk.md
index be0c4ed..dd956bd 100644
--- a/huiswerk.md
+++ b/huiswerk.md
@@ -122,6 +122,14 @@
|5.11 |`select naam from telefoon left join klant on klant.klantnr = telefoon.klantnr where naam is not null group by klant.klantnr having count(telefoon.telefoonnr) = 2;`|
|5.12 |`select telefoonnr from telefoon where klantnr is null;`|
|5.13 |`select naam, telefoonnr from klant left join telefoon on telefoon.klantnr = klant.klantnr order by naam;`|
+|5.14 |[open vraag](#514)|
+|5.15 |[open vraag](#515)|
+|5.16 |[open vraag](#516)|
+|5.17 |[open vraag](#517)|
+|5.18 |[open vraag](#518)|
+|5.19 |[open vraag](#519)|
+|5.20 |[open vraag](#520)|
+|5.21 |[open vraag](#521)|
## 1.07
@@ -229,7 +237,7 @@ De `count()` functie telt het aantal rijen met een "truthy" waarde. Omdat bij
`count(*)` elke rij minstens een kolom heeft met een gedefinieerde waarde krijg
je 8, terwijl in de 'academie' kolom een keer NULL voorkomt.
-# 3.03
+## 3.03
```
MariaDB [mysql]> select count(*) from student cross join opleiding;
@@ -246,11 +254,11 @@ MariaDB [mysql]>
Het rijenaantal is de hoeveelheid rijen van de eerste tabel vermenigvuldigd met
de hoeveelheid rijen in de tweede tabel (in dit geval 8 * 18 = 144).
-# 3.04
+## 3.04
`cross join` maakt elke combinatie van rijen.
-# 3.16
+## 3.16
```
MariaDB [mysql]> select omschrijving, count(studentnr) as aantal_studenten from student as s join opleiding as o on s.oplcode = o.oplcode group by omschrijving having count(studentnr) > 2;
@@ -268,7 +276,7 @@ MariaDB [mysql]>
Deze query laat voor elke opleiding met meer dan 2 studenten de naam en het
studentenaantal zien.
-# 3.17
+## 3.17
1. Tabel maken met omschrijving en unieke studentnummers
```
@@ -336,3 +344,66 @@ studentenaantal zien.
2 rows in set (0.000 sec)
```
+## 5.14
+
+```
+MariaDB [mysql]> describe bezoek;
++---------------+--------------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++---------------+--------------+------+-----+---------+-------+
+| reisnr | decimal(4,0) | NO | PRI | NULL | |
+| objectnaam | varchar(10) | NO | MUL | NULL | |
+| volgnr | decimal(2,0) | NO | PRI | NULL | |
+| verblijfsduur | decimal(4,0) | NO | | NULL | |
++---------------+--------------+------+-----+---------+-------+
+4 rows in set (0.001 sec)
+
+```
+
+De tabel `bezoek` heeft de kolommen `reisnr` en `volgnr` beide als primary key
+ingesteld, dus 2.
+
+## 5.15
+
+De sleutels hoeven niet direct onder elkaar te staan, in dit geval zit de
+`objectnaam` kolom er nog tussen.
+
+## 5.16
+
+De rode gevulde ruit staat voor een kolom die wel een key is, maar geen primary
+key.
+
+## 5.17
+
+Een of meer beide kanten op, want een klant kan meerdere reizen maken, en een
+reis kan meerdere klanten bevatten.
+
+## 5.18
+
+Nee, op deze manier is twee keer dezelfde reis ingevuld (reisnr 31 met klantnr
+121).
+
+## 5.19
+
+Volgens het schema die MySQL Workbench tekent zou elke klant minimaal één
+telefoonnummer moeten hebben, maar in realiteit is dit nul of meer.
+
+## 5.20
+
+```
+MariaDB [mysql]> describe telefoon;
++------------+---------+------+-----+---------+-------+
+| Field | Type | Null | Key | Default | Extra |
++------------+---------+------+-----+---------+-------+
+| telefoonnr | int(11) | NO | PRI | NULL | |
+| klantnr | int(11) | YES | MUL | NULL | |
++------------+---------+------+-----+---------+-------+
+2 rows in set (0.001 sec)
+
+```
+
+Dit kan, omdat de `klantnr` kolom null mag zijn.
+
+## 5.21
+
+Elk bezoek gaat naar precies één hemelobject.