Database queries
Database maken
Tot nu toe heb je steeds gebruik gemaakt van een bestaande database. De queries om de database aan te maken vond je in een sql-bestand. In dit hoofdstuk ga je zelf een database maken.
Stel je moet een database maken voor een bibliotheek. De database bestaat uit 3 tabellen:
- De tabel klanten bestaat uit de volgende velden:
voornaam,achternaam,emailadres - De tabel boeken bestaat uit de velden:
titel,jaarenhoeveelste druk - De tabel uitleen bestaat uit
uitleendatum,retourdatum,klant_id,boek_id - Alle tabellen hebben een veld
iddat tevens de primaire sleutel is. - De tabel uitleen heeft 2 vreemde sleutels:
klant_iddie refereert naar de primaire sleutelidin de tabel klanten- en
boek_iddie refereert naar de primaire sleutelidin de tabel boeken.
Hieronder zie je het script om de database aan te maken:
CREATE DATABASE bibliotheek;
USE bibliotheek;
CREATE TABLE klanten (
id INT AUTO_INCREMENT PRIMARY KEY,
voornaam VARCHAR(50),
achternaam VARCHAR(50),
emailadres VARCHAR(100)
);
CREATE TABLE boeken (
id INT AUTO_INCREMENT PRIMARY KEY,
titel VARCHAR(100),
jaar INT,
druk INT
);
CREATE TABLE uitleengegevens (
id INT AUTO_INCREMENT PRIMARY KEY,
uitleendatum DATE,
retourdatum DATE,
klant_id INT,
boek_id INT,
FOREIGN KEY (klant_id) REFERENCES klanten(id),
FOREIGN KEY (boek_id) REFERENCES boeken(id)
);
Uitleg
- In de regel
id INT AUTO_INCREMENT PRIMARY KEYgeef je aan dat je een veld met de naamidwilt aanmaken van het typeINT.idis een primaire sleutel. De waarde is een unieke integer die het record identificeert. MetAUTO_INCREMENTwordt aangegeven bij ieder nieuw record hetidautomatisch wordt gegenereerd naar het eerst volgende integer. - Met
VAR_CHAR(50)wordt aangegeven dat de waarde van het typestringoftekstis. Het mag maximaal 50 karakters bevatten. - Met
INTwordt een geheel getal bedoeld - Met
DATEgaat het om een datum-veld. - Onderaan bij uitleen zie je dat de vreemde sleutels
FOREIGN KEYverwijzen naar de velden id in de klanten- en boekentabel.
Oefeningen
Voeg onderstaande records toe aan de tabel boeken van de database:
+----+----------------------------+------+------+
| id | titel | jaar | druk |
+----+----------------------------+------+------+
| 1 | De Avonden | 1947 | 1 |
| 2 | Het Diner | 2009 | 1 |
| 3 | De Ontdekking van de Hemel | 1992 | 1 |
| 4 | De Aanslag | 1982 | 1 |
+----+----------------------------+------+------+
Voeg onderstaande records toe aan de tabel klanten:
+----+----------+------------+--------------------------+
| id | voornaam | achternaam | emailadres |
+----+----------+------------+--------------------------+
| 1 | Jan | Jansen | jan.jansen@email.com |
| 2 | Piet | Pietersen | piet.pietersen@email.com |
| 3 | Klaas | Klaassen | klaas.klaassen@email.com |
| 4 | Emma | de Vries | emma.devries@email.com |
+----+----------+------------+--------------------------+
Voeg onderstaande records toe aan de tabel uitleengegevens:
+----+--------------+-------------+----------+---------+
| id | uitleendatum | retourdatum | klant_id | boek_id |
+----+--------------+-------------+----------+---------+
| 5 | 2023-01-01 | 2023-01-15 | 1 | 1 |
| 6 | 2023-01-02 | 2023-01-16 | 2 | 2 |
| 7 | 2023-01-03 | 2023-01-17 | 3 | 3 |
| 8 | 2023-12-29 | 2024-01-12 | 4 | 4 |
+----+--------------+-------------+----------+---------+
Maak nu het sql-script voor een database met 3 tabellen:
- Voor een autoverhuurbedrijf moet je een database maken
- De tabel auto's bevat gegevens over het merk, kenteken, kilometerstand en aankoopdatum
- De tabel huurders bevat gegevens zoals voornaam, achternaam, rijbewijsnummer, adres, postcode, plaats en geboortedatum.
- De tabel verhuur bevat gegevens over de auto, de datum van verhuur, de verwachte datum waarop de auto wordt ingeleverd en de huurder.
- Gebruik logische namen voor de naam van velden en denk om primaire en vreemde sleutels!