Registreren

    Informatie

    Het is heel gemakkelijk om lid te worden. Door je gegevens op te geven op de registratie pagina ontvang je automatisch een email met je inlog gegevens.

  • Registreer je hier

Aanmelden

    Informatie

    Omdat je niet aangemeld bent is het gebruikerspaneel niet beschikbaar. Vul hiernaast je gegevens in om gebruik te maken van het gebruikerspaneel.

Aanmeldformulier


Condities (WHERE)

Structured Query Language is een ANSI/ISO-standaardtaal voor een relationeel 'database management systeem' (DBMS). Het is een gestandaardiseerde taal die gebruikt kan worden voor taken zoals het bevragen en het aanpassen van gegevens in een relationele databank. SQL kan met vrijwel alle moderne relationele databankproducten worden gebruikt. SQL is een vierde-generatie-taal (G4-taal) omdat ze niet imperatief maar declaratief is, zoals Prolog.

Condities (WHERE)

Berichtdoor Theo » 05 Sep 2008 15:50

Inleiding
In dit artikel zal ik uitleggen hoe je condities kunt stellen aan een query. Zo kun je gerichter gegevens opvragen uit je database.


WHERE
Wanneer we een query uitvoeren willen we niet altijd alle gegevens ophalen uit de database. Je kunt dit doen door een voorwaarde te stellen in de query. Standaard opbouw van een query met WHERE:

MYSQL
Code: Alles selecteren
SELECT kolom1, kolom2 FROM tabel WHERE kolom1 = 'waarde' 

Let op: wanneer de waarde een getal is die je de quotes weg te laten. Anders wordt de waarde als tekst opgevat.

We hebben bijvoorbeeld de tabel leden. Deze tabel bevat de volgende gegevens:

Afbeelding

Stel dat we alle leden willen opvragen die als voornaam Lisette hebben. Onze query zal er als volgt uitzien:

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE voornaam='Lisette' 

Dit zal het als resultaat hebben:

Afbeelding


Operators
Wanneer je de WHERE gebruikt vergelijk je twee waarden. Hiervoor heb je verschillende, zogeheten, operators. De operators die je kunt gebruiken:

  • =: is gelijk aan;
  • <>: is niet gelijk aan;
  • >: is groter dan;
  • <: is kleiner dan;
  • >=: is groter of gelijk aan;
  • =<: is kleiner of gelijk aan;
  • LIKE: zoekt naar een patroon;
  • IN: is gelijk aan (meerdere waarden).
Met de operators kun je dus selectiever gegevens opvragen uit de database. We kunnen bijvoorbeeld alle leden opvragen die minder dan 6 punten hebben. De query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE punten < 6

Het resultaat:

Afbeelding


LIKE
Met de like kunnen zoeken naar waarden met een bepaald patroon. Als wildcard (elk willekeurig teken) gebruiken we in MySQL het procentteken: [ % ]. Ik kan dit het makkelijkste uitleggen aan de hand van een voorbeeld.

Uit de tabel leden willen alle mensen opvragen waarvan de voornaam met de letter F begint. De query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE voornaam LIKE 'F%' 

Je zal zien dat het resultaat Frans en Fred zal zijn.


IN
Wanneer je meerdere condities stelt aan een kolom kun je dat doen aan de van IN. Wederom een query om het duidelijk uit te maken. We willen alle mensen uit de database halen waarvan de achternaam Hendriks of van Geuzen is. De query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE achternaam IN ('Hendriks','van Geuzen') 

Het resultaat:

Afbeelding


Meerdere condities
Het is ook mogelijk om meerdere condities te stellen. Dat doen we met AND en/of OR. Zo kun je alle mensen opvragen die Lisette als voornaam hebben en meer of gelijk aan 10 punten hebben. De query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE voornaam = 'Lisette' AND score >= 10

Het resultaat zal enkel Lisette Boonstra zijn.

Nog een voorbeeld. We zoeken alle mensen die Erik als naam hebben óf 2 punten hebben.

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE voornaam = 'Erik' OR punten = 2

Het resultaat:

Afbeelding


NOT
Het kan ook zijn dat we gegevens willen weten waarbij een bepaalde waarde juist niet mag voorkomen. We gebruiken de queries van het kopje LIKE en IN, maar nu draaien we ze om.

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE voornaam NOT LIKE 'F%' 

MYSQL
Code: Alles selecteren
SELECT * FROM leden WHERE achternaam NOT IN ('Hendriks','van Geuzen') 

Je zal zien dat nu de omgekeerde gegevens uit de database worden gehaald.


ORDER BY
Het kan handig zijn om gegevens te sorteren, bijvoorbeeld bij een score lijst. Dit kunnen we in de query al doen. Stel dat we een ledenlijst willen maken die alfabetisch op voornaam is gesorteerd. De query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam

Het resultaat:

Afbeelding

We kunnen zowel oplopend als aflopend sorteren. Dat doen we door er ASC (voor oplopend) of DESC (voor aflopend) erachter te zetten. Zo kunnen we een score lijst maken met de hoogste scores bovenaan:

MYSQL
Code: Alles selecteren
SELECT * FROM leden ORDER BY punten DESC

Het resultaat:

Afbeelding

We kunnen ook sorteren op meerdere kolommen. Dat doe je simpel door ze achter elkaar te zetten en te scheiden door een komma. De kolom die als eerste staat genoemd wordt als eerste gebruikt. Een voorbeeld query:

MYSQL
Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam, punten


LIMIT
We kunnen het aantal resultaten beperken door een limiet te stellen. Deze heeft één of twee condities. Schematisch:

MYSQL
Code: Alles selecteren
SELECT * FROM tabel LIMIT conditie1, conditie2

In dit geval bepaald conditie1 vanaf waar er gestart wordt en conditie twee het aantal.

MYSQL
Code: Alles selecteren
SELECT * FROM tabel LIMIT conditie

In geval van één conditie zal deze het aantal aangeven. Er wordt vanaf het begin gestart.

Stel we willen een top drie van beste leden. Daarvoor hebben we de volgende query nodig:

MYSQL
Code: Alles selecteren
SELECT * FROM leden ORDER BY punten DESC LIMIT 3

We kunnen ook het tweede, derde en vierde lid opvragen van de ledenlijst:

MYSQL
Code: Alles selecteren
SELECT * FROM leden ORDER BY voornaam LIMIT 2,3
Theo
Oprichter
 
Berichten: 1795
Geregistreerd: 11 Jun 2005 17:43
Woonplaats: in_array()

Terug naar SQL



Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast


cron