SQL Basis

Hoofdstuk 1 - Introductie

  • Kaartenbaksysteem
  • Word-document
  • Excel-werkmap
  • (Relationeel) Database Management System
    • Grote hoeveelheden data beheren
    • Meerdere gebruikers tegelijk
    • Meerdere locaties
    • Toegang goed te beveiligen
    • Bedrijfsregels goed te bewaken
    • Krachtige analyses en rapportages
    • Applicaties tussen gebruiker en data

Een database is 1 of meerdere files om gegevens gestructureerd op te slaan. Een database bestaat uit 1 of meerdere tabellen. Elke tabel heeft een unieke naam en bevat gegevens van 1 soort.

Relationeel DBMS

  • Ontsluit gegevens
  • Bewaakt gegevens
  • Beheert gegevens

Voorbeelden

  1. (Commercieel)    Oracle
  2. (Open-Source)    MySQL
  3. (Commercieel)    MS SQL Server
  4. (Open-Source)    PostgreSQL
  5. (Commercieel)    Snowflake
  6. (Commercieel)    IBM DB2
  7. (Open-Source)    SQLite

RDBMS Rankings

  • ANSI/ISO standaardtaal voor relationeel DBMS
  • Gebruikt voor bewerken en bevragen van gegevens
  • SQL is een 4e generatie taal (4GL)
  • Ontwikkeld in de jaren 70 door IBM
  • Wordt uitgevoerd met query's
DDLData Definition Language DMLData Manipulation Language DCLData Control Language TCLTransaction Control Language CREATE *ALTER *DROP *TRUNCATE *COMMENTRENAME * SELECT *INSERT *UPDATE *DELETE *MERGECALLEXPLAIN PLANLOCK TABLE GRANDREVOKE COMMITROLLBACKSAVEPOINTSET TRANSACTION SQLCOMMANDS

  • Tijdens deze SQL Basiscursus worden alleen de statements met een * besproken
Achternaam Voornaam Dienstjaren Afdeling locatie Regio Cursus1 Cursus2 Cursus3
de Jong Daan 12 Verkoop Utrecht 030 Office 365 MySQL HTML & CSS
Jansen Sanne 6 Administratie Amsterdam 020 Office 365
de Vries Sanne 3 HRM Amsterdam 002 HTML & CSS Photoshop
van de Berg Tim 21 Inkoop Maarssen 030 Indesign WordPress
van Dijk Julia 1 HRM Amsterdam 020
de Vries Sem 0 ICT Utreg 030 Dreamweaver SQL PHP
de Jong Daan 0 Verkoop Utrecht 030 Sales 1
Smith Jan 8 Verkoop Utr. 030 Sales 1 Sales 2
Schilder Annie 33 Administratie Amsterdam 020 Photoshop Office 365
Achternaam Voornaam Dienstjaren Afdeling locatie Regio Cursus1 Cursus2 Cursus3
de Jong Daan 12 Verkoop Utrecht 030 Office 365 MYSQL HTML & CSS
Jansen Sanne 6 Administratie Amsterdam 020 Office 365
de Vries Sanne 3 HRM Amsterdam 002 HTML & CSS Photoshop
van de Berg Tim 21 Inkoop Maarssen 030 Indesign WordPress
van Dijk Julia 1 HRM Amsterdam 020
de Vries Sem 5 ICT Utreg 030 Dreamweaver SQL PHP
de Jong Daan 0 Verkoop Utrecht 030 Sales 1
Smith Jan 8 Verkoop Utr. 030 Sales 1 Sales 2
Schilder Annie 33 Administratie Amsterdam 020 Photoshop Office 365

Doel:

  • Minimaliseren van data-opslag
  • Vermijden van redundantie (overtolligheid) & inconsistentie (tegenstrijdigheid)

Stappen:

  1. Herhalende groepen onderbrengen in aparte tabellen
  2. Herhalende velden (niet functioneel afhankelijk) onderbrengen in aparte tabellen (niet afhankelijk van PK)
  3. Herhalende velden (transitieve afhankelijkheden) onderbrengen in aparte tabellen (afhankelijk van PK + ander veld)


  • Alle tabellen worden voorzien van een primaire sleutel (Primary Key - PK)
  • Een verwijzingssleutel (Foreign Key - FK) koppelt een tabel aan de PK van een andere tabel
  • Relaties zijn meestal een-op-veel
  • Eén ouder (parent record) heeft nul tot veel kinderen (child records)
  • Stel de ongenormaliseerde tabel op en bepaal (voeg toe) de primaire sleutel


  • Herhalende groepen onderbrengen in aparte tabellen

Het probleem met herhalingsstructuren is o.a. dat bij het maken van de tabellen
men niet op voorhand weet hoeveel ruimte nodig is. (cursus1, cursus2, cursus3, ...)


  • Herhalende velden (niet functioneel afhankelijk) onderbrengen in aparte tabellen (niet afhankelijk van PK)

Gegevens in een tabel die niet afhankelijk zijn van de PK leiden tot redundantie & inconsistentie.
(cursusnaam)

  • Herhalende velden (transitieve afhankelijkheden) onderbrengen in aparte tabellen (afhankelijk van PK + ander veld)

Gegevens in een tabel die functioneel afhankelijk zijn en van de PK en van een ander niet-sleutel gegeven zijn transitief afhankelijk en leiden eveneens tot redundantie.
(Vestiging, functie)



Meer info over nomaliseren Wiki

Definitie Omschrijving
Database Container (één of meerdere tabellen) met georganiseerde gegevens
Tabel Een gestructureerd object in de DB; vertegenwoordigd een groep entiteiten
Rij Een rij gegevens over een specifieke entiteit in een tabel
Kolom Een gegevensveld in een tabel, specifieke eigenschap van entiteiten
Datatype Geeft het type gegevens van een kolom aan
Primary Key (PK) Kolom(men) met unieke waarden om records te onderscheiden
Foreign Key (FK) Kolom dat verwijst naar de Primary Key in een andere tabel
  • Vaste attributen (non volatile)
    • Geboortedatum
    • Bouwjaar
    • Artikelnummer
  • Veranderlijke attributen (volatile)
    • Leeftijd
    • APK datum
  • Verplichte attributen (mandatory)
    • Achternaam
    • Automerk
  • Unieke attributen (identifiers)
    • Kenteken
  • Tekst (string)
    • CHAR (Vaste lengte in DB)
    • VARCHAR (Variabele lengte in DB)
    • BLOB (Binary Large Objects (*.jpg))
  • Numeriek
    • INTEGER (Geheel getal - afkorting INT mag ook)
    • DECIMAL (Getallen met een komma - afkorting DEC mag ook)
    • BOOLEAN (0 of 1 - true of false)
    • BIT (0,1, NULL)
  • Datum/tijd
    • DATE (Alleen datum)
    • TIME (Alleen tijd)
    • DATETIME (Datum + tijd)

Meer data types op W3Schools

  • Niet toegekende waarde wordt beschouwd als onbekend 'NULL'
  • 'NULL' is niet gelijk aan 0 (nul) of '' (lege string)
  • Spreek uit: nil
  • Null-waarden bij berekeningen worden genegeerd
  • Meer over filteren met NULL-waarden in Hoofdstuk 4