243e2ws


Operatoren

Vergelijkende operatoren

OperatorBetekenis
=Gelijk aan
>Groter dan
<Kleiner dan
>=groter of gelijk aan
kleiner dan of gelijk aan
!=, <>Niet gelijk aan

Logische operatoren

Select <Kolomnamen>
from <tabel>
where <conditie>
order by <kolomnaam>

Logische operatoren maken het mogelijk om meerdere condities te combineren

Bijvoorbeeld toon alle studenten die in Nijmegen wonen en na 1999 zijn geboren

where woonplaats = ‘Nijmegen’ 
   and geb_datum >01-jan-1999

Overzicht logische operatoren

OperatorBetekenis
AndBeide expressies moeten waar zijn
OrEen van beide expressies moet waar zijn
NotDe expressie moet niet waar zijn

Lijsten

In Operator

Met de IN operator kun je een conditie opgeven waarbij je wilt dat een waarde voorkomt in een groep van waardes

ls je wilt weten welke studenten uit Nijmegen, Arnhem of Oss komen dan gebruik je de volgende query Dit kan korter

select * 
from student 
where woonplaats = 'Nijmegen' 
   or woonplaats = ‘Arnhem' 
   or woonplaats = ‘Oss' 

Like Operator

net als op Linux en windows is het mogelijk om Wildcards te gebruiken Dit kan alleen in de combinatie met de operator like

De wildcards _ en % hebben dezelfde betekenis in SQL als ? en * op Linux

SQL WildcardsBetekenisOp Linux
_Exact 1 willekeurig teken?
%0, 1 of meer willekeurige tekens*

Between

Welke studenten zijn geboren tussen 1 januari 2000 en 31 januari 2001

select * 
from student 
where geb_datum between '2000-01-01' and '2001-01-31'

Is null Operator

Om te toetsen of iets null is gebruik je niet = null maar is null

Null

  • Met de where clausule toon je rijen waar de conditie (voorwaarde) klopt

  • Kun je er ‘ja’ (of TRUE) op antwoorden?

  • Met ‘=’ vergelijk je 2 expressies (uitdrukkingen)

  • Je kunt geen ja antwoorden op de vraag:

    • Bij welke rijen is niets gelijk aan niets?

Met ‘IS NULL’ check je of een attribuut geen waarde heeft

Expressies

Een expressie (uitdrukking) kun je opnemen in de select clausule Bijvoorbeeld

select student_nr/2 
,   voornaam 
,   ‘hello world’ 
from student 

Expressies hoeven niet altijd over de inhoud van kolommen te gaan

select 1+1 
from studenten 

dit is handig om bijv om te weten te komen hoeveel rijen er zijn

Concat

Kolommen (tekst) kun je aan elkaar plakken met de functie concat

select concat(voornaam,' ',achternaam)
from student 

SELECT ZONDER FROM

In MySQL kun je de from clausule weglaten tenzij je kolommen/attributen gebruikt die refereren aan tabellen

select 1+1;
select curdate();
select now()

Functies

Functies in een SQL zijn vergelijkbaar met functies in Python: je stopt waardes erin en er komt iets uit

upper (‘bio-informatica’)

De functie upper zal alle tekst retourneren in uppercase (hoofdletters)

select upper(‘bio-informatica’);

Tekst functies

FunctieUitwerking
InstrZoek naar het voorkomen van een substring
lengthlengte bepalen van een string
lowermaakt lowercase
uppermaakt uppercase
ltrimHaal tekens (standaard is spatie) weg aan de linker kant
rtrimHaal tekens (standaard is spatie) weg aan de Rechter kant
substrHaal een substring uit een string
concatPlakken van meerdere strings aan elkaar
likeEenvoudige tekstpatronen met wildcards % en _
sounds_likeZoekopdrachten op uitspraak
regexpZoekopdrachten op basis van regular expressions

Numerieke functies

Functiewerking
modDe modulus functie
logBerekening van het logaritme
lnNatuurlijk logaritme
roundAfronden van een getal
ceilAfroning naar boven
floorAfronding naar beneden
sqrtWortel

Datum functies

De database is altijd in staat om tijdseenheden op te tellen bij een datum

Functiewerking
curdatereturns current date
curtimereturns current time
nowRetourneert datum en tijd
period_diffVerschil in maanden tussen twee data
datediffDatum min andere datum (dagen)
daynameNaam van de weekdag
dayDag van de maand
weekWeeknummer

algemene functies

Algemene functies zijn functies die op alle datatypes werken

Voorbeelden van algemene functies zijn:

FunctieWerking
caseZet een waarde om in een andere waarde
ifnullVervangt een null door een andere waarde
nullifVervangt een waarde door null als…
ifIf/else constructie

Opdrachten

select * from student  
where voornaam like '%c%'  
  
  
select * from student  
         where null is null  
  
  
select *  
from student  
where voornaam like '%a%' and voornaam like '%e%' or 1 = 1  
  
  
select student_nr/2  
,   voornaam  
,   'hello world'  
from student  
  
  
  
select 1+1  
from student  
  
  
select 1+1;  
select curdate();  
select now()  
  
  
select voornaam, achternaam, geb_datum  
from student  
where geb_datum is not null  
order by  geb_datum asc  
limit 1  
  
select voornaam  
from student  
where instr(lower(voornaam), 'a') =0  
  
  
select *  
from student  
  
select *  
from klas  
  
select *  
from docent  
  
select distinct woonplaats  
from student  
  
select voornaam  
from student  
order by  voornaam asc  
  
  
select floor(sqrt(student_nr)/9)  
from student  
  
select voornaam, tussenvoegsels, achternaam, klas_naam  
from student  
join klas k on student.klas_id = k.klas_id  
order by student.klas_id, achternaam asc  
  
  
select voornaam, klas_naam  
from student  
join klas k on student.klas_id = k.klas_id  
where klas_naam = 'Bin1a'  
order by student.klas_id asc  
  
  
select *  
from