diff options
author | lonkaars <loek@pipeframe.xyz> | 2022-09-24 16:08:46 +0200 |
---|---|---|
committer | lonkaars <loek@pipeframe.xyz> | 2022-09-24 16:08:46 +0200 |
commit | 8b019f4946141950000b39196e36ce1e72d0f3ff (patch) | |
tree | cd9c4c6a4cddaf3649c98baa418203bff8c083dd | |
parent | 4e1edb93cc47a616b89fa5188eb444eb665e0160 (diff) |
alle huiswerk 5.x klaar
-rw-r--r-- | huiswerk.md | 79 |
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. |