# Extra uitleg SQL

### Database maken

Start MariaDB (MySQL) in XAMPP en ga naar [http://localhost/phpmyadmin](http://localhost/phpmyadmin)

Je kunt ook op de admin in XAMPP drukken:

![image-1676379334123.png](https://www.roc.ovh/uploads/images/gallery/2023-02/scaled-1680-/image-1676379334123.png)

In phpmyadmin, maak je een nieuwe database en noem die **student**.

![image-1676378685637.png](https://www.roc.ovh/uploads/images/gallery/2023-02/scaled-1680-/image-1676378685637.png)

Download een importbestand (in dit voorbeeld student.sql)[ ](https://www.roc.ovh/attachments/85)en importeer deze.

![image-1676378813133.png](https://www.roc.ovh/uploads/images/gallery/2023-02/scaled-1680-/image-1676378813133.png)

### Select  


Om gegevens uit de database te halen is een aparte taal bedacht. Dit heet SQL. Een SQL-programmaatje wordt een query genoemd en telt meestal maar een paar regel.

De meeste query's halen gegeven uit de database en de meest eenvoudige query haalt alle gegevens uit één entiteit. Stel, je wilt alle informatie van alle studenten zien, dan is dit de query:

```pl/sql
SELECT * FROM student
```

<span style="background-color: #f8cac6;">SELECT </span>betekent; haal de gegevens op.

<span style="background-color: #f8cac6;">\*</span> betekent *alle* kolommen

<span style="background-color: #f8cac6;">FROM </span>betekent dat er een tabelnaam (entiteitsnaam) volgt en <span style="background-color: #f8cac6;">*student* </span>is dan de naam van de tabel.

Voer de query uit in *phpmyadmin* onder het tabje SQL.

[![image-1676379711258.png](https://www.roc.ovh/uploads/images/gallery/2023-02/scaled-1680-/image-1676379711258.png)](https://www.roc.ovh/uploads/images/gallery/2023-02/image-1676379711258.png)

Zorg er voor dat je de juiste database hebt geselecteerd (hebt aangeklikt).

Je hebt nu een \* in de query gebruikt. Dat betekent dat je alle velden laat zien. Stel dat je alleen de voornaam en het email adres wilt afdrukken dan kan je dat als volgt.

```sql
SELECT voornaam, email FROM student
```

<div class="cm-scroller" id="bkmrk-" tabindex="-1"></div><div class="cm-scroller" id="bkmrk--3" tabindex="-1"></div><div class="cm-scroller" id="bkmrk--5" tabindex="-1"></div>### Aliasen (AS)  


Stel dat je nu de kolomnamen wilt veranderen dan kan je aliassen gebruiken. Stel de kolomnaam *voornaam* veranderen in *Naam*, en *email* in *eMail* dan kan dat als volgt.

```
SELECT voornaam as 'Naam', email as 'eMail' FROM student
```

### WHERE  


Stel je wilt alle gegevens van de student met de voornaam *Grazia* zien. Dat doe je door een WHERE te gebruiken.

De standaard query wordt als volgt opgebouwd

```SQL
SELECT kolomnaam1, kolomnaam2, .... of * voor alles
FROM tabelnaam
WHERE de conditie
```

De query die alle gegeven van de student *Grazia* opzoekt wordt dan

```SQL
SELECT * FROM `student`
WHERE voornaam='Grazia'
```

Let op dat *Grazia* een string is en daarom tussen '(singel quotes) moet worden gezet.

### Wildcards (LIKE)

Een conditie kan ook een zogenaamde wildcard bevatten. Een wildcard is bijvoorbeeld alle namen die met een a beginnen. Daarvoor gebruik je in plaats van de = een like en je gebruikt bijvoorbeeld 'a%' om aan te geven dat de naam met een a moet beginnen. Of bijvoorbeeld '%t' om aan te geven dat de naam met een t moet eindigen.

OK, stel willen alle gegevens van alles studenten zien van wie de voornaam met een a begint.

```SQL
SELECT * FROM student
WHERE voornaam LIKE 'a%'
```

Hoeveel studenten hebben een voornaam die met een a begint?

Nog een voorbeeld, stel willen alle gegevens van alles studenten met een email adres dat met *.com* eindigt. Hoe doe je dat?

```SQL
SELECT * FROM student
WHERE email  like '%.com'
```

### AND en OR

Stel we willen alle gegevens van alle studenten waarvan de voornaam met een a of een b of een c begint. Dan kunnen we met OR (net als in PHP) deze condities combineren.

```SQL
SELECT * FROM student
where voornaam like 'a%' OR voornaam like 'b%' OR voornaam like 'c%'
```

Stel dat je in deze bovenstaande query per ongeluk een AND had gebruikt, wat zou er dan gebeuren? Als je wilt kan je het uitproberen!

Stel we willen alle gegevens van alles studenten van wie de voornaam met een a begint én van wie het e-mailadres op *.com* eindigt.

Daarvoor hebben we een AND nodig om de twee condities te combineren.

```SQL
SELECT * FROM student
where voornaam like 'a%' AND email like '%.com'
```

Nu een lastige. Stel we willen de studenten van wie de voornaam met een a, b of c begint en van wie het e-mailadres op *.com* eindigt. We moeten nu de AND en OR gaan combineren.

Als je dat doet dan is er een regel en dat is dat je de OR tussen haakjes moet zetten omdat die bij elkaar hoort.

Dus de gecombineerde query wordt dan;

```SQL
SELECT * FROM student
where ( voornaam like 'a%' OR voornaam like 'b%' OR voornaam like 'c%' )
       AND email like '%.com'
```