Gegevens opvragen met SELECT

Geen SELECT zonder correcte primaire en secundaire sleutels

De indexen definieer je de parameters INDEX, UNIQUE en A_I. Je herkent ze in PHPMyAdmin aan het gele en grijze sleuteltje.

Je kan ook de relaties bepalen via de “Structuur” tab en dan de knop “Relatieoverzicht”.

Simpele SELECT

Een simpele SELECT-query bestaat bijvoorbeeld uit de volgende componenten:

SELECT kolom_naam (,...) FROM tabel_naam;

Eerst specificeer je het SQL-commando SELECT en vervolgens geef je aan op welke kolommen en tabellen het commando van toepassing is. Een puntkomma sluit het statement af.

Voorbeeld:

SELECT Voornaam, Achternaam FROM Auteurs;

Een SELECT met voorwaarde

SELECT kolom_naam (,...) FROM tabel WHERE voorwaarde;

De voorwaarde bestaat uit 3 onderdelen:

  • de kolom_naam
  • de operator (=, <, >, <=, >=, LIKE)
  • de waarde: tussen ‘-accenten

Verschillende voorwaardes kunnen met AND en OR zijn.

Voorbeelden:

SELECT Voornaam, Achternaam FROM Auteurs WHERE Geboorteplaats='Cambridge';
SELECT Voornaam, Achternaam FROM Auteurs WHERE Geboorteplaats LIKE '%bridge%';
SELECT Voornaam, Achternaam FROM Auteurs WHERE Geboortejaar >= '1973';
SELECT Voornaam, Achternaam FROM Auteurs WHERE Geboortejaar >= '1970' AND Geboortejaar <= '1980';

Een SELECT met sortering

SELECT kolom_naam (,...) FROM tabel WHERE voorwaarde ORDER BY sorteervolgorde_kolom_naam;

Een SELECT met relaties

klassieke relatie

SELECT tabel_1.kolom_naam (,...) FROM tabel_1, tabel_2 WHERE tabel_1.kolom_primaire_id = tabel_2.kolom_secundaire_id;

Inner join

De tabel “Auteurs” en “Werken” worden gerelateerd via de het index veld auteur_id en de overeenkomstige rijen worden getoond in het resultaat.

SELECT * FROM Auteurs INNER JOIN Werken ON Auteurs.auteur_id = Werken.auteur_id;

De tabel “Auteurs”, “Werken” en “Uitgeverij” worden gerelateerd via de het index veld auteur_id en uitgeverij_id en de overeenkomstige rijen worden getoond in het resultaat.

SELECT * FROM Auteurs INNER JOIN Werken ON Auteurs.auteur_id = Werken.auteur_id INNER JOIN Uitgeverij ON Werken.uitgeverij_id = Uitgeverij.uitgeverij_id;

Left join

Alle rijen van de link tabel “Werken” worden getoond, als er geen relatie met rechtse tabel “Uitgeverij” wordt gevonden worden de resultaten met NULL opgevuld.

SELECT * FROM Werken LEFT JOIN Uitgeverij ON Werken.uitgeverij_id = Uitgeverij.uitgeverij_id;
werk_idauteur_iduitgeverij_idTitelEerste publicatieuitgeverij_idNaam
111In de Ban van de Ring19541Uitgeverij Unieboek-Het Spectrum
212De Hobbit19372George Allen & Unwin
31NULLDe Silmarillion1977NULLNULL
42NULLHet Transgalactisch Liftershandboek1979NULLNULL
52NULLHet Restaurant aan het Einde van het Heelal1980NULLNULL
62NULLHet Leven, het Heelal en de Rest 1984NULLNULL

Right join

Alle rijen van de rechtste tabel “Uitgeverij” worden getoond, als er geen relatie met links tabel “Werken” wordt gevonden worden de resultaten met NULL opgevuld.

SELECT * FROM Werken RIGHT JOIN Uitgeverij ON Werken.uitgeverij_id = Uitgeverij.uitgeverij_id;
werk_idauteur_iduitgeverij_idTitelEerste publicatieuitgeverij_idNaam
111In de Ban van de Ring19541Uitgeverij Unieboek-Het Spectrum
212De Hobbit19372George Allen & Unwin
NULLNULLNULLNULLNULL3Cosmos