# SQL Commando's

# New Page

## 1️⃣ Gebruikersrechten (GRANT &amp; REVOKE)

### 🔹 GRANT

**Doel:** rechten geven aan een gebruiker

**Syntax:**

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-grant-rechten-on-dat"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">GRANT</span> rechten<span class="hljs-keyword">ON</span> database.tabel<span class="hljs-keyword">TO</span> <span class="hljs-string">'gebruikersnaam'</span>@<span class="hljs-string">'DataArnhem'</span>;`</div></div>---

### ✅ Voorbeeld: SELECT &amp; INSERT rechten geven

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-grant-select%2C-insert"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">GRANT</span> <span class="hljs-keyword">SELECT</span>, <span class="hljs-keyword">INSERT</span><span class="hljs-keyword">ON</span> school.kandidaten<span class="hljs-keyword">TO</span> <span class="hljs-string">'alex'</span>@<span class="hljs-string">'DataArnhem'</span>;`</div></div>➡️ Gebruiker `alex`:

- mag data bekijken (`SELECT`)
- mag data toevoegen (`INSERT`)
- mag **geen** UPDATE of DELETE uitvoeren

---

### 🔹 REVOKE

**Doel:** rechten verwijderen

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-revoke-all-privilege"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">REVOKE</span> <span class="hljs-keyword">ALL</span> PRIVILEGES<span class="hljs-keyword">ON</span> school.kandidaten<span class="hljs-keyword">FROM</span> <span class="hljs-string">'alex'</span>@<span class="hljs-string">'DataArnhem'</span>;`</div></div>➡️ Alle rechten van gebruiker `alex` zijn verwijderd

---

## 2️⃣ SELECT – data ophalen

### 🔹 Alle kolommen tonen

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-%2A-from-kandid"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> <span class="hljs-operator">*</span> <span class="hljs-keyword">FROM</span> kandidaten;`</div></div>---

### 🔹 Specifieke kolommen tonen

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-naam%2C-leeftij"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> naam, leeftijd<span class="hljs-keyword">FROM</span> kandidaten;`</div></div>---

### 🔹 SELECT met WHERE

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-naam-from-kan"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> naam<span class="hljs-keyword">FROM</span> kandidaten<span class="hljs-keyword">WHERE</span> leeftijd <span class="hljs-operator">>=</span> <span class="hljs-number">18</span>;`</div></div>➡️ Alleen kandidaten van 18 jaar of ouder

---

## 3️⃣ INSERT – data toevoegen

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-insert-into-kandidat"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">INSERT INTO</span> kandidaten (naam, leeftijd)<span class="hljs-keyword">VALUES</span> (<span class="hljs-string">'Sanne'</span>, <span class="hljs-number">20</span>);`</div></div>---

## 4️⃣ INNER JOIN – 2 tabellen koppelen

### 📌 Wanneer gebruiken?

- Als informatie in meerdere tabellen staat
- Altijd koppelen via ID

---

### Tabellen:

- `kandidaten(id, naam)`
- `examens(id, kandidaat_id, score)`

### ✅ Voorbeeld JOIN

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-kandidaten.na"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> kandidaten.naam, examens.score<span class="hljs-keyword">FROM</span> kandidaten<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> examens<span class="hljs-keyword">ON</span> kandidaten.id <span class="hljs-operator">=</span> examens.kandidaat_id;`</div></div>---

## 5️⃣ JOIN met 3 tabellen + AVG

### Tabellen:

- `examens(kandidaat_id, vak_id, score)`
- `vakken(id, vaknaam)`

---

### 🔹 Gemiddelde score per vak

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-vakken.vaknaa"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> vakken.vaknaam, <span class="hljs-built_in">AVG</span>(examens.score) <span class="hljs-keyword">AS</span> gemiddelde<span class="hljs-keyword">FROM</span> examens<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> vakken<span class="hljs-keyword">ON</span> examens.vak_id <span class="hljs-operator">=</span> vakken.id<span class="hljs-keyword">GROUP</span> <span class="hljs-keyword">BY</span> vakken.vaknaam;`</div></div>---

## 6️⃣ Extra voorbeeld: meerdere JOINs

<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary" id="bkmrk-select-kandidaten.na-1"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr">`<span class="hljs-keyword">SELECT</span> kandidaten.naam, vakken.vaknaam, examens.score<span class="hljs-keyword">FROM</span> kandidaten<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> examens<span class="hljs-keyword">ON</span> kandidaten.id <span class="hljs-operator">=</span> examens.kandidaat_id<span class="hljs-keyword">INNER</span> <span class="hljs-keyword">JOIN</span> vakken<span class="hljs-keyword">ON</span> examens.vak_id <span class="hljs-operator">=</span> vakken.id;`</div></div>➡️ Volledig overzicht per kandidaat per vak

---

## 🧠 Examen-onthoudlijst

- `GRANT ... TO 'naam'@'DataArnhem'`
- `REVOKE ALL PRIVILEGES`
- `INNER JOIN ... ON ...`
- `AVG()` → altijd `GROUP BY`