<aside> 💡
Een database bewaart gegevens in tabellen, op één centrale plek. Met SQL vraag je precies op wat je nodig hebt. Deze les gaat alleen over het ophalen van gegevens — toevoegen, wijzigen en verwijderen komen later.
</aside>
Een georganiseerde verzameling gegevens op één centrale plek, mét een systeem eromheen dat regelt dat meerdere programma's er tegelijk veilig bij kunnen, en dat razendsnel kan opzoeken wat je nodig hebt.
Wat het wel is: gegevens netjes in tabellen, met een taal (SQL) waarmee je precies opvraagt wat je nodig hebt, en waar honderd gebruikers tegelijk in kunnen schrijven.
Wat het niet is: een map vol bestanden of een Excel-sheet. Die kun je niet veilig door meerdere programma's tegelijk laten bijwerken, en zoeken doe je er handmatig in.
| id | naam | klas |
|---|---|---|
| 1 | Flint | 3XR1 |
| 2 | Thyne | 3XR1 |
| 3 | Laura | 3XR1 |
Een kolom is één eigenschap (verticaal). Een rij is één speler (horizontaal), een rij heet ook wel een record. Een cel is het snijpunt van één rij en één kolom, en bevat precies één waarde. De tabel zelf heeft een naam, hier spelers.
<aside> ❓
Vraag: wat zou de primary key zijn in de studententabel van de schooldatabase?
</aside>
Elke rij krijgt een eigen, uniek nummer: de primary key. Dat klinkt overbodig, tot je één specifieke rij moet aanwijzen:
| id | naam | klas |
|---|---|---|
| 1 | Daan | 3XR1 |
| 2 | Jens | 3XR1 |
| 3 | Daan | 3XR1 |
Er zitten twee Daans in 3XR1. Zonder id kun je niet zeggen wélke van de twee je bedoelt, de database ziet twee keer exact hetzelfde. Met een id wijs je er precies één aan.
Die id verzin je trouwens niet zelf: de database deelt ze automatisch uit.
Stop je alles in één tabel, dan ga je jezelf herhalen. Kijk naar speler_naam en klas:
| id | speler_naam | klas | duur_seconden |
|---|---|---|---|
| 1 | Daan | 3XR1 | 142 |
| 2 | Casper | 3XR1 | 98 |
| 3 | Daan | 3XR1 | 210 |

Alles wat bij de spéler hoort krijgt een eigen tabel. In resultaten blijft één verwijzing over: het id van die speler. Zo'n verwijzende kolom heet een foreign key.