Basisopleiding informatica - module 4

Vergelijkbare documenten
Databases - Inleiding

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

12. Meer dan één tabel gebruiken en sub-queries

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

Les 2 Eenvoudige queries

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Zelftest SQL Workshop

1. Inleiding Inleiding SQL Inleiding Database, databaseserver en databasetaal Het relationele model...

Hoofdstuk: 1 Principes van databases

Informatie & Databases

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

Structured Query Language (SQL)

Databases en SQL Foundation (DBSQLF.NL)

Zelftest SQL Workshop

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

SQL & Datamodelleren

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

Zelftest SQL. Document: n0453test.fm 19/04/2012. ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium

Zelftest Informatica-terminologie

SQL datadefinitietaal

Query SQL Boekje. Fredrik Hamer

EXIN Databases en SQL Foundation

Zelftest DB2 for z/os basiscursus

Datamodelleren en databases 2011

SQL / Systeemanalyse

Inleiding Databases en Data Base Management Systems Tabellen Wat is SQL?... 5

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Introductie (relationele) databases

Sparse columns in SQL server 2008

Inhoud. Voorwoord 1 Belangrijkste kenmerken van dit boek 1 De opzet van dit boek 1 Over de auteurs 2 Woord van dank 2

Les S-01: De basisbeginselen van SQL

11. Het selecteren van gegevens deel II

Structured Query Language

[TOETS SQL INLEIDING]

Miniles gegevensbanken bevragen met SQL

Informatie verwerking en databases RDBMS en tabellen... 8 SQL SELECT... 8 SQL WHERE SQL INSERT SQL UPDATE SQL DELETE...

EUROPEES COMPUTER RIJBEWIJS / INTERNATIONAAL COMPUTER RIJBEWIJS ADVANCED DATABASE

DATAMODELLERING ER DIAGRAM

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober A. Snippe ICT Lyceum 1

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

Thinking of development

1. Databanken. Wat is een databank? Verschillende opslagmethodes

ADVANCED DATABASES Syllabus versie 2.0

8. De invoer van gegevens

Data Manipulation Language

ISO Query By Example

F. TRUYEN - Informatiekunde QBE. MS Access

Databases SQL - meerdere tabellen

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

SQL.

oefeningen TOP2000 antwoorden

6. Het maken van een database

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

Les S-01: De basisbeginselen van SQL

Les 11 : Basis SQL (deel2).

Les S-02: Meer geavanceerde SQL-instructies

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

1 Download de database 'bieren.mdb' en bewaar het bestand in c:\werkmap van je computer.

1. * Database worden vaak gebruikt in Client-Server architectuur.

Vragen hoofdstuk 1: Resultaat

SQL STATEMENTS. Deze kolom kan grote stukken tekst aan en is bedoeld om tekst erin de plaatsen. Geheel getal, bijvoorbeeld 8, 63, 835 NUMERIC

Relationele databanken

SQL & Relationele datamodellen in interactieve media

Data Definition Language

Les 10 : Aanmaken van een database (deel2).

Module 1 Programmeren

Ontwerp een datamodel

= > >= < <= BETWEEN IS NULL IS NOT NULL

Relationele databases

PROGRAMMA Vak: informatica..

Koppeling met een database

Data Warehouse Script Generator Doel

7. Het selecteren van gegevens

Databases gebruiken. Databases gebruiken

MS Access. Module 0. MS Access, versie 2000 (NL) Nummer: 256 ( ) The Courseware Company

Trainingsomschrijving ACCESS 97 / 2000 / 2003NL

Databanken programmatorisch benaderen

Puzzelen met SQL: Fileleed

SQL. Datamodellering 2008

SQL. Wat is SQL? Geschiedenis SQL SQL DMO Datamodellering 2008

Technische nota AbiFire Rapporten maken via ODBC

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Het omzetten van een ER-diagram naar SQL

Systeemontwikkeling, Hoofdstuk 4, Tabellen maken in MS Access 2010

hoofdstuk 9 referentiële integriteit waarborgen overige constraints 9.1 Referentiële integriteit relationele databases 9.1

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Anatomie van een databank

Normaliseren versie 1.1

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Foutafhandeling in SQL

Technische nota AbiFire5 Rapporten maken via ODBC

Cursus Analyse voor Web Applicaties 1. Webdesign / Web Programmeren Analyse voor web applicaties SDM methode + Basis UML

Vakgroep CW KAHO Sint-Lieven

Gebruikers Handleiding

Integriteitsbewaking bij een relationele database

Entiteit Zaken en gebeurtenissen waarvan gegevens moeten worden vastgelegd worden een entiteit genoemd: b.v. mens, voorstelling, auto.

DB architectuur.

Relationele databases

Van CaseTalk naar een database in SQLite studio

Oracle-database creëren

Transcriptie:

TRAINING & CONSULTING Basisopleiding informatica - module 4 ABIS Training & Consulting www.abis.be training@abis.be ABIS 2013, 2014 Document nummer: 1660_02n.fm 19 augustus 2014 Commentaren over deze publicatie kan u sturen naar: ABIS Training & Consulting, Postbus 220, B-3000 Leuven, België Tel.: (+32)-16-245610, Fax: (+32)-16-245639 Copyright ABIS N.V.

INHOUDSTAFEL VOORWOORD V NORMALISATIE 27 VAN BESTAND NAAR TABEL 1 1 Van bestand naar tabel 2 2 Definitie Database 3 3 Hoe data structureren 4 3.1 Hiërarchische structuur 5 3.2 Netwerk-structuur 7 3.3 Relationele structuur 9 3.4 NoSQL 12 RELATIONAL DATABASE MANAGEMENT SYSTEMS 15 1 Wat is een Database Management System (DBMS) 16 2 Taken van het RDBMS (relationele DBMS) 17 3 Overzicht van RDBMS produkten 18 3.1 DB2 19 3.2 Oracle 20 3.3 MySQL 21 3.4 SQL Server / MS SQL 22 3.5 Access 23 4 SQL - Structured Query Language 24 1 Ontwerpen van een relationele data structuur 28 1.1 Analyse 29 1.2 Basisontwerp 30 1.3 Normalisatie 31 2 Relaties tussen tabellen: sleutels 35 3 ERD diagram 38 TABELLEN 41 1 Tabeldefinitie: Overzicht 42 2 Kolomdefinitie 43 2.1 Naam 43 2.2 Datatype 43 2.3 NULL waarden 44 2.4 Standaardwaarden 45 2.5 Beperkingen opleggen 46 3 Integriteit 47 SQL 49 1 Wat is een query? 50 2 Tabellen selecteren: FROM 51 3 Resultaat weergeven: SELECT 52 3.1 Welke kolommen tonen in het resultaat? 52 Basisopleiding informatica - module 4 iii

3.2 Berekende waarden weergeven 53 3.3 Aliassen 54 3.4 DISTINCT 55 4 Gegevens Filteren: WHERE 56 4.1 Basiscondities 57 4.2 Logische operatoren 60 4.3 IN 64 4.4 BETWEEN 66 4.5 LIKE 68 4.6 IS NULL 71 5 Sorteren: ORDER BY 74 6 Tabellen koppelen: JOIN 78 6.1 INNER JOIN 79 6.2 LEFT en RIGHT OUTER JOIN 81 6.3 FULL OUTER JOIN 83 3 Normalisatie 102 4 Tabellen 104 5 SQL 105 5.1 SELECT - FROM 106 5.2 WHERE - Basiscondities 107 5.3 WHERE - Logische operatoren 108 5.4 WHERE - IN en BETWEEN 109 5.5 WHERE - LIKE 110 5.6 WHERE - IS NULL 111 5.7 ORDER BY 112 5.8 Gemengde opdrachten 113 5.9 Joins 114 7 Samenvatting 84 APPENDIX A: TRAINING DATABASE 85 1 ERD - Diagram 86 2 Tabeldefinities 87 2.1 Companies 88 2.2 Persons 89 2.3 Courses 90 2.4 Sessions 91 2.5 Enrolments 92 3 Inhoud van de tabellen 93 OPDRACHTEN 99 1 Van bestand naar tabel 100 2 Database Management Systemen 101 Basisopleiding informatica - module 4 iv

VOORWOORD In deze module bespreken we hoe data opgeslagen en beheerd kan worden in databases. We overlopen enkele manieren waarop data gestructureerd kan worden, waarbij de focus vooral zal liggen op relationele databases. In een 2de deel van de cursus maken we kennis met SQL om gegevens uit de database op te halen. Dmv een massa oefeningen maken we ons deze taal eigen. Qua oefenomgeving zal er vooral met MS-ACCESS gewerkt worden. Database Management Systemen hebben niet enkel als taak om gegevens op te slaan zodat we ze gemakkelijk kunnen opzoeken of manipuleren. Ook beheerstaken worden uitgevoerd. In deze module introduceren we enkele concepten, zoals performantie, locking, versioning, database herstel, auditing en monitoring. In de volgende module zullen enkele van deze zaker dieper worden bekeken in het kader van Oracle en SQL Server. Basisopleiding informatica - module 4 v

Basisopleiding informatica - module 4 vi

Van bestand naar tabel Objectieven : Waarom een database? Definitie database Hoe data structureren ABIS Training & Consulting 1

Van bestand naar tabel 1 Gegevens kunnen op verscheidene manieren bewaard worden: Bestand Spreadsheet Database Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Voor- en nadelen (zoeken, filteren, beheer, beveiliging, consistentie, redundantie, formattering, gebruik door applicaties,...)? Basisopleiding informatica - module 4 ABIS 2

Definitie Database 2 Een database is een georganiseerde collectie van onderling gerelateerde data elementen die gemakkelijk te verwerken is door één of meerdere applicaties voor het terugvinden en beheren van informatie Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Basisopleiding informatica - module 4 ABIS 3

Hoe data structureren 3 Meerdere manieren om data in een database te structureren Hiërarchisch Netwerk Relationeel NoSQL... Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Verschil zit in de manier waarop de links tussen de data gelegd worden en deze data ondervraagd kan worden. Basisopleiding informatica - module 4 ABIS 4

Hiërarchische structuur 3.1 Oudste vorm van database Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Boomstructuur: Ouder-kind relatie Elk record in een database kan weer verwijzen naar een n-aantal andere records Implementaties: IMS, Windows Registry, bestandssysteem (b.v. FAT) Basisopleiding informatica - module 4 ABIS 5

Hiërarchische structuur: voor- en nadelen Voordelen: gemakkelijk te ontwerpen goedkoop om te onderhouden gemakkelijk te beveiligen gelijkaardig aan niet-elektronische data-opslag gemakkelijk doorzoeken, maar enkel indien gesorteerd en als de zoekactie compatibel is met de sortering Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Nadelen: kind kan maar 1 ouder hebben één boom per database, takken hebben onderling geen samenhang niet flexibel voor meer complexe verwijzingen niet alle data is intrinsiek hiërarchisch navigatie is moeilijk (niet-lineair) Basisopleiding informatica - module 4 ABIS 6

Netwerk-structuur 3.2 Geïntroduceerd midden jaren 60 Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Gelijkaardig aan de hiërarchische structuur Verschil: meerdere ouders per kind en links tussen takken mogelijk Creëert many-to-many relaties Implementaties: IDMS, WAN en LAN systemen Basisopleiding informatica - module 4 ABIS 7

Netwerk-structuur: voor- en nadelen Voordelen: meerdere relatie-types kunnen gebruikt worden gemakkelijke datatoegang data-integriteit verzekerd data onafhankelijk van het achterliggende systeem efficiënter dan het corresponderende hiërarchische model Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Nadelen: complex systeem (achter de schermen) moeilijk om structurele wijzigingen door te voeren in het model onoverzichtelijk Basisopleiding informatica - module 4 ABIS 8

Relationele structuur 3.3 Edgar Codd, begin jaren 70 Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Gebaseerd op relationele algebra ( verzamelingenleer ) Geen echte hiërarchie meer tussen de data: platte structuur Elke rij van een tabel bevat gegevens die samenhoren, gerelateerd zijn Tabellen kunnen aan mekaar gelinkt zijn via zgn. sleutels ( keys ) One-to-many relaties Implementaties: Oracle, Sql Server, Access, DB2, MySQL,... Basisopleiding informatica - module 4 ABIS 9

Relationele structuur - Voorbeeld Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren id titel duur dagprijs 1 SQL 1 375 2 JAVA 4 400 id datum locatie cursusnr 1 04-11-2013 Abis Leuven 1 2 23-09-2013 Abis Leuven 2 3 18-11-2013 Min Financiën 2 id voornaam familienaam 1 Mark Stessens 2 Jef Goris 3 An Smets 4 Mieke Schoofs 5 Jos Van Hoof Hoe personen en sessies linken? Basisopleiding informatica - module 4 ABIS 10

Relationele structuur: voor- en nadelen Voordelen: eenvoudige concepten, met theoretische basis geen redundante data niet navigationeel goede security (gebaseerd op inhoud van de data) Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Nadelen: verlies in performantie door doorgedreven normalisatie kolom kan enkel gelijkaardige data bevatten moeilijk om structuur van tabel te wijzigen achteraf (bv kolom middenin toevoegen) bewaren van complexere gegevensstructuren? gebruik van NULL waarden bij afwezigheid van een eigenschap Basisopleiding informatica - module 4 ABIS 11

NoSQL 3.4 Not only SQL Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Beweging gestart in 2009 Bedoeling: moderne web-scale database, Big Data Vrijer gestructureerd, open-source, gedistribueerd Zowel gebruikt voor het opslaan van gewone relationele data als van documenten en andere structuren (b.v. JSON) Implementaties: Hadoop/Hbase, MongoDB,... Basisopleiding informatica - module 4 ABIS 12

NoSQL: voor- en nadelen Voordelen: dynamisch bijvoegen van nieuwe attributen ook niet-atomaire data kan makkelijk opgeslagen worden eenvoudige query-interface directere vertaling tussen data en applicatie snel efficiënter gebruik van geheugen Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Nadelen: TE vrij? geen standaardisatie: heel veel verschillende types, tools,... geen garanties van data-consistentie Basisopleiding informatica - module 4 ABIS 13

Van bestand naar tabel 1. Van bestand naar tabel 2. Definitie Database 3. Hoe data structureren Basisopleiding informatica - module 4 ABIS 14

Relational Database Management Systems Objectieven : Verschil tussen database en DBMS Taken van het DBMS Overzicht van produkten Wat is SQL? ABIS Training & Consulting 15

Wat is een Database Management System (DBMS) 1 Vorig hoofdstuk: LOGISCH zicht op data-opslag Fysiek zit data nog steeds in bestanden Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Database Management System is een tool voor databeheer, en een buffer tussen data en programma s / gebruikers DBMS neemt ook andere taken op zich dan data toegankelijk maken Basisopleiding informatica - module 4 ABIS 16

Taken van het RDBMS (relationele DBMS) 2 Logische datastructuur toegankelijk maken, onafhankelijk van de fysieke opslag / toegangsmethode Integriteit (= consistentie) van de data bewaken Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Gelijktijdige toegang maximaliseren Performantie verhogen door optimalisatie Beveiliging van data (autorisaties) Dataverlies vermijden door o.a. backup / recovery Basisopleiding informatica - module 4 ABIS 17

Overzicht van RDBMS produkten 3 IBM: DB2 (z/os, LUW), Informix Oracle: Oracle, MySQL Microsoft: Access, SQL Server (MS SQL) Ingres, PostGreSQL Sybase (SAP): Adaptive Server Enterprise, IQ Teradata Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Verschillen op basis van OS waarop de database draait waar zitten de files - geheugengebruik soort / hoeveelheid data - concurrency - optimalisatie beheerstaken tools Gelijkenissen: gebruiken gelijkaardige interface (SQL) Basisopleiding informatica - module 4 ABIS 18

DB2 3.1 Eerste versie 1983, nieuwste versie (11) oktober 2013 Drie verschillende produkten op basis van het OS DB2 for z/os: Mainframe DB2 for LUW: Linux, Unix (AIX, Solaris, HP-UX), Windows DB2 for iseries: AS400 Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Maximale tabelgrootte: quasi onbeperkt (afh. v. bestandssysteem) Duur qua licenties - gratis versie voor thuis Extreem krachtig bij complexere systemen, zeer performant Vooral gebruikt door grote (financiële) bedrijven Tools: SPUFI, QMF, Data Studio,... Basisopleiding informatica - module 4 ABIS 19

Oracle 3.2 Eerste versie 1979, nieuwste versie (12c) juni 2013 OS: Windows, Linux, Solaris, AIX, HP-UX Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Maximale tabelgrootte: ongelimiteerd Duur qua licenties - gratis versie voor thuis Extreem krachtig bij complexere systemen, zeer performant Vooral populair bij grotere bedrijven Tools: SQL Developer, Apex, SQL*Plus, Oracle Reports,... Basisopleiding informatica - module 4 ABIS 20

MySQL 3.3 Eerste versie 1995, nieuwste versie (5.6) juli 2013 OS: alle (ook b.v. Symbian, BSD, MacOS,...) Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Open source - goedkoop (of zelfs gratis) Max tabelgrootte: ongelimiteerd (limiet van het bestandssysteem) Eenvoudige set-up voor kleinere databases Vooral populair bij kleinere bedrijven, startups, bedrijven die web applicaties ontwikkelen Tools: MySQL Workbench, PHPmyadmin, commandolijn,... Basisopleiding informatica - module 4 ABIS 21

SQL Server / MS SQL 3.4 Eerste versie 1984 (Sybase), 1992 (Microsoft), nieuwste versie SQL Server 2012 (april 2012) OS: Windows Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Maximale tabelgrootte: 16 TB Goedkoper dan Oracle of DB2, maar beperkter qua grootte, schaalbaarheid,... Gebruikers: Windows / Microsoft-minded bedrijven,... Tools: SQL Server Management Studio, Visual Studio, Reporting Services,... Basisopleiding informatica - module 4 ABIS 22

Access 3.5 Eerste versie 1992, nieuwste versie MS Access 2013 (januari 2013) OS: Windows Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language Tool + DBMS in één product (goede geïntegreerde grafische gebruikersinterface) Een echt DBMS? maximale bestands-grootte: 2GB geen triggers, functies, procedures,... beperkt aantal gelijktijdige gebruikers niet client-server gebaseerd, maar file-server Eerder te gebruiken voor kleine toepassingen Basisopleiding informatica - module 4 ABIS 23

SQL - Structured Query Language 4 Taal waarmee relationele data aangesproken wordt Oorspronkelijk SEQUEL: Structured English QUEry Language Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language 4GL - descriptief en declaratief -> gemakkelijk te schrijven ISO standaard voor alle RDBMS produkten Dialecten! Uniforme taal voor zowel data manipulatie als structuurdefinitie Basisopleiding informatica - module 4 ABIS 24

SQL - onderdelen DQL: Data Query Language select DML: Data Manipulation Language insert update delete merge truncate Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language DDL: Data Definition Language create alter drop rename Basisopleiding informatica - module 4 ABIS 25

SQL - onderdelen (vervolgd) DCL: Data Control Language grant revoke Relational Database Management Systems 1. Wat is een Database Management System (DBMS) 2. Taken van het RDBMS (relationele DBMS) 3. Overzicht van RDBMS produkten 4. SQL - Structured Query Language TCL: Transaction Control Language commit rollback savepoint lock CLIENT - SERVER connect call prepare Basisopleiding informatica - module 4 ABIS 26

Normalisatie Objectieven : Ontwerpen van een relationele database structuur ERD diagrammen Hoe relaties leggen tussen tabellen ABIS Training & Consulting 27

Ontwerpen van een relationele data structuur 1 Data verspreid over meerdere tabellen Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Tabel: vast aantal kolommen variabel aantal rijen één relatie tussen de gegevens (= vaste betekenis) Tabel: alle gegevens worden voorgesteld door waarden atomaire waarden (geen lijsten) geen dubbele rijen volgorde van rijen niet belangrijk volgorde van kolommen niet belangrijk (maar hun betekenis wel!) Basisopleiding informatica - module 4 ABIS 28

Analyse 1.1 Welke gegevens moeten er allemaal in de tabellen komen? Vb.: Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Basisopleiding informatica - module 4 ABIS 29

Basisontwerp 1.2 Zet alle gegevens in één grote tabel op basis van de betekenis Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram titel duur datum locatie persoon persoonsgegevens bedrijf bedrijfsgegevens DB2 3 02/03/2013 Abis Leuven Stessens Nieuwstraat MinFinanciën Kunstlaan DB2 3 02/03/2013 Abis Leuven Smets Bondgenotenlaan Belfius Pachecolaan DB2 3 05/05/2013 AbisWoerden Goris Lippenslaan Honda Langerbruggestraat SQL 1 15/08/2013 Min Financiën Schoofs Lippenslaan MinFinanciën Kunstlaan Oracle 3 05/11/2013 Abis Leuven Smets Bondgenotenlaan Belfius Pachecolaan Java 4 05/11/2013 Abis Leuven Van Hoof Steenstraat Honda Langerbruggestraat Wijzigingen (insert, update, delete,...) kunnen consistentie-problemen geven in deze vorm --> NORMALISEREN Basisopleiding informatica - module 4 ABIS 30

Normalisatie 1.3 Stap 1: Cursussen - Inschrijvingen (versie 1) Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram titel duur DB2 3 Oracle 3 SQL 1 Java 4 titel datum locatie persoon persoonsgegevens bedrijf bedrijfsgegevens DB2 02/03/2013 Abis Leuven Stessens Nieuwstraat MinFinanciën Kunstlaan DB2 02/03/2013 Abis Leuven Smets Bondgenotenlaan Belfius Pachecolaan DB2 05/05/2013 AbisWoerden Goris Lippenslaan Honda Langerbruggestraat SQL 15/08/2013 Min Financiën Schoofs Lippenslaan MinFinanciën Kunstlaan Oracle 05/11/2013 Abis Leuven Smets Bondgenotenlaan Belfius Pachecolaan Java 05/11/2013 Abis Leuven Van Hoof Steenstraat Honda Langerbruggestraat Basisopleiding informatica - module 4 ABIS 31

Normalisatie Stap 2: Personen (versie 1) - inschrijvingen (versie 2) Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram persoon persoonsgegevens bedrijf bedrijfsgegevens Stessens Nieuwstraat Min Financiën Kunstlaan Smets Bondgenotenlaan Belfius Pachecolaan Goris Lippenslaan Honda Langerbruggestraat Schoofs Lippenslaan Min Financiën Kunstlaan Van Hoof Steenstraat Honda Langerbruggestraat titel datum locatie persoon DB2 02/03/2013 Abis Leuven Stessens DB2 02/03/2013 Abis Leuven Smets DB2 05/05/2013 Abis Woerden Goris SQL 15/08/2013 Min Financiën Schoofs Oracle 05/11/2013 Abis Leuven Smets Java 05/11/2013 Abis Leuven Van Hoof Basisopleiding informatica - module 4 ABIS 32

Normalisatie Stap 3: Sessies - Inschrijvingen (finale versie) Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram titel datum locatie titel datum persoon DB2 02/03/2013 Abis Leuven DB2 02/03/2013 Stessens DB2 05/05/2013 Abis Woerden DB2 02/03/2013 Smets SQL 15/08/2013 Min Financiën DB2 05/05/2013 Goris Oracle 05/11/2013 Abis Leuven SQL 15/08/2013 Schoofs Java 05/11/2013 Abis Leuven Oracle 05/11/2013 Smets Java 05/11/2013 Van Hoof Basisopleiding informatica - module 4 ABIS 33

Normalisatie Stap 4: Personen (finale versie) - Bedrijven Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram persoon persoonsgegevens bedrijf bedrijf bedrijfsgegevens Stessens Nieuwstraat Min Financiën Min Financiën Kunstlaan Smets Bondgenotenlaan Belfius Belfius Pachecolaan Goris Lippenslaan Honda Honda Langerbruggestraat Schoofs Lippenslaan Min Financiën KBC Brusselsesteenweg Van Hoof Steenstraat Honda Basisopleiding informatica - module 4 ABIS 34

Relaties tussen tabellen: sleutels 2 Primaire sleutel (primary key, PK) = kolom die elke rij in de tabel op een unieke wijze identificeert elke waarde is verschillend waarde mag niet leeg (NULL) zijn (max) 1 PK per tabel gedefinieerd op 1 of meerdere kolommen vaak een artificieel identificatienummer, dat eventueel zelfs automatisch verhoogd wordt Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Refererende sleutel (foreign key, FK) = kolom in een tabel die verwijst naar een primaire sleutel in een andere (of dezelfde) tabel moet dezelfde definitie (behalve de naam) hebben als de PK waarnaar hij verwijst tabel kan meerdere FKs bevatten Als deze sleutels gedefinieerd zijn, houdt het DBMS de integriteit van de gegevens en hun samenhang in de gaten! Basisopleiding informatica - module 4 ABIS 35

Relaties tussen tabellen persoon persoonsgegevens bedrijf bedrijf bedrijfsgegevens Stessens Nieuwstraat Min Financiën Min Financiën Kunstlaan Smets Bondgenotenlaan Belfius Belfius Pachecolaan Goris Lippenslaan Honda Honda Langerbruggestraat Schoofs Lippenslaan Min Financiën KBC Brusselsesteenweg Van Hoof Steenstraat Honda PK FK Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Met een artificiële sleutel: persoon persoonsgegevens bedrijfsnr bedrijfsnr bedrijf bedrijfsgegevens Stessens Nieuwstraat 1 1 Min Financiën Kunstlaan Smets Bondgenotenlaan 2 2 Belfius Pachecolaan Goris Lippenslaan 3 3 Honda Langerbruggestraat Schoofs Lippenslaan 1 4 KBC Brusselsesteenweg Van Hoof Steenstraat 3 PK Janssens Kerskstraat NULL FK Basisopleiding informatica - module 4 ABIS 36

Relaties - JOINS JOIN = samenvoegen van 2 of meerdere tabellen op basis van hun refererende en primaire sleutels Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram persoon persoonsgegevens bedrijfnr bedrijf bedrijfsgegevens Stessens Nieuwstraat 1 Min Financiën Kunstlaan Smets Bondgenotenlaan 2 Belfius Pachecolaan Goris Lippenslaan 3 Honda Langerbruggestraat Schoofs Lippenslaan 1 Min Financien Kunstlaan Van Hoof Steenstraat 3 Honda Langerbruggestraat Meerdere types JOINs, in verband met NULL waarden in de FK en/of niet voorkomende waarden van de PK in de FK Basisopleiding informatica - module 4 ABIS 37

ERD diagram 3 ERD = Entiteit - Relatie Diagram Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Documenteert de relatie tussen de tabellen op een grafische manier Ook gebruikt tijdens de ontwerpfase van de database Tools bestaan om ERDs te vertalen naar tabellen en omgekeerd Verschillende tekenmanieren: UML, Chen, Bachmann,... Basisopleiding informatica - module 4 ABIS 38

ERD - UML UML = Unified Modeling Language Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Kent verschillende diagrammen, waaronder het klasse diagram MS-Access gebruikt een soortgelijk type diagram Basisopleiding informatica - module 4 ABIS 39

Normalisatie 1. Ontwerpen van een relationele data structuur 2. Relaties tussen tabellen: sleutels 3. ERD diagram Basisopleiding informatica - module 4 ABIS 40

Tabellen Objectieven : Tabellen definiëren Wat zijn NULL-waarden Data-integriteit - sleutels Beperkingen opleggen op kolommen ABIS Training & Consulting 41

Tabeldefinitie: Overzicht 1 Tabel bestaat uit meerdere kolommen Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Elke kolom gedefinieerd door: naam datatype NULLs toegelaten? standaardwaarde (optioneel) beperkingen (optioneel) Sleutels (PK en FK) zijn een speciale vorm van beperking Hoe integriteit bewaren -> wat te doen bij insert/update/delete Basisopleiding informatica - module 4 ABIS 42

Kolomdefinitie 2 Naam 2.1 1 woord beginnend met een letter maximum lengte hangt af van het DBMS kies een kolomnaam die duidelijk zegt wat de inhoud is! Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Datatype 2.2 elke kolom gekarakteriseerd door datatype en lengte 3 basistypes: - tekst: vaste lengte (char), variabele lengte (varchar) - numeriek: geheel, decimaal,... - chronologisch: datum, tijd, tijdsduur,... binair, LOB, XML,... exacte benaming + implementatie kan DBMS afhankelijk zijn! Basisopleiding informatica - module 4 ABIS 43

NULL waarden 2.3 Is het invullen van een waarde in de kolom verplicht? ja nee -> NULL toegestaan (default) Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit NULL betekent: onbekende / ontbrekende / zinloze waarde NULL is niet hetzelfde als blanco (lege waarde)! Controverse rond het gebruik van NULLs: logica gebaseerd op 3 waarden (waar / fout / onbekend) meerdere types joins nodig worden genegeerd bij kolomfuncties fysiek geheugen? vertaling nodig indien gelinkt aan applicaties die het begrip NULL niet of slechts beperkt kennen Basisopleiding informatica - module 4 ABIS 44

Standaardwaarden 2.4 Als een veld verplicht is, kan een standaardwaarde (default) worden gedefinieerd Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Deze wordt automatisch ingevuld als het veld niet opgegeven werd Kan expliciet opgegeven worden Soms ook een standaard standaardwaarde gekoppeld aan het datatype: blanco s voor tekst 0 voor numeriek nu voor datum/tijd Basisopleiding informatica - module 4 ABIS 45

Beperkingen opleggen 2.5 Mogelijk om validatieregels toe te voegen Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Gekoppeld aan een kolom of aan de tabeldefinitie Waarden worden bepaald door een logische expressie Voorbeelden: geslacht in ( V, M ) cursusprijs > 0 accessoireprijs < totale_prijs Geen echte businessregels! Validatieregels moeten beperkt zijn tot een tabelrij ==> kunnen b.v. niet de grootte van een tabel beperken ==> kunnen meerdere tabellen niet koppelen (wel mogelijk m.b.v. triggers, en m.b.v. FKs) Basisopleiding informatica - module 4 ABIS 46

Integriteit 3 DBMS checkt integriteit van de data wanneer sleutels gedefinieerd zijn Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Entity integriteit: primaire sleutel moet uniek zijn en mag geen NULLs bevatten Referentiële integriteit: refererende sleutel moet verwijzen naar een correcte waarde uit een primaire sleutel, of gelijk zijn aan NULL Wat bij insert/update/delete? -> ook hiervoor regels gedefinieerd: restrict: foutmelding indien rij weggehaald/gewijzigd waarnaar nog verwijzingen zijn cascade (trapsgewijs bijwerken/verwijderen) -> als rij weggehaald / gewijzigd wordt, worden ook verwijzende rijen verwijderd/gewijzigd set null: verwijzende velden worden op NULL gezet Default gedrag hangt af van DBMS, juiste keuze hangt af van betekenis van de relatie Basisopleiding informatica - module 4 ABIS 47

Tabellen 1. Tabeldefinitie: Overzicht 2. Kolomdefinitie 3. Integriteit Basisopleiding informatica - module 4 ABIS 48

SQL Objectieven : Gegevens zoeken in een tabel Filteren Eenvoudige berekeningen maken Sorteren Tabellen koppelen ABIS Training & Consulting 49

Wat is een query? 1 SELECT haalt data op van 1 of meer tabellen Resultaat is tabel SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Mogelijkheid om gegevens te filteren, groeperen, sorteren, (eenvoudige) berekeningen te maken 6 statements: 5 SELECT -> welke kolommen tonen 1 FROM -> uit welke tabel(len) komen de gegevens 2 WHERE -> filteren (condities) 3 GROUP BY -> groeperen 4 HAVING -> condities op kolomfuncties 6 ORDER BY -> sorteren In deze cursus: SELECT, FROM, WHERE, ORDER BY Basisopleiding informatica - module 4 ABIS 50

Tabellen selecteren: FROM 2 tabel/view specificeren waaruit de data komt select * from persons SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting kan ook vooraf gegaan worden door een schema naam, gescheiden van de tabelnaam d.m.v. een punt select * from tbaccad.tutpersons schema naam is vaak naam van de eigenaar/creator van de tabel Basisopleiding informatica - module 4 ABIS 51

Resultaat weergeven: SELECT 3 Welke kolommen tonen in het resultaat? 3.1 Courses cid cstitle cdur caprice 1000 DB2, An overview 5 550.00 2000 IMS/DB 5 600.00 3000 SAS_ADV 3 550.00 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting * toont ALLE kolommen select * -> geeft de volledige tabel weer from courses kolommen kiezen, gescheiden door een komma select cstitle, cdur from courses cstitle cdur DB2, An overview 5 IMS/DB 5 SAS_ADV 3 Basisopleiding informatica - module 4 ABIS 52

Berekende waarden weergeven 3.2 Nieuwe kolommen bijvoegen in het resultaat, gebaseerd op berekeningen op bestaande kolommen Operatoren: +, -, *, / SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Gebruik decimale punten, geen komma s Ook scalaire functies kunnen gebruikt worden (zie Module 5) b.v. LOWER(cstitle), SUBSTR(pfname, 1, 1), MONTH(sdate),... Voorbeeld: select cstitle, caprice * cdur * 1.15 from courses cstitle DB2, An overview 3162.5 IMS/DB 2070 SAS_ADV 3162.5 Basisopleiding informatica - module 4 ABIS 53

Aliassen 3.3 (Andere) naam geven aan een kolom uit de resultaat-tabel Keyword: AS SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting AS kan meestal weggelaten worden (niet in MS-ACCESS) Indien meerdere woorden -> dubbele aanhalingstekens toevoegen select cstitle AS titel, caprice*cdur*1.15 AS "totale prijs" from courses titel totale prijs DB2, An overview 3162.5 IMS/DB 2070 SAS_ADV 3162.5 Berekeningen en aliassen in SELECT veranderen de inhoud van de originele tabel NIET Alias ENKEL te gebruiken in SELECT (definitie) en ORDER BY Basisopleiding informatica - module 4 ABIS 54

DISTINCT 3.4 Unieke rijen selecteren op basis van (combinatie) van kolommen DISTINCT = verschillend SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select distinct cdur from courses cdur 5 3 select distinct cdur, caprice from courses cdur caprice 5 550.00 5 600.00 3 550.00 Basisopleiding informatica - module 4 ABIS 55

Gegevens Filteren: WHERE 4 Limiteren van het aantal rijen in het resultaat Specificeert een conditie die waar, vals of onbekend (NULL) is SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Syntax: kolomnaam - OPERATOR - expressie Condities kunnen gecombineerd worden d.m.v. AND, OR en NOT Basisopleiding informatica - module 4 ABIS 56

Basiscondities 4.1 Vergelijkingsoperatoren: = : gelijk aan <> : verschillend van (in sommige DBMS ook!= of ^=) < : strikt kleiner dan <= : kleiner of gelijk aan > : strikt groter dan >= : groter of gelijk aan SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Indien vergeleken wordt met een tekstwaarde -> deze tussen enkele aanhalingstekens zetten! Tekstwaarden zijn in principe hoofdlettergevoelig tenzij datatype dit anders specifeert (standaard bij MS) Numerieke waarden: nooit tussen aanhalingstekens Basisopleiding informatica - module 4 ABIS 57

Basiscondities - Voorbeelden companies cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where cono = 2 cono coname cotown cotownno cocountr 2 ASCO OXFORD RG211RY GB select coname, cotown, cocountr from companies where cocountr <> 'GB' coname cotown cocountr ABIS N.V. LEUVEN B COVERDAT NAARDEN NL Basisopleiding informatica - module 4 ABIS 58

Basiscondities - Voorbeelden (vervolg) select * from companies where cono <= 3 cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where cotown > 'N' cono coname cotown cotownno cocountr 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL Basisopleiding informatica - module 4 ABIS 59

Logische operatoren 4.2 3 operatoren voor het samenvoegen van condities AND: beide condities moeten voldaan zijn OR: minstens 1 van de condities moet voldaan zijn NOT: negatie (meestal pas gebruikt bij IN, BETWEEN,...) SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Elk deel is een volledige conditie zoals hiervoor (kolomnaam!) Prioriteitsregels: eerst NOT, dan AND, dan OR indien andere volgorde gewenst -> HAAKJES gebruiken! zelfde prioriteit -> van links naar rechts uitgevoerd Basisopleiding informatica - module 4 ABIS 60

Logische operatoren - Voorbeelden companies cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where cocountr='gb' AND cono>2 cono coname cotown cotownno cocountr 4 EDUCA Ltd. LONDON EC2A 2EN GB select * from companies where cocountr='gb' OR cono>2 cono coname cotown cotownno cocountr 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB Basisopleiding informatica - module 4 ABIS 61

Logische operatoren - Voorbeelden (vervolg) select coname, cocountr from companies where cocountr='nl' OR cocountr='b' coname cocountr ABIS N.V. B COVERDAT NL SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select coname, cocountr from companies where cocountr='nl' AND cocountr='b' coname cocountr Basisopleiding informatica - module 4 ABIS 62

Logische operatoren - Voorbeelden (vervolg) select * from companies where cocountr='nl' OR cocountr='b' AND cono < 3 cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 3 COVERDAT NAARDEN 1411 AR NL SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where (cocountr='nl' OR cocountr='b') AND cono < 3 cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B Basisopleiding informatica - module 4 ABIS 63

IN 4.3 Verzameling van waarden opsommen Waarden tussen haakjes, gescheiden door komma s SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Vervangt een gecombineerde OR op dezelfde kolom Syntax: kolomnaam IN (waarde1, waarde2, waarde3) Negatie: NOT IN Basisopleiding informatica - module 4 ABIS 64

IN - Voorbeelden companies cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where cotown IN ('LEUVEN','LONDON') cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 4 EDUCA Ltd. LONDON EC2A 2EN GB select * from companies where cono NOT IN (1,3,4) cono coname cotown cotownno cocountr 2 ASCO OXFORD RG211RY GB Basisopleiding informatica - module 4 ABIS 65

BETWEEN 4.4 Tussen Syntax: kolomnaam BETWEEN waarde1 AND waarde2 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Grenswaarden inbegrepen Negatie: NOT BETWEEN Vooral gebruikt voor numerieke waarden en datums (maar kan ook voor tekst) Basisopleiding informatica - module 4 ABIS 66

BETWEEN - Voorbeelden Courses cid cstitle cdur caprice 1000 DB2, An overview 5 550.00 2000 IMS/DB 5 300.00 3000 SAS_ADV 3 600.00 4000 ORACLE, An overview 5 550.00 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select cstitle, caprice from courses where caprice BETWEEN 300 AND 550 cstitle caprice DB2, An overview 550.00 IMS/DB 300.00 ORACLE, An overview 550.00 select * from courses where cdur NOT BETWEEN 4 AND 5 cid cstitle cdur caprice 3000 SAS_ADV 3 600.00 Basisopleiding informatica - module 4 ABIS 67

LIKE 4.5 Zoeken op tekstwaarden met een bepaald patroon begint met bevat eindigt op SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Wildcards (jokers) gebruikt % : 0 of meer karakters (LET OP: MS-ACCESS gebruikt * ) _ : exact 1 karakter (LET OP: MS-ACCESS gebruikt? ) Syntax: kolomnaam LIKE '%waarde' Negatie: NOT LIKE Let op bij het gebruik van like '%n' (eindigt op n) in sommige DBMSen indien de kolom als vaste breedte (char) gedefinieerd is Gebruik STEEDS een wildcard bij LIKE, NOOIT bij IN!!! Basisopleiding informatica - module 4 ABIS 68

LIKE - Voorbeelden (MS-ACCESS syntax) companies cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 2 ASCO OXFORD RG211RY GB 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where cotown LIKE 'N*' cono coname cotown cotownno cocountr 3 COVERDAT NAARDEN 1411 AR NL select * from companies where cotown LIKE '*N*' cono coname cotown cotownno cocountr 1 ABIS N.V. LEUVEN 3000 B 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB Basisopleiding informatica - module 4 ABIS 69

LIKE - Voorbeelden (vervolg) select * from companies where coname LIKE '?O*' cono coname cotown cotownno cocountr 3 COVERDAT NAARDEN 1411 AR NL SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from companies where coname NOT LIKE 'A*' cono coname cotown cotownno cocountr 3 COVERDAT NAARDEN 1411 AR NL 4 EDUCA Ltd. LONDON EC2A 2EN GB select * from companies where coname NOT LIKE '*A*' cono coname cotown cotownno cocountr Basisopleiding informatica - module 4 ABIS 70

IS NULL 4.6 Test of een waarde NULL is ( onbekend ) Niet hetzelfde als blanco! Kan b.v. ook voor numeriek of datum SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Syntax: kolomnaam IS NULL Negatie: IS NOT NULL -> waarde is gekend Opgelet: gebruik nooit kolomnaam = NULL!!! Keywoord IS enkel gebruiken in combinatie met NULL NULL kan op verschillende manieren voorgesteld worden (afhankelijk van het DBMS en zelfs van de gebruikte tool) NULL of null of (null) of \N --- Basisopleiding informatica - module 4 ABIS 71

IS NULL - Voorbeelden persons pno plname pfname pfunc 1 Smith John programmer 2 Johnson Paul analyst 3 Jones Mary NULL SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from persons where pfunc IS NULL pno plname pfname pfunc 3 Jones Mary NULL select * from persons where pfunc IS NOT NULL pno plname pfname pfunc 1 Smith John programmer 2 Johnson Paul analyst Basisopleiding informatica - module 4 ABIS 72

IS NULL - Voorbeelden (vervolg) Let op: <> geeft geen rijen terug waarvoor die kolom NULL is!!! select * from persons where pfunc <> PROGRAMMER SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting pno plname pfname pfunc 2 Johnson Paul analyst select * from persons where pfunc <> PROGRAMMER OR pfunc IS NULL pno plname pfname pfunc 2 Johnson Paul analyst 3 Jones Mary NULL Basisopleiding informatica - module 4 ABIS 73

Sorteren: ORDER BY 5 Sorteren op basis van 1 of meerdere kolommen Indien meerdere kolommen: volgorde maakt uit SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Oplopend (ASC: default) of aflopend (DESC) Syntax : ORDER BY kolomnaam1 DESC, kolomnaam2 Aliassen of kolomnummers kunnen gebruikt worden Basisopleiding informatica - module 4 ABIS 74

ORDER BY - Voorbeelden cid cstitle cdur caprice 1000 DB2, An overview 5 550.00 2000 IMS/DB 3 550.00 3000 SAS_ADV 3 600.00 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from courses order by cdur cid cstitle cdur caprice 2000 IMS/DB 3 550.00 3000 SAS_ADV 3 600.00 1000 DB2, An overview 5 550.00 select * from courses order by cstitle DESC cid cstitle cdur caprice 3000 SAS_ADV 3 600.00 2000 IMS/DB 3 550.00 1000 DB2, An overview 5 550.00 Basisopleiding informatica - module 4 ABIS 75

ORDER BY - Voorbeelden (vervolg) select from * courses order by cdur, caprice cid cstitle cdur caprice 2000 IMS/DB 3 550.00 3000 SAS_ADV 3 600.00 1000 DB2, An overview 5 550.00 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select * from courses order by caprice, cdur cid cstitle cdur caprice 2000 IMS/DB 3 550.00 1000 DB2, An overview 5 550.00 3000 SAS_ADV 3 600.00 Basisopleiding informatica - module 4 ABIS 76

ORDER BY - Voorbeelden (vervolg) select from * courses order by cdur DESC,caprice cid cstitle cdur caprice 1000 DB2, An overview 5 550.00 2000 IMS/DB 3 550.00 3000 SAS_ADV 3 600.00 SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting select cstitle, cdur, caprice from courses order by 3 cstitle cdur caprice IMS/DB 3 550.00 DB2, An overview 5 550.00 SAS_ADV 3 600.00 Basisopleiding informatica - module 4 ABIS 77

Tabellen koppelen: JOIN 6 Combineren van meerdere tabellen op basis van PK en FK (JOIN-conditie) In het FROM statement SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Meerdere types JOINs ( ivm NULL waarden) INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN Alle kolommen uit de gejoinde tabellen kunnen gebruikt worden in de select Tabellen kunnen een aliasnaam krijgen (ivm leesbaarheid en naamconflicten) Alias verplicht in Access Basisopleiding informatica - module 4 ABIS 78

INNER JOIN 6.1 Bevat enkel die rijen die in beide tabellen een matchende PK - FK combinatie hebben JOIN-conditie in FROM SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Syntax: SELECT * FROM tabel1 t1 INNER JOIN tabel2 t2 ON t1.pk=t2.fk Basisopleiding informatica - module 4 ABIS 79

INNER JOIN - Voorbeeld Companies cono coname cotownno cotown cocountr 1 ABIS 3000 LEUVEN B 2 ESCON 8200 GENT B 3 FLYGT 1200 TERNAT B SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Persons pno pfname pa_cono 1 MARGOT 2 2 CHARLES 3 4 JOHN 2 5 PAUL (null) Geef voornaam en bedrijfsnaam van elke persoon select pfname, coname from persons p inner join companies c on p.pa_cono=c.cono Resultaat: pfname MARGOT CHARLES JOHN coname ESCON FLYGT ESCON Basisopleiding informatica - module 4 ABIS 80

LEFT en RIGHT OUTER JOIN 6.2 LEFT OUTER JOIN: ook rijen uit LINKSE tabel die geen match hebben in rechtse tabel worden meegenomen RIGHT OUTER JOIN: ook rijen uit RECHTSE tabel die geen match hebben in linkse tabel worden meegenomen SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting PAUL,---- MARGOT,ABIS CHARLES,XEROX JOHN,IBM ----,APPLE LEFT INNER RIGHT Persons Companies pno pfname pa_cono cono coname cocountr 1 MARGOT 1 1 ABIS B 2 CHARLES 2 2 XEROX (null) 4 JOHN 5 5 IBM NL 5 PAUL (null) 6 APPLE B Basisopleiding informatica - module 4 ABIS 81

LEFT en RIGHT OUTER JOIN - Voorbeelden select pfname, coname from persons left outer join companies on pa_cono=cono Resultaat SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting pfname MARGOT CHARLES JOHN PAUL coname ABIS XEROX IBM (null) select pfname, coname from persons right outer join companies on pa_cono=cono Resultaat pfname MARGOT CHARLES JOHN (null) coname ABIS XEROX IBM APPLE Basisopleiding informatica - module 4 ABIS 82

FULL OUTER JOIN 6.3 Ook alle niet matchende rijen worden meegenomen Combinatie van LEFT en RIGHT outer join Voorbeeld select pfname, coname from persons full outer join companies on pa_cono=cono SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting Resultaat pfname MARGOT CHARLES JOHN PAUL (null) coname ABIS XEROX IBM (null) APPLE FULL OUTER JOIN wordt niet ondersteund in Access Basisopleiding informatica - module 4 ABIS 83

Samenvatting 7 SELECT -> welke kolommen tonen in resultaat * -> alles col1, col2 -> kolomnamen met komma s col1, col1*col2 AS hoofding -> berekende waarde, aliassen DISTINCT col1,col2 -> unieke waarden SQL 1. Wat is een query? 2. Tabellen selecteren: FROM 3. Resultaat weergeven: SE- LECT 4. Gegevens Filteren: WHERE 5. Sorteren: ORDER BY 6. Tabellen koppelen: JOIN 7. Samenvatting FROM -> tabel(len) waaruit de data komt tabelnaam1 inner join tabelnaam2 on fk_col=pk_col WHERE -> condities op rijniveau =, <>, <, >, <=, >= -> basisoperatoren AND, OR, NOT -> logische operatoren col1 (NOT) IN ( val1, val2, val3 ) -> lijst col1 (NOT) BETWEEN val1 AND val2 -> tussen col1 (NOT) LIKE %val% -> begint met / bevat col1 IS (NOT) NULL -> nulls ORDER BY -> sorteren op kolom uit resultaat (select) col1 DESC, col 2 -> kolommen, DESC = aflopend 3, hoofding (niet in ACCESS) -> kolomnummer uit select, alias Basisopleiding informatica - module 4 ABIS 84

Appendix A: Training Database Objectieven : Documentatie van de database gebruikt in de oefeningen ABIS Training & Consulting 85

ERD - Diagram 1 Appendix A: Training Database 1. ERD - Diagram 2. Tabeldefinities 3. Inhoud van de tabellen Basisopleiding informatica - module 4 ABIS 86

Tabeldefinities 2 De training database bestaat uit 5 tabellen: 1. COURSES 2. PERSONS 3. COMPANIES 4. SESSIONS 5. ENROLMENTS Appendix A: Training Database 1. ERD - Diagram 2. Tabeldefinities 3. Inhoud van de tabellen Deze database is een voorbeeld van de administratie van het departement TRAINING. Basisopleiding informatica - module 4 ABIS 87

Companies 2.1 KEY COLNO NAME COLTYPE LENGTH SCALE NULLS DEFAULT ------------------------------------------------------------------ PK 1 CONO SMALLINT - - N - 2 CONAME CHAR 45 - N - 5 COTOWN CHAR 45 - N - 6 COTOWNNO CHAR 10 - Y NULL 7 COCOUNTR CHAR 4 - Y NULL 8 COTEL CHAR 16 - Y NULL 9 COVAT CHAR 11 - Y NULL 10 COBANKNO CHAR 14 - Y NULL Appendix A: Training Database 1. ERD - Diagram 2. Tabeldefinities 3. Inhoud van de tabellen Semantiek: CONO: (artificiële PK), bevat het bedrijfsnummer CONAME: naam van het bedrijf COTOWN: plaats waar het bedrijf gevestigd is COTOWNNO: postcode COCOUNTR: landcode (B,NL,D of GB) COTEL: telefoonnummer van het bedrijf COVAT: BTW nummer COBANKNO: bankrekeningnummer Basisopleiding informatica - module 4 ABIS 88

Persons 2.2 KEY COLNO NAME COLTYPE LENGTH SCALE NULLS DEFAULT ------------------------------------------------------------------ PK 1 PNO SMALLINT - - N - 2 PLNAME CHAR 40 - N - 3 PFNAME VARCHAR 15 - Y NULL 4 PFUNC CHAR 20 - Y NULL FK(N) 5 PA_CONO SMALLINT - - Y NULL 6 PADEPT CHAR 30 - Y NULL 8 PSEX CHAR 1 - Y NULL Appendix A: Training Database 1. ERD - Diagram 2. Tabeldefinities 3. Inhoud van de tabellen Semantiek: PNO: (artificiële PK), bevat het persoonsnummer PLNAME: familienaam PFNAME: voornaam PFUNC: functie van de persoon PA_CONO: FK naar COMPANIES, bedrijf waar de persoon werkt PADEPT: departement in het bedrijf waar de persoon werkt PSEX: geslacht van de persoon, man ( M ) of vrouw ( F ) Basisopleiding informatica - module 4 ABIS 89