25
Internetapplicaties - VIII Relationele Internetapplicaties - VIII Relationele Databases Databases 1 Internetapplicaties Internetapplicaties Deel 8: Relationele Deel 8: Relationele Databases Databases

Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Embed Size (px)

Citation preview

Page 1: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 11

InternetapplicatiesInternetapplicaties

Deel 8: Relationele DatabasesDeel 8: Relationele Databases

Page 2: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 22

DoelstellingDoelstelling

Leren werken met een ‘echte’ database server Leren werken met een ‘echte’ database server Eenvoudige SQL-commando’s leren Eenvoudige SQL-commando’s leren

gebruikengebruiken Achtergrondkennis opdoen om uiteindelijk Achtergrondkennis opdoen om uiteindelijk

JSP, Java en relationele databases te kunnen JSP, Java en relationele databases te kunnen combineren. combineren.

Page 3: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 33

Boeken/tutorials:Boeken/tutorials:

Beginning JSP Web Development, WroxBeginning JSP Web Development, Wrox Vooral hfdst. 15Vooral hfdst. 15

Page 4: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 44

DatabasesDatabases

Het kunnen Het kunnen opslaanopslaan van gegevens als het van gegevens als het programma of de sessie afgelopen zijn, noemt programma of de sessie afgelopen zijn, noemt men men persistentiepersistentie..

Voor beperkte persistentie kunnen we Voor beperkte persistentie kunnen we volstaan met eenvoudige file-I/O.volstaan met eenvoudige file-I/O.

In andere gevallen hebben we een echt In andere gevallen hebben we een echt DBMSDBMS nodig. nodig.

Page 5: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 55

Soorten DatabasesSoorten DatabasesEr zijn verschillende types van databases.Er zijn verschillende types van databases. Hiërarchische database Hiërarchische database

Gegevens worden bewaard in een boomstructuur (strikte Gegevens worden bewaard in een boomstructuur (strikte afhankelijkheden)afhankelijkheden)

Moeilijk om gegevens volgens bepaalde criteria terug te vinden.Moeilijk om gegevens volgens bepaalde criteria terug te vinden. Oudste type Oudste type De zeer recente XML-databases kunnen gezien worden als De zeer recente XML-databases kunnen gezien worden als

hiërarchisch, maar met links.hiërarchisch, maar met links. Relationele databases (ORACLE, Sybase, MS SQL Server, Relationele databases (ORACLE, Sybase, MS SQL Server,

MySql,… zijn MySql,… zijn RRelationele elationele DDataataBBase ase MManagement anagement SSystemen)ystemen) Gegevens worden bewaard in 2-dim. tabellen die Gegevens worden bewaard in 2-dim. tabellen die recordsrecords bevatten. bevatten. Tabellen zijn gelinkt via speciale sleutelvelden.Tabellen zijn gelinkt via speciale sleutelvelden. Links gaan in één richting.Links gaan in één richting. Er is een stevige wiskundige onderbouw.Er is een stevige wiskundige onderbouw. Populairste type voor nieuwe ontwikkelingen (hoewel al 30 jaar oud)Populairste type voor nieuwe ontwikkelingen (hoewel al 30 jaar oud)

Page 6: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 66

Soorten databases (vervolg)Soorten databases (vervolg)

OO databases (GemStone, ObjectStore, OO databases (GemStone, ObjectStore, Versant zijn Versant zijn OODBMSOODBMS)) Rol van records wordt +/- gespeeld door objecten.Rol van records wordt +/- gespeeld door objecten. Rol van tabellen wordt +/- gespeeld door klassen.Rol van tabellen wordt +/- gespeeld door klassen. Links kunnen bidirectioneel zijn (sneller want vaak Links kunnen bidirectioneel zijn (sneller want vaak

geen zoek-algoritme nodig om gegevens samen geen zoek-algoritme nodig om gegevens samen te stellen).te stellen).

Een overtuigend theoretisch kader ontbreekt Een overtuigend theoretisch kader ontbreekt vooralsnog.vooralsnog.

Zijn nog niet echt doorgebroken.Zijn nog niet echt doorgebroken.

Page 7: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 77

relationele database serverrelationele database server = programma op de servermachine die 1 of meer relationele = programma op de servermachine die 1 of meer relationele

databases bevat.databases bevat. Client-applicaties (die meestal op clientmachines draaien) Client-applicaties (die meestal op clientmachines draaien)

kunnen bij de database server een connectie naar 1 van de kunnen bij de database server een connectie naar 1 van de zijn databases aanvragen.zijn databases aanvragen.

Via deze connectie kunnen de client-applicaties aan de Via deze connectie kunnen de client-applicaties aan de database server vragen om gegevens op te vragen en te database server vragen om gegevens op te vragen en te manipuleren.manipuleren.

Vaak wordt hiervoor ook RDBMS (relational database Vaak wordt hiervoor ook RDBMS (relational database management system) gebruikt als naam, maar deze naam management system) gebruikt als naam, maar deze naam kan ook gebruikt worden voor Access, FoxPro e.d. die minder kan ook gebruikt worden voor Access, FoxPro e.d. die minder geschikt zijn om op de servermachine te draaien.geschikt zijn om op de servermachine te draaien.

Page 8: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 88

Installatie en configuratie van de Installatie en configuratie van de MySql relationele database serverMySql relationele database server

Download de productie-versie van MySQL vanuit Download de productie-versie van MySQL vanuit www.mysql.comwww.mysql.com (4.0.17) (4.0.17)

Unzip naar uw c:\mysql directory.Unzip naar uw c:\mysql directory. Installeer MySQL als Installeer MySQL als serviceservice::

Open een command-console (Start/Run/cmd)Open een command-console (Start/Run/cmd) Ga naar de Ga naar de c:\mysql\binc:\mysql\bin directory en tik daar directory en tik daar mysqld-nt --installmysqld-nt --install

Start de Start de winmysqladmin.exe winmysqladmin.exe tool. Geef nog geen tool. Geef nog geen paswoord in (cancel). Met de rechtermuisknop op het stoplicht paswoord in (cancel). Met de rechtermuisknop op het stoplicht rechtsonder klikken, laat toe om de database server te rechtsonder klikken, laat toe om de database server te starten, stoppen en de administratietool te tonen (show me).starten, stoppen en de administratietool te tonen (show me).

In de my.ini setup tab, moet je In de my.ini setup tab, moet je mysqld-maxmysqld-max kiezen (om kiezen (om transacties te laten ondersteunen).transacties te laten ondersteunen).

Page 9: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 99

De command line tool mysql.exeDe command line tool mysql.exe

Nog binnen de gewone command console, in Nog binnen de gewone command console, in c:\mysql\binc:\mysql\bin kun je een lijst van de kun je een lijst van de databases krijgen met databases krijgen met mysqlshowmysqlshow

mysql heeft een eigen command line tool, mysql heeft een eigen command line tool, waarmee database-operaties kunnen worden waarmee database-operaties kunnen worden uitgevoerd van op de server: Tik uitgevoerd van op de server: Tik mysql>mysql>

Er verschijnt een eigen ‘prompt’: Er verschijnt een eigen ‘prompt’:

mysql>mysql>

Page 10: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1010

Resultaat in de command console Resultaat in de command console

Page 11: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1111

Resultaat in winmysqladmin.exe Resultaat in winmysqladmin.exe

Page 12: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1212

Database SecurityDatabase Security Bij MS besturingssystemen, krijgen alle lokale gebruikers by Bij MS besturingssystemen, krijgen alle lokale gebruikers by

default volledige toegang tot alle databases. Dit willen we niet.default volledige toegang tot alle databases. Dit willen we niet. Eerst bekijken we wat er nu in de tabel mysql.user zit.Eerst bekijken we wat er nu in de tabel mysql.user zit.

mysql>mysql> select host, user from mysql.user; select host, user from mysql.user;+-----------+------++-----------+------+| host | user || host | user |+-----------+------++-----------+------+| % | || % | || % | root || % | root || localhost | || localhost | || localhost | root || localhost | root |+-----------+------++-----------+------+

Page 13: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1313

Database Security (vervolg)Database Security (vervolg) In de tabel In de tabel useruser van de database van de database mysqlmysql, moeten we eerst het record met , moeten we eerst het record met

Host=‘localhost’ en User=‘’ verwijderen. Want die maakt dat iedereen Host=‘localhost’ en User=‘’ verwijderen. Want die maakt dat iedereen overal aan kan. We bekijken het resultaat en gaan uit de tool.overal aan kan. We bekijken het resultaat en gaan uit de tool.

mysql>mysql> delete from mysql.user where host=‘localhost’ and delete from mysql.user where host=‘localhost’ and user = ‘’:user = ‘’:

mysql>mysql> select host, user from mysql.user; select host, user from mysql.user;+-----------+------++-----------+------+| host | user || host | user |+-----------+------++-----------+------+| % | || % | || % | root || % | root || localhost | root || localhost | root |+-----------+------++-----------+------+mysql>mysql> quit quit

Page 14: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1414

Passwoord zettenPasswoord zetten

We geven user We geven user root root nu een paswoord: nu een paswoord:C:\mysql\bin>C:\mysql\bin> mysqladmin reload mysqladmin reload

C:\mysql\bin>C:\mysql\bin> mysqladmin –u root password birm mysqladmin –u root password birm

We kijken nu of we de mysql server kunnen We kijken nu of we de mysql server kunnen afzetten:afzetten:

C:\mysql\bin>C:\mysql\bin> mysqladmin –-user=root –-password=birm shutdown mysqladmin –-user=root –-password=birm shutdown

Om effect te hebben moeten we nu eerst Om effect te hebben moeten we nu eerst rebootenrebooten

Page 15: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1515

Connecteren met paswoordConnecteren met paswoord

C:\mysql\bin> C:\mysql\bin> mysql –u root –pmysql –u root –p

Enter password: Enter password: birmbirm

Disconnecteren gebeurt zoals voorheen:Disconnecteren gebeurt zoals voorheen:

mysql> mysql> quitquit

Als er iets misging met de paswoorden, kun je Als er iets misging met de paswoorden, kun je nu nog mysql verwijderen en opnieuw nu nog mysql verwijderen en opnieuw beginnen. Dat gaat zo:beginnen. Dat gaat zo:

Page 16: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1616

MySQL volledig verwijderenMySQL volledig verwijderen Via c:\mysqm\bin\winmysqladmin kun je (rechtermuisknop op stoplicht) de Via c:\mysqm\bin\winmysqladmin kun je (rechtermuisknop op stoplicht) de

service al stoppen en verwijderenservice al stoppen en verwijderen In settings/Add Remove ProgramsIn settings/Add Remove Programs

mySQL desinstallerenmySQL desinstalleren Vervolgens de c:\mysql directory manueel verwijderenVervolgens de c:\mysql directory manueel verwijderen Vervolgens c:\my.ini verwijderenVervolgens c:\my.ini verwijderenAls de service toch hardnekkig blijft draaien en bestaan:Als de service toch hardnekkig blijft draaien en bestaan: In settings/administrative tools/services:In settings/administrative tools/services:

mySQL service STOPPENmySQL service STOPPEN Nu de service uit de registry halen:Nu de service uit de registry halen:

Start/Run/regeditStart/Run/regedit Klik op HKEY_LOCAL_MACHINEKlik op HKEY_LOCAL_MACHINE Zoek op mysqld-ntZoek op mysqld-nt Verwijder de map mysql uit de map servicesVerwijder de map mysql uit de map services

Nu opnieuw opstartenNu opnieuw opstarten

Page 17: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1717

SQL commando createSQL commando create Aanmaak database met als naam birmtest Aanmaak database met als naam birmtest (om te verwijderen: drop ipv create):(om te verwijderen: drop ipv create):mysql>mysql>create database birmtest;create database birmtest; Maak van birmtest de default database voor nu:Maak van birmtest de default database voor nu:mysql>mysql>use birmtestuse birmtest Maak een nieuwe tabel Maak een nieuwe tabel KlantKlant aan: aan:mysql> mysql> create table Klant (create table Klant ( -> -> klant_id INTEGER NOT NULL PRIMARY KEY,klant_id INTEGER NOT NULL PRIMARY KEY, -> -> naam CHAR(40),naam CHAR(40), -> -> voornaam CHAR(40),voornaam CHAR(40), -> -> zip CHAR(4),zip CHAR(4), -> -> stad CHAR(40) );stad CHAR(40) );

Page 18: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1818

OpmerkingenOpmerkingen klant_id INTEGER NOT NULL PRIMARY KEYklant_id INTEGER NOT NULL PRIMARY KEY

-> betekent dat we een veld klant_id willen maken van het -> betekent dat we een veld klant_id willen maken van het type INTEGER.type INTEGER.

-> NOT NULL betekent dat klant_id voor elk record moet -> NOT NULL betekent dat klant_id voor elk record moet bestaan (niet NULL mag zijn)bestaan (niet NULL mag zijn)

-> PRIMARY KEY betekent o.a. dat het veld klant_id een -> PRIMARY KEY betekent o.a. dat het veld klant_id een unieke sleutel is voor zijn record. klant_id zal altijd precies unieke sleutel is voor zijn record. klant_id zal altijd precies 1 record bepalen.1 record bepalen.

naam CHAR(40)naam CHAR(40)

-> betekent dat we en veld naam willen maken van het type -> betekent dat we en veld naam willen maken van het type CHAR van maximum 40 karakters lang.CHAR van maximum 40 karakters lang.

Er zijn nog vele andere types, maar daar komen we Er zijn nog vele andere types, maar daar komen we later op terug.later op terug.

Page 19: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 1919

SQL commando insertSQL commando insert

Invoegen van een klantrecord:Invoegen van een klantrecord:mysql>mysql>insert into Klant values (1, insert into Klant values (1,

'Peeters','Filip','1000','Brussel');'Peeters','Filip','1000','Brussel');

Opm: in principe moet je de veldnamen expliciet vermelden, Opm: in principe moet je de veldnamen expliciet vermelden, omdat theoretisch, de veldnamen geen volgorde hebben.omdat theoretisch, de veldnamen geen volgorde hebben.

Invoegen van bestaande primary key mag niet:Invoegen van bestaande primary key mag niet:mysql>mysql>insert into Klant values (insert into Klant values (11, ,

'Claes','Willy','2000','Antwerpen');'Claes','Willy','2000','Antwerpen');ERROR 1062: Duplicate entry '1' for key 1ERROR 1062: Duplicate entry '1' for key 1

Nu met unieke klant_id:Nu met unieke klant_id:mysql>mysql>insert into Klant values (insert into Klant values (22, ,

'Claes','Willy','2000','Antwerpen');'Claes','Willy','2000','Antwerpen');Query OK, 1 row affected (0.00 sec)Query OK, 1 row affected (0.00 sec)

Page 20: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2020

SQL commando selectSQL commando select

Select hadden we al gezien bij het bekijken van user en host Select hadden we al gezien bij het bekijken van user en host in de user-tabel.in de user-tabel.

mysql> mysql> select * from klant;select * from klant;+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| klant_id | naam | voornaam | zip | stad || klant_id | naam | voornaam | zip | stad |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| 1 | Peeters | Filip | 1000 | Brussel || 1 | Peeters | Filip | 1000 | Brussel || 2 | Claes | Willy | 2000 | Antwerpen || 2 | Claes | Willy | 2000 | Antwerpen |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+2 rows in set (0.00 sec)2 rows in set (0.00 sec)

Page 21: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2121

SQL commando updateSQL commando update

Update gebuiken we om bestaande records te wijzigen.Update gebuiken we om bestaande records te wijzigen.mysql>mysql> update Klant set naam = 'Claeys' where klant_id = update Klant set naam = 'Claeys' where klant_id =

2;2;Query OK, 1 row affected (0.06 sec)Query OK, 1 row affected (0.06 sec)Rows matched: 1 Changed: 1 Warnings: 0Rows matched: 1 Changed: 1 Warnings: 0

mysql>mysql> select * from klant; select * from klant;+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| klant_id | naam | voornaam | zip | stad || klant_id | naam | voornaam | zip | stad |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| 1 | Peeters | Filip | 1000 | Brussel || 1 | Peeters | Filip | 1000 | Brussel || 2 | Claeys | Willy | 2000 | Antwerpen || 2 | Claeys | Willy | 2000 | Antwerpen |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+

Page 22: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2222

SQL commando deleteSQL commando delete

Delete gebuiken we om bestaande records te verwijderen.Delete gebuiken we om bestaande records te verwijderen.mysql> mysql> delete from Klant where naam = 'Claeys';delete from Klant where naam = 'Claeys';Query OK, 1 row affected (0.05 sec)Query OK, 1 row affected (0.05 sec)

mysql> mysql> select * from klant;select * from klant;+----------+---------+----------+------+---------++----------+---------+----------+------+---------+| klant_id | naam | voornaam | zip | stad || klant_id | naam | voornaam | zip | stad |+----------+---------+----------+------+---------++----------+---------+----------+------+---------+| 1 | Peeters | Filip | 1000 | Brussel || 1 | Peeters | Filip | 1000 | Brussel |+----------+---------+----------+------+---------++----------+---------+----------+------+---------+1 row in set (0.00 sec)1 row in set (0.00 sec)

Page 23: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2323

Meerdere tabellenMeerdere tabellen We voegen het 2e record opnieuw toe:We voegen het 2e record opnieuw toe:mysql> mysql> insert into Klant values (2, insert into Klant values (2,

'Claes','Willy','2000','Antwerpen');'Claes','Willy','2000','Antwerpen');mysql> mysql> select * from Klant;select * from Klant;+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| klant_id | naam | voornaam | zip | stad || klant_id | naam | voornaam | zip | stad |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+| 1 | Peeters | Filip | 1000 | Brussel || 1 | Peeters | Filip | 1000 | Brussel || 2 | Claes | Willy | 2000 | Antwerpen || 2 | Claes | Willy | 2000 | Antwerpen |+----------+---------+----------+------+-----------++----------+---------+----------+------+-----------+

We creëren een tabel Bestelling die gelinkt zal worden met We creëren een tabel Bestelling die gelinkt zal worden met Klant:Klant:

mysql> mysql> create table Bestelling ( best_id INTEGER NOT NULL create table Bestelling ( best_id INTEGER NOT NULL PRIMARY KEY, klant_id INTEGER, besteld DATE);PRIMARY KEY, klant_id INTEGER, besteld DATE);

Page 24: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2424

Meerdere tabellen…Meerdere tabellen…

In Bestelling voegen we 3 records toe. In Bestelling voegen we 3 records toe. mysql> mysql> insert into Bestelling values insert into Bestelling values ((10001000,,22,'2004-01-13');,'2004-01-13');

mysql>mysql> insert into Bestelling values insert into Bestelling values ((20002000,,22,'2004-01-14');,'2004-01-14');

mysql>mysql> insert into Bestelling values insert into Bestelling values (3000,1,'2005-01-01');(3000,1,'2005-01-01');

Als we de gegevens van een klant met bijbehorende Als we de gegevens van een klant met bijbehorende bestellingen willen zien dan moeten we deze link bestellingen willen zien dan moeten we deze link zelfzelf aangeven: aangeven:

Page 25: Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases

Internetapplicaties - VIII Relationele DatabasesInternetapplicaties - VIII Relationele Databases 2525

……joinconditie nodigjoinconditie nodigmysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestelmysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestelling ling where klant.klant_id = bestelling.klant_idwhere klant.klant_id = bestelling.klant_id;;+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+| klant_id | naam | voornaam | zip | stad | best_id | besteld || klant_id | naam | voornaam | zip | stad | best_id | besteld |+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+| | 22 | Claes | Willy | 2000 | Antwerpen | | Claes | Willy | 2000 | Antwerpen | 10001000 | 2004-01-13 | | 2004-01-13 || | 22 | Claes | Willy | 2000 | Antwerpen | | Claes | Willy | 2000 | Antwerpen | 20002000 | 2004-01-14 | | 2004-01-14 || 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 || 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 |+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+mysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestelmysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestelling ;ling ;+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+| klant_id | naam | voornaam | zip | stad | best_id | besteld || klant_id | naam | voornaam | zip | stad | best_id | besteld |+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+| 1 | Peeters | Filip | 1000 | Brussel | 1000 | 2004-01-13 || 1 | Peeters | Filip | 1000 | Brussel | 1000 | 2004-01-13 || 2 | Claes | Willy | 2000 | Antwerpen | 1000 | 2004-01-13 || 2 | Claes | Willy | 2000 | Antwerpen | 1000 | 2004-01-13 || 1 | Peeters | Filip | 1000 | Brussel | 2000 | 2004-01-14 || 1 | Peeters | Filip | 1000 | Brussel | 2000 | 2004-01-14 || 2 | Claes | Willy | 2000 | Antwerpen | 2000 | 2004-01-14 || 2 | Claes | Willy | 2000 | Antwerpen | 2000 | 2004-01-14 || 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 || 1 | Peeters | Filip | 1000 | Brussel | 3000 | 2005-01-01 || | 22 | Claes | Willy | 2000 | Antwerpen | | Claes | Willy | 2000 | Antwerpen | 30003000 | 2005-01-01 | | 2005-01-01 |+----------+---------+----------+------+-----------+---------+------------++----------+---------+----------+------+-----------+---------+------------+