SQL¶
Om data uit je database te halen, data in je database te stoppen, of om je databases zelf te beheren is er een taal die je kan gebruiken: SQL.
Belangrijke details:
- SQL staat voor Structured Query Language.
- Het is een taal die bedacht is als standaard voor het beheren van relationele databases.
- Het geeft jou de mogelijkheid om je database in te richten met verschillende tabellen (en deze tabellen met elkaar te verbinden!).
- Het zorgt ervoor dat je data op een gestructureerde manier kan worden opgeslagen.
- Je kan op een krachtige manier data verkrijgen uit je database met allerlei filters en condities.
- SQL is ‘high level’, de syntax is over het algemeen goed te lezen en te begrijpen.
SQL commando¶
De taal bestaat uit verschillende commando’s die je kan ‘afvuren’ op je SQL server. Vervolgens zal je SQL server jouw commando uitvoeren en jou de resultaten teruggeven.
Een voorbeeld van een SQL commando is:
Wat dit commando doet is:
- Het vraagt de SQL server om de data uit de tabel ‘studenten’ te halen.
- Het vraagt de SQL server om alleen de kolommen ‘voornaam’ en ‘achternaam’ te returnen.
- Het vraagt de SQL server om alleen de rijen te returnen waar de woonplaats ‘Amsterdam’ is.
De output van dit commando zou dan kunnen zijn:
| voornaam | achternaam |
|---|---|
| Jan | Jansen |
| Piet | Janssen |
| Kees | Klaassen |
Database beheren¶
SQL wordt niet alleen gebruikt om data te verkrijgen uit je database, maar ook om je database zelf te beheren. Zo kan je databases aanmaken, tabellen in deze databases aanmaken maar ook gebruikers aanmaken en rechten toekennen. Om databases aan te maken of je gebruikers te beheren is het aangeraden om een tool te gebruiken met een grafische interface.
Wil je met SQL een database aanmaken dan zou je dat als volgt kunnen doen:
(In SQL is een commentaar geschreven tussen -- of /* */)
Wil je vervolgens binnen deze database een tabel aanmaken dan zou je dat als volgt kunnen doen:
-- Gebruik de database my_database
USE my_database;
-- Maak de tabel aan met de naam studenten
CREATE TABLE studenten (
voornaam VARCHAR(255) NOT NULL,
achternaam VARCHAR(255) NOT NULL,
woonplaats VARCHAR(255) NOT NULL
);
CRUD¶
Een veel gebruikt concept in SQL is het CRUD model. CRUD staat voor Create, Read, Update en Delete, en heeft betrekking op de basis operaties die je kan uitvoeren op data in een of meerdere tabellen.
- Create: Maak een nieuwe rij aan in een tabel.
- Read: Lees een rij uit een tabel.
- Update: Wijzig een rij in een tabel.
- Delete: Verwijder een rij uit een tabel.
Voorbeelden van CRUD operaties in SQL:
| CRUD | SQL commando |
|---|---|
| Create | INSERT INTO studenten (voornaam, achternaam, woonplaats) VALUES ('Jan', 'Jansen', 'Amsterdam'); |
| Read | SELECT * FROM studenten; |
| Update | UPDATE studenten SET woonplaats = 'Utrecht' WHERE voornaam = 'Jan'; |
| Delete | DELETE FROM studenten WHERE voornaam = 'Jan'; |
Create¶
In een tabel zijn de kolommen (bijvoorbeeld voornaam, achternaam, woonplaats) de verschillende velden die een tabel kent. Bij het Create commando geef je invulling aan deze velden, voor één rij.
INSERT INTO studenten (voornaam, achternaam, woonplaats) VALUES ('Jan', 'Jansen', 'Amsterdam');
INSERT INTO studenten (voornaam, achternaam, woonplaats) VALUES ('Piet', 'Pietersen', 'Utrecht');
INSERT INTO studenten (voornaam, achternaam, woonplaats) VALUES ('Kees', 'Klaassen', 'Den Haag');
Deze 3 INSERT INTO commando’s zullen 3 nieuwe rijen aanmaken in de tabel studenten. Waardoor je tabel er als volgt zou kunnen uitzien:
| voornaam | achternaam | woonplaats |
|---|---|---|
| Jan | Jansen | Amsterdam |
| Piet | Pietersen | Utrecht |
| Kees | Klaassen | Den Haag |
Read¶
Om data uit een tabel te halen, gebruik je het SELECT commando.
Aan dit commando kan je voorwaarden meegeven om specifieke informatie op te kunnen halen.
Voorbeeld: Alle data uit de tabel studenten halen waar de woonplaats ‘Amsterdam’ is.
Voorbeeld: Alle data uit de tabel studenten halen waar de woonplaats ‘Amsterdam’ is en de voornaam ‘Jan’ is.
Voorbeeld: Alle data uit de tabel studenten halen waar de woonplaats ‘Amsterdam’ is of de woonplaats ‘Utrecht’ is.
Voorbeeld: Alle voornamen uit de tabel studenten waarvan de achternaam begint met de letter ‘J’ op volgorde van woonplaats.
Update¶
Om data in een tabel te wijzigen, gebruik je het UPDATE commando.
Ook hier kan je voorwaarden meegeven om specifieke informatie op te kunnen wijzigen.
Voorbeeld: Wijzig de woonplaats van alle studenten naar ‘Amsterdam’ waarvan de woonplaats ‘Weesp’ is.
Delete¶
Om data uit een tabel te verwijderen, gebruik je het DELETE commando.
Zonder voorwaarden zal het DELETE commando alle rijen uit de tabel studenten verwijderen. Om dat te voorkomen kan je ook hier voorwaarden meegeven.
Voorbeeld: Verwijder alle studenten waarvan de woonplaats ‘Beverwijk’ is.
JOIN¶
We werken met relationele databases, dit betekent dat we vaak met meerdere tabellen werken die aan elkaar gerelateerd zijn. Je kan bijvoorbeeld denken aan een tabel voor studenten en een tabel met cijfers.
Om deze informatie bij elkaar te brengen maak je gebrueik van een JOIN commando. Bijvoorbeeld:
SELECT studenten.voornaam, studenten.achternaam, studenten.woonplaats, cijfers.cijfer FROM studenten JOIN cijfers ON studenten.id = cijfers.student_id;
SQL kent verschillende soorten JOIN commando’s: - INNER JOIN: Alleen de rijen die in beide tabellen aanwezig zijn. - LEFT JOIN: Alle rijen uit de linker tabel, en de rijen uit de rechter tabel die voldoen aan de voorwaarde. - RIGHT JOIN: Alle rijen uit de rechter tabel, en de rijen uit de linker tabel die voldoen aan de voorwaarde. - FULL JOIN: Alle rijen uit beide tabellen, en de rijen uit de linker tabel die voldoen aan de voorwaarde. - CROSS JOIN: Alle mogelijke combinaties van rijen uit beide tabellen.
Meer SQL¶
SQL is nog veel meer dan dat wat hierboven is beschreven. Om daarmee aan de slag te gaan kan je denken aan:
- W3Schools SQL tutorial: https://www.w3schools.com/sql/
- MySQL documentation: https://dev.mysql.com/doc/
- LinkedIn Learning SQL tutorial: https://www.linkedin.com/learning/learning-sql-programming-8382385/learning-sql-programming
- Login met je HvA account voor gratis toegang.