SQL tutorials:
-----------
Tutorial MySQL SQL , operatoren

Inhoud
Intro
Operatoren
-Algemene regels
-Logische operatoren
-Reken operatoren
-Vergelijkingsoperatoren
-Bitsgewijze operatoren

Intro

Alvorens te beginnen aan deze tutorial wordt geadviseerd om eerst de tutorial Tutorial ANSI SQL-92 te lezen.

Deze tutorial gaat over operatoren, gespecificeerd op het gebruik van een MySQL database. De SQL query's die hieronder worden gebruikt kunnen ook werken op databases anders dan MySQL, maar niet persé.

De gebruikte SQL query's zijn getest op een MySQL database, versie 3.23.58, versie 4.1.11 en versie 5.0.18-nt. Eventuele opmerkingen over verschillen in deze versie staan bij de uitgevoerde SQL query's.

naar boven

Operatoren

Algemene regels

Er zijn verschillende soorten operators. De operators verschillen niet alleen in functie maar ook in prioriteitsniveau. Dat houdt in dat, wanneer er meerdere operators in een SQL query staan, de ene operator eerder wordt uitgevoerd dan de andere. Daarom is het belangrijk om de volgorde van operatorprioriteit te weten zodat de juiste resultaten uit de SQL query's worden verkregen. Hieronder staat een lijst met operators die gebruikt kunnen worden in MySQL. De operators staan gerangschikt van hoogste naar laagste prioriteit. Als er operators op dezelfde regel staan dan hebben deze een gelijke prioriteit en worden ze in de SQL query van links naar rechts afgehandeld.

  BINARY
  NOT  !
  - (min)
  *  /  %  DIV
  +  -
  <<  >>
  &
  |
  <  <=  =  <=>  !=  <>  >=  >  IN  IS  LIKE  REGEXP  RLIKE
  BETWEEN
  AND  &&
  OR  ||


Om de prioriteit van operatoren te beinvloeden en dus om te zetten naar je eigen keus, kun je gebruik maken van de bekende haakjes, ( en ) . Deze haakjes kun je ook gebruiken om de SQL query's te verduidelijken als er veel operators in staan. Hieronder staan twee rekenkundige voorbeelden met de antwoorden er onder.

SELECT 1 + 2 * 3 / 4 ;


geeft als antwoord: 2.50

SELECT (((1 + 2) * 3) / 4) ;


geeft als antwoord: 2.25

MySQL kent nog een aantal operators die niet in deze lijst staan maar deze operators zijn geen operators die vaak gebruikt zullen worden in SQL. Ook worden niet alle operators die in deze lijst staan in deze tutorial behandelt, deze komen of later aan bod of worden in een andere (nog te schrijven) tutorial uitvoeriger behandeld.

naar boven

Logische operatoren

De logische operatoren worden besproken in deze tutorial. De ANSI norm geldt voor deze operatoren ook voor MySQL met deze uitzondering dat in MySQL gebruik gemaakt kan worden van || als een logische OR, maar geadviseerd wordt om geen || te gebruiken aangezien dit bij andere databases voor iets geheel anders staat.

naar boven

Reken operatoren

De operatoren die hier beschreven worden voeren in principe standaard berekeningen uit. De reken-operatoren werken alleen op getallen en niet op strings. Wel is het zo dat strings die op getallen lijken worden geconverteerd naar hun numerieke waarden.


naar boven

Vergelijkingsoperatoren

Het principe achter vergelijkingsoperator is de zogenaamde Boolean waarde. Dit houdt in dat wanneer een vergelijking juist (waar) is, deze een 1 oplevert. Is een vergelijking niet juist (onwaar) dan levert de vergelijking een 0 op. Het is dus te vergelijken met de TRUE en FALSE waarden die vergelijkingen in programmeertalen opleveren.
Bij vergelijkingen wordt er onderscheid gemaakt tussen strings, integers en datum- en tijdwaarden. In de voorbeelden hieronder wordt de werking hiervan verduidelijkt.
Bij een vergelijking waarbij 1 van de argumenten NULL is, zal de uitkomst ook NULL zijn en dus geen 1 of 0. De uitzondering hierop is bij de operator <=>, deze zal wel 0 of 1 geven wanneer 1 of allebei van de argumenten NULL is.
In de voorbeelden hieronder wordt gebruik gemaakt van de volgende constructie die hopelijk duidelijk is:

argument1 operator argument2 : uitkomst (0 of 1)



naar boven

Bitsgewijze operatoren

Eerst even een korte uitleg over bits. Computers slaan informatie op via het binaire stelsel. Dit binaire stelsel is een tweetallig getalsysteem. Doorgaans wordt er gewerkt met het decimale stelsel (10-tallig). Het binaire stelsel werkt alleen met 0 en 1. Deze cijfers worden bits genoemd als ze deel uit maken van het binaire stelsel. Hieronder een tabel waarin de getallen 1 tot en met 10 en 12 en 16 binair worden weergegeven:

cijfer binair
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
12 1100
16 10000


De bitsgewijze operatoren (bitwise operators) die wij gaan gebruiken zijn: & (en) en | (of). Om het duidelijk te houden gebruiken we lage (decimale) getallen om mee te rekenen. Zo wordt hopelijk snel duidelijk hoe deze operatoren werken.


Shift operatoren

Shift operatoren worden gebruikt om een bepaald getal uit het decimale stelsel te ´verplaatsen´ binnen het binaire stelsel waardoor er een ander decimaal getal ontstaat. MySQL kent twee shift operatoren.


-----------

Ik hoop dat jullie er wat van geleerd hebben. Mocht je fouten tegenkomen (nobody's perfect) laat me dit dan s.v.p. weten op donny at semeleer dot nl . Uiteraard zijn op- en aanmerkingen ook van harte welkom!
De functies van MySQL worden in aparte tutorials besproken.

-----------

Overige SQL tutorials:


-----------
Interessante links:

-----------

Naslagwerken gebruikt voor deze tutorial:

SQL voor MySQL ontwikkelaars door Rick f. van der Lans, ISBN 978 90 12 12150 7

Websites gebruikt voor deze tutorial:

http://www.mysql.com
http://developer.mimer.se/validator/parser92/index.tml
http://www.w3schools.com/sql/sql_intro.asp
http://www.phpfreakz.nl

-----------

Deze tutorial is gemaakt door Donny Semeleer (Donny_nl). Niets van deze tutorial mag gebruikt worden zonder schriftelijke toestemming van de maker. De gebruikte gegevens zijn fictieve gegevens. Copyright 2005-2010 D. Semeleer. Laatste geupdate op 17 september 2006.

 Valid HTML 4.01! Valid CSS!