Wat is SQL?

Complete gids voor Structured Query Language

Wat is SQL? De Complete Gids voor Structured Query Language

SQL voorbeeldcode

Wat is SQL?

SQL (Structured Query Language) is een standaard programmeertaal die wordt gebruikt voor het beheren en manipuleren van relationele databases. Met SQL kun je gegevens opvragen, invoegen, bijwerken, verwijderen en database-objecten zoals tabellen en views creëren.

SQL Standaard: SQL is een ANSI/ISO-standaard, maar verschillende database systemen (MySQL, PostgreSQL, SQL Server, Oracle) hebben hun eigen dialecten met uitbreidingen op de standaard.

Waarom SQL leren?

SQL is een essentiële vaardigheid voor iedereen die met data werkt:

SQL Basiscommando's

De belangrijkste SQL-commando's zijn onderverdeeld in verschillende categorieën:

1. Data Query Language (DQL)

SELECT - Gegevens ophalen uit een database:

-- Basis SELECT statement
SELECT kolom1, kolom2 
FROM tabelnaam
WHERE voorwaarde
ORDER BY kolom1 ASC
LIMIT 10;

2. Data Manipulation Language (DML)

INSERT, UPDATE, DELETE - Gegevens wijzigen:

-- Nieuwe rij toevoegen
INSERT INTO klanten (naam, email) 
VALUES ('Jan Jansen', 'jan@voorbeeld.nl');

-- Gegevens bijwerken
UPDATE klanten 
SET email = 'nieuwe@email.nl'
WHERE klant_id = 123;

-- Rij verwijderen
DELETE FROM klanten
WHERE klant_id = 456;

3. Data Definition Language (DDL)

CREATE, ALTER, DROP - Database structuur beheren:

-- Tabel aanmaken
CREATE TABLE klanten (
  klant_id INT PRIMARY KEY AUTO_INCREMENT,
  naam VARCHAR(100) NOT NULL,
  email VARCHAR(100) UNIQUE,
  aanmaakdatum TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabel wijzigen
ALTER TABLE klanten
ADD COLUMN telefoon VARCHAR(20);

-- Tabel verwijderen
DROP TABLE klanten;

4. Data Control Language (DCL)

GRANT, REVOKE - Toegangsrechten beheren:

-- Rechten verlenen
GRANT SELECT, INSERT ON database.klanten TO 'gebruiker'@'localhost';

-- Rechten intrekken
REVOKE INSERT ON database.klanten FROM 'gebruiker'@'localhost';

Geavanceerde SQL Concepten

JOINs - Tabellen combineren

Verschillende soorten JOINs in SQL:

-- INNER JOIN (alleen overeenkomende rijen)
SELECT o.bestelnummer, k.naam, o.datum
FROM bestellingen o
INNER JOIN klanten k ON o.klant_id = k.klant_id;

-- LEFT JOIN (alle rijen uit linkertabel)
SELECT k.naam, o.bestelnummer
FROM klanten k
LEFT JOIN bestellingen o ON k.klant_id = o.klant_id;

-- FULL OUTER JOIN (alle rijen uit beide tabellen)
SELECT k.naam, o.bestelnummer
FROM klanten k
FULL OUTER JOIN bestellingen o ON k.klant_id = o.klant_id;

Subqueries - Geneste queries

Een query binnen een andere query:

-- Klanten met meer dan gemiddeld aantal bestellingen
SELECT naam, email
FROM klanten
WHERE klant_id IN (
  SELECT klant_id
  FROM bestellingen
  GROUP BY klant_id
  HAVING COUNT(*) > (
    SELECT AVG(bestelling_count)
    FROM (
      SELECT COUNT(*) AS bestelling_count
      FROM bestellingen
      GROUP BY klant_id
    ) counts
  )
);

Window Functions - Geavanceerde analyse

Berekeningen over groepen rijen zonder te groeperen:

-- Rangschikking van producten per categorie op verkoop
SELECT 
  productnaam,
  categorie,
  verkoopbedrag,
  RANK() OVER (PARTITION BY categorie ORDER BY verkoopbedrag DESC) AS rang
FROM producten;

Populaire Database Systemen

MySQL: Open-source, veel gebruikt voor webapplicaties

PostgreSQL: Geavanceerde open-source database met uitgebreide functies

SQL Server: Microsoft's enterprise database oplossing

Oracle Database: Krachtige commerciële database

SQLite: Lichtgewicht database voor lokale opslag

SQL Best Practices

SQL in de Praktijk

SQL wordt gebruikt in diverse toepassingen:

1. Webontwikkeling

Backend-systemen communiceren met databases via SQL:

-- Voorbeeld PHP met MySQLi
$stmt = $mysqli->prepare("SELECT naam, email FROM gebruikers WHERE id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
  echo "Naam: " . $row['naam'] . ", Email: " . $row['email'];
}

2. Data-analyse

Analisten gebruiken SQL om inzichten uit data te halen:

-- Maandelijkse verkooptrends
SELECT 
  DATE_TRUNC('month', besteldatum) AS maand,
  SUM(bedrag) AS totale_verkoop,
  COUNT(DISTINCT klant_id) AS unieke_klanten
FROM bestellingen
GROUP BY maand
ORDER BY maand;

3. Business Intelligence

Rapportagetools bouwen SQL queries voor dashboards:

-- Verkoop per productcategorie en regio
SELECT 
  p.categorie,
  r.regio_naam,
  SUM(o.aantal) AS eenheden,
  SUM(o.aantal * o.prijs) AS omzet
FROM bestellingen o
JOIN producten p ON o.product_id = p.product_id
JOIN klanten k ON o.klant_id = k.klant_id
JOIN regios r ON k.regio_id = r.regio_id
GROUP BY p.categorie, r.regio_naam
ORDER BY omzet DESC;

SQL Leerbronnen

Wil je SQL onder de knie krijgen? Bekijk deze bronnen:

Conclusie

SQL is een krachtige en essentiële taal voor iedereen die met data werkt. Of je nu een ontwikkelaar, data-analist of databasebeheerder bent, SQL-vaardigheden zullen je carrière vooruit helpen.

Met de basisconcepten uit deze gids heb je een solide fundament om verder te leren en complexere queries te schrijven. De beste manier om SQL onder de knie te krijgen is door te oefenen - installeer een database systeem en begin met experimenteren!

← Terug naar Blog Overzicht