SQL Basis

Hoofdstuk 4 - Filteren

  • Binnen het SELECT-statement kan gefilterd worden met de WHERE clausule
  • De WHERE clausule staat direct achter de tabelnaam
  • Filteren op de database heeft de voorkeur boven filteren op applicatie niveau
SELECT <kolom1>,
       <kolom2>
FROM   <tabel>
WHERE  <kolom1 = 10 >

Selecteer productnaam en productprijs uit Products waarbij de prijs 3.49 is

-- Oracle / MySQL / SQL Server
SELECT prod_name,
       prod_price
FROM   Products
WHERE  prod_price = 3.49;
prod_nameprod_price
Fish bean bag toy3.49
Bird bean bag toy3.49
Rabbit bean bag toy3.49
Operator Beschrijving
= Gelijk aan
<> of != Ongelijk aan
< Kleiner dan
<= Kleiner of gelijk aan
> Groter dan
>= Groter of gelijk aan
BETWEEN x AND y Tussen
NOT BETWEEN x AND y Niet tussen
IS NULL Leeg veld
IS NOT NULL Geen leeg veld


Naslag operatoren: MySQl / MariaDB / SQLite,   SQL Server,   PostgreSQL,   Oracle


Selecteer productnaam en prijs uit Products waarbij de prijs minder is dan 10

-- Oracle / MySQL / SQL Server	
SELECT prod_name,
       prod_price
FROM   Products
WHERE  prod_price < 10;
prod_nameprod_price
Fish bean bag toy3.49
Bird bean bag toy3.49
Rabbit bean bag toy3.49
8 inch teddy bear5.99
12 inch teddy bear8.99
Raggedy Ann4.99
King doll9.49
Queen doll9.49

Selecteer vendor-id en productnaam uit Products waarbij vendor-id niet gelijk is aan DLL01

-- Oracle / MySQL / SQL Server	
SELECT vend_id,
       prod_name
FROM   Products
WHERE  vend_id != 'DLL01';
vend_idprod_name
BRS018 inch teddy bear
BRS0112 inch teddy bear
BRS0118 inch teddy bear
FNG01King doll
FNG01Queen doll

Let op: De quotes om de waarde 'DLL01' zijn nodig bij het filteren op tekst (strings)


Selecteer productnaam en prijs uit Products waarbij de prijs tussen de 5 en de 10 ligt

-- Oracle / MySQL / SQL Server	
SELECT prod_name,
       prod_price
FROM   Products
WHERE  prod_price BETWEEN 5 AND 10;
prod_nameprod_price
8 inch teddy bear5.99
12 inch teddy bear8.99
King doll9.49
Queen doll9.49

BETWEEN 5 AND 10 betekent inclusief de 5 en de 10

  • Datumwaarde opgeven als een string, dus tussen ' '
  • Let op de datum notatie. Voorkom misverstanden

Selecteer alle ordernummers en data uit Orders met een latere datum dan 1 februari 2012

-- Oracle	
SELECT	 order_num,
         order_date
FROM     Orders
WHERE    order_date > '01-FEB-2012'
ORDER BY order_date;
-- MySQL / SQL Server	
SELECT	 order_num,
         order_date
FROM     Orders
WHERE    order_date > '2012-02-01'
ORDER BY order_date;
order_numorder_date
200082012-02-03 00:00:00
200092012-02-08 00:00:00
200052012-05-01 00:00:00
  • NULL is niet gelijk aan 0 (nul) of '' (lege string)
  • Null is een niet toegekende waarde
  • Een niet toegekende waarde wordt beschouwd als onbekend
  • Iets vergelijken met iets dat onbekend (NULL) is, geeft als resultaat onbekend (NULL)
SELECT cust_name
FROM   Customers
WHERE  cust_email = NULL -- Ongewenst	
  • Gebruik i.p.v. het = teken het keyword IS

Selecteer de klantnaam en email uit Customers waarbij het email-veld leeg is

-- Oracle / MySQL / SQL Server	
SELECT cust_name,
       cust_email
FROM   Customers
WHERE  cust_email IS NULL;
cust_namecust_email
Kids PlaceNULL
The Toy StoreNULL
  1. Selecteer het product id van de producten (OrderItems) waar er meer dan 75 van besteld zijn (8)


  1. Selecteer alles van de leveranciers (Vendors) waarvan de staat (state) onbekend is (2)


  1. Selecteer alles van de producten (Products) met een prijs vanaf 5.00 tot en met 9.00 (2)


  1. Selecteer alles van de orders (Orders) met een order_date na 1 februari 2012 (3)


  1. Selecteer alles van de klanten (Customers) waarvan de cust_email wel ingevuld is (3)