Skip to main content

Kennis Check blok 6

Database

 

SQL

1. Waarom gebruik je verschillende SQL-commando’s zoals SELECT, INSERT, UPDATE en DELETE?

Omdat je met elke opdracht iets anders doet met de gegevens. Met SELECT haal je gegevens op, met INSERT voeg je iets toe, met UPDATE verander je iets, en met DELETE verwijder je iets.

Als je maar één commando zou hebben, zou je alles zelf moeten bouwen. Nu is het veel makkelijker en duidelijker.


2. Wat gebeurt er als je een WHERE-clausule vergeet bij een UPDATE- of DELETE-opdracht?

Dan pas je alles aan of verwijder je alles in de hele tabel! Dat is meestal niet wat je wilt. De WHERE zorgt ervoor dat je alleen die rijen verandert die aan een bepaalde voorwaarde voldoen, bijvoorbeeld: alleen de student met ID 5.


3. Waarom gebruik je JOIN?

Stel: je hebt een tabel met studenten en een andere met klasnamen. Als je wilt zien in welke klas een student zit, moet je de tabellen combineren. Dat doe je met een JOIN. Dan kun je gegevens uit beide tabellen tegelijk laten zien, alsof het één lijst is.


4. Stel: je hebt een tabel 'studenten' en je wilt alleen de studenten uit Amsterdam zien, welke SQL-structuur gebruik je?

Dan gebruik je WHERE woonplaats = 'Amsterdam' achter je SELECT. Zo zeg je: "Geef alleen de rijen waarvan de woonplaats gelijk is aan Amsterdam."


5. Wat is het nut van een wildcard zoals '%' in een LIKE-zoekopdracht?

De % betekent: 'maakt niet uit wat hier staat'. Als je zoekt op naam LIKE 'J%', krijg je alle namen die beginnen met een J, zoals "Jesse", "Julia" of "Joris". Het is handig als je niet precies weet wat iemand heeft ingevuld.


6. Wanneer gebruik je GROUP BY en wat kun je ermee bereiken?

Met GROUP BY kun je dingen bij elkaar tellen of groeperen. Bijvoorbeeld: hoeveel studenten zitten er per klas? Dan groepeer je op klas en tel je hoeveel studenten er in elke groep zitten.


7. Waarom is het belangrijk om kolommen te kiezen in SELECT, in plaats van SELECT *?

Met SELECT * haal je alles op, ook dingen die je niet nodig hebt. Dat kan je website trager maken en is onduidelijk. Als je alleen de kolommen kiest die je nodig hebt, is je code netter en sneller.


8. Wat verandert er aan je data-structuur door een PRIMARY KEY of FOREIGN KEY toe te voegen?

Een PRIMARY KEY zorgt ervoor dat elke rij uniek is, bijvoorbeeld op ID. Een FOREIGN KEY zorgt ervoor dat een waarde in een andere tabel moet bestaan. Daardoor kun je tabellen koppelen én fouten voorkomen (zoals studenten koppelen aan een klas die niet bestaat).


9. Hoe zou jij een fout in een query ontdekken en oplossen?

Lees goed wat de foutmelding zegt. Vaak is het een typefout, een komma die mist of een fout in de naam van een kolom. Probeer de query stap voor stap te testen. Gebruik bijvoorbeeld phpMyAdmin om te kijken of je query daar werkt.


10. Wat is het verschil tussen een SQL-query schrijven in phpMyAdmin en dezelfde query uitvoeren via PHP/PDO?

In phpMyAdmin voer je de query handmatig in – één keer. Met PHP/PDO doe je dat in je code, automatisch, telkens als iemand je website gebruikt. Zo kun je gegevens tonen of opslaan zonder handmatig iets te doen.

 

PDO


Waarom kiezen we voor PDO boven oudere methodes zoals mysql_* of mysqli?

PDO is veiliger en flexibeler. Het helpt je om makkelijker over te stappen naar een andere database (bijvoorbeeld van MySQL naar SQLite).

PDO is het meest recent en modern. PDO wordt verder ontwikkeld en mysqli `minder.

PDO is iets eenvoudiger in gebruikt.


Wat is een DSN in PDO?

DSN betekent "Data Source Name". Dat is een stukje tekst waarin staat met welke database je verbinding maakt. 


Waarom is het handig om de verbinding (bijvoorbeeld connection.php) in een apart bestand te zetten?

Zo hoef je niet overal dezelfde code te typen. Als er iets verandert (zoals het wachtwoord), dan hoef je dat maar op één plek aan te passen. Je maakt je code netter, overzichtelijker en makkelijker te onderhouden.


Wat is het verschil tussen de database-instellingen op je eigen laptop en op een echte server?

Op je laptop gebruik je vaak "localhost" en een gebruiker (root) zonder wachtwoord.

Op een echte server is dat niet veilig, dus daar gebruik je andere gegevens. Het is belangrijk dat je die gegevens netjes gescheiden houdt, anders werkt je site straks niet online of wordt hij gehackt.


Wat is het verschil tussen query() en prepare() + execute()?

Met query() stuur je direct een SQL-opdracht.

Met prepare() + execute() gebruik je een veilige manier waarbij je eerst zegt "wat je ongeveer wilt doen" en daarna de gegevens pas invult. Dat is veiliger, vooral bij gegevens van een formulier.


Hoe helpt prepare() om SQL-injecties te voorkomen?

Een SQL-injectie is als iemand iets raars intypt in een formulier om je database kapot te maken. prepare() zorgt ervoor dat die invoer niet als SQL-code wordt gezien, maar gewoon als tekst. Daardoor kunnen hackers niks kapot maken.

Hoe haal je meerdere rijen uit een database met PDO?

Je doet eerst $stmt = $conn->query("SELECT ..."), dan gebruik je fetch() om één rij te krijgen of fetchAll() voor alles tegelijk. 

fetch() is handig als je maar één resultaat verwacht, zoals bij een login. fetchAll() gebruik je als je bijvoorbeeld een lijst van producten wilt laten zien.