Inleiding
Wat is SQL?
Net zoals een programmeertaal wordt gebruikt om te communiceren met een computer, wordt een databanktaal gebruikt om met een databank te communiceren. Een databanktaal maakt gebruik van opdrachten om te communiceren met de databank.
Deze opdrachten worden ook Query’s genoemd. SQL staat dan ook voor Structured Query Language. Een Query kan slechts een beperkt aantal dingen doen:
- Records opvragen / toevoegen / aanpassen / verwijderen
- Tabellen toevoegen / verwijderen
- Tabellen aanpassen door:
- Velden toevoegen / aanpassen / verwijderen
Keywords en Identifiers
Een SQL-query is een soort ‘zin’ met daarin ‘woorden’ en symbolen. Er zijn daarbij twee soorten ‘woorden’:
- Keywords: deze woorden zijn vastgelegd door de SQL-taal.
Bv.: SELECT, AS, … - Identifiers: woorden die gekozen zijn door de programmeur.
Bv.: de namen van tabellen en kolommen, een kolom-alias, …
Identifiers moeten aan een aantal voorwaarden voldoen:
- Ze mogen niet overeenkomen met een keyword.
- Ze mogen enkel bestaan uit letters, cijfers en underscores (_)
- Ze moeten beginnen met een letter
Relationele databanken
Het is belangrijk om te begrijpen wat een relationele databank is, voordat de SQL taal en syntax wordt uitgelegd.
Een relationele databank is een verzameling tabellen die met elkaar verbonden zijn. Een tabel bestaat uit rijen en kolommen. Elke tabel in een relationele databank moet aan bepaalde voorwaarden voldoen:
- Elke rij moet uniek zijn: twee rijen mogen nooit helemaal hetzelfde zijn (geen duplicaten).
- de volgorde van de rijen en kolommen maakt geen verschil: het verplaatsen van rijen en/of kolommen heeft geen invloed op de betekenis van de bewaarde gegevens.
- De gegevens in elke cel moeten atomair zijn: er mag maar één waarde van het attribuut in voorkomen. Er worden dus geen samengestelde of afgeleide attributen opgeslagen.
Een tabel dient om een entiteit (bijvoorbeeld “Honden”) te definiëren. Elke rij in de tabel kan dan gebruikt worden om een bepaalde soort hond (Beagle, Pug, Labrador) aan te duiden. De kolommen duiden dus de gemeenschappelijke eigenschappen aan van elke rij (elke hond heeft bijvoorbeeld een vachtkleur, staartlengte, …)
Als de Overheidsdienst Mobiliteit een database heeft, bevindt zich daar waarschijnlijk een tabel in met alle voertuigen die mensen in België gebruiken. Deze tabel zou bijvoorbeeld de modelnaam, het type, aantal wielen en aantal deuren kunnen bijhouden.
Id | Merk/Model | # Wielen | # Deuren | Type |
---|---|---|---|---|
1 | Ford Focus | 4 | 4 | Sedan |
2 | Tesla Roadster | 4 | 2 | Sports |
3 | Kawakasi Ninja | 2 | 0 | Motorcycle |
4 | McLaren Formula 1 | 4 | 0 | Race |
5 | Tesla S | 4 | 4 | Sedan |
SQL wordt gebruikt om specifieke vragen over deze gegevens te kunnen beantwoorden:
- Welke types voertuigen bestaan er met minder dan 4 wielen?
- Hoeveel modellen worden gemaakt door het merk Tesla?
Velden
De kolommen van een tabel noemen we ook wel de velden (fields). In bovenstaand voorbeeld staan 5 velden: Id, Merk/Model, #Wielen, #Deuren en Type.
Elk veld moet aan bepaalde voorwaarden voldoen:
- elk veld krijgt een duidelijke naam die binnen zijn tabel uniek is.
- Je kunt bijvoorbeeld in één tabel geen twee velden hebben met allebei de naam “Adres”.
- het veld duidelijk valt te onderscheiden van alle andere velden in de tabel.
- Je moet er bijvoorbeeld voor zorgen dat je je velden niet “Adres 1” en “Adres 2” noemt, maar wel “thuisadres” en “werkadres”.
Records
De rijen van een tabel noemen we ook wel de records. In het voorbeeld hierboven staan 5 records. Het eerste record in deze tabel is:
- Id: 1 / Merk/Model: ‘Ford Focus’ / #Wielen: 4 / #Deuren: 4 / Type: ‘Sedan’
SQL databanken
Een SQL databank is een relationele databank die de SQL taal kan gebruiken. Het is één van de meest gebruikte databank-systemen ter wereld vanwege z’n eenvoud, veiligheid en mogelijkheden tot uitbreiding.
Er bestaan een heleboel verschillende soorten SQL databanken:
- SQLite
- MySQL
- Postgres
- Oracle
- Microsoft SQL Server
- …
Al deze databanken kunnen gebruikt worden met de standaard SQL queries die je in deze cursus zal leren. In deze cursus wordt gebruik gemaakt van MySQL.
Opgepast! Elk van deze databanksystemen heeft de SQL databanktaal echter op z’n eigen manier uitgebreid met extra queries, datatypes en andere functies. Het kan dus zijn dat sommige queries op een andere manier geschreven worden, afhankelijk van het type databank.