De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases."— Transcript van de presentatie:

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

2 Internetapplicaties - VIII Relationele Databases2 Doelstelling  Leren werken met een ‘echte’ database server  Eenvoudige SQL-commando’s leren gebruiken  Achtergrondkennis opdoen om uiteindelijk JSP, Java en relationele databases te kunnen combineren.

3 Internetapplicaties - VIII Relationele Databases3 Boeken/tutorials:  Beginning JSP Web Development, Wrox  Vooral hfdst. 15

4 Internetapplicaties - VIII Relationele Databases4 Databases  Het kunnen opslaan van gegevens als het programma of de sessie afgelopen zijn, noemt men persistentie.  Voor beperkte persistentie kunnen we volstaan met eenvoudige file-I/O.  In andere gevallen hebben we een echt DBMS nodig.

5 Internetapplicaties - VIII Relationele Databases5 Soorten Databases Er zijn verschillende types van databases.  Hiërarchische database  Gegevens worden bewaard in een boomstructuur (strikte afhankelijkheden)  Moeilijk om gegevens volgens bepaalde criteria terug te vinden.  Oudste type  De zeer recente XML-databases kunnen gezien worden als hiërarchisch, maar met links.  Relationele databases (ORACLE, Sybase, MS SQL Server, MySql,… zijn Relationele DataBase Management Systemen)  Gegevens worden bewaard in 2-dim. tabellen die records bevatten.  Tabellen zijn gelinkt via speciale sleutelvelden.  Links gaan in één richting.  Er is een stevige wiskundige onderbouw.  Populairste type voor nieuwe ontwikkelingen (hoewel al 30 jaar oud)

6 Internetapplicaties - VIII Relationele Databases6 Soorten databases (vervolg)  OO databases (GemStone, ObjectStore, Versant zijn OODBMS)  Rol van records wordt +/- gespeeld door objecten.  Rol van tabellen wordt +/- gespeeld door klassen.  Links kunnen bidirectioneel zijn (sneller want vaak geen zoek-algoritme nodig om gegevens samen te stellen).  Een overtuigend theoretisch kader ontbreekt vooralsnog.  Zijn nog niet echt doorgebroken.

7 Internetapplicaties - VIII Relationele Databases7 relationele database server  = programma op de servermachine die 1 of meer relationele databases bevat.  Client-applicaties (die meestal op clientmachines draaien) kunnen bij de database server een connectie naar 1 van de zijn databases aanvragen.  Via deze connectie kunnen de client-applicaties aan de database server vragen om gegevens op te vragen en te manipuleren.  Vaak wordt hiervoor ook RDBMS (relational database management system) gebruikt als naam, maar deze naam kan ook gebruikt worden voor Access, FoxPro e.d. die minder geschikt zijn om op de servermachine te draaien.

8 Internetapplicaties - VIII Relationele Databases8 Installatie en configuratie van de MySql relationele database server  Download de productie-versie van MySQL vanuit (4.0.17)  Unzip naar uw c:\mysql directory.  Installeer MySQL als service:  Open een command-console (Start/Run/cmd)  Ga naar de c:\mysql\bin directory en tik daar mysqld-nt --install mysqld-nt --install  Start de winmysqladmin.exe tool. Geef nog geen paswoord in (cancel). Met de rechtermuisknop op het stoplicht rechtsonder klikken, laat toe om de database server te starten, stoppen en de administratietool te tonen (show me).  In de my.ini setup tab, moet je mysqld-max kiezen (om transacties te laten ondersteunen).

9 Internetapplicaties - VIII Relationele Databases9 De command line tool mysql.exe  Nog binnen de gewone command console, in c:\mysql\bin kun je een lijst van de databases krijgen met mysqlshow  mysql heeft een eigen command line tool, waarmee database-operaties kunnen worden uitgevoerd van op de server: Tik mysql>  Er verschijnt een eigen ‘prompt’: mysql> mysql>

10 Internetapplicaties - VIII Relationele Databases10 Resultaat in de command console

11 Internetapplicaties - VIII Relationele Databases11 Resultaat in winmysqladmin.exe

12 Internetapplicaties - VIII Relationele Databases12 Database Security  Bij MS besturingssystemen, krijgen alle lokale gebruikers by default volledige toegang tot alle databases. Dit willen we niet.  Eerst bekijken we wat er nu in de tabel mysql.user zit. mysql> select host, user from mysql.user; | host | user | | % | | | % | root | | localhost | | | localhost | root |

13 Internetapplicaties - VIII Relationele Databases13 Database Security (vervolg)  In de tabel user van de database mysql, moeten we eerst het record met Host=‘localhost’ en User=‘’ verwijderen. Want die maakt dat iedereen overal aan kan. We bekijken het resultaat en gaan uit de tool. mysql> delete from mysql.user where host=‘localhost’ and user = ‘’: mysql> select host, user from mysql.user; | host | user | | % | | | % | root | | localhost | root | mysql> quit

14 Internetapplicaties - VIII Relationele Databases14 Passwoord zetten  We geven user root nu een paswoord: C:\mysql\bin> mysqladmin reload C:\mysql\bin> mysqladmin –u root password birm  We kijken nu of we de mysql server kunnen afzetten: C:\mysql\bin> mysqladmin –-user=root –-password=birm shutdown  Om effect te hebben moeten we nu eerst rebooten

15 Internetapplicaties - VIII Relationele Databases15 Connecteren met paswoord C:\mysql\bin> mysql –u root –p Enter password: birm Disconnecteren gebeurt zoals voorheen: mysql> quit Als er iets misging met de paswoorden, kun je nu nog mysql verwijderen en opnieuw beginnen. Dat gaat zo:

16 Internetapplicaties - VIII Relationele Databases16 MySQL volledig verwijderen  Via c:\mysqm\bin\winmysqladmin kun je (rechtermuisknop op stoplicht) de service al stoppen en verwijderen  In settings/Add Remove Programs  mySQL desinstalleren  Vervolgens de c:\mysql directory manueel verwijderen  Vervolgens c:\my.ini verwijderen Als de service toch hardnekkig blijft draaien en bestaan:  In settings/administrative tools/services:  mySQL service STOPPEN  Nu de service uit de registry halen:  Start/Run/regedit  Klik op HKEY_LOCAL_MACHINE  Zoek op mysqld-nt  Verwijder de map mysql uit de map services  Nu opnieuw opstarten

17 Internetapplicaties - VIII Relationele Databases17 SQL commando create  Aanmaak database met als naam birmtest (om te verwijderen: drop ipv create): (om te verwijderen: drop ipv create): mysql>create database birmtest;  Maak van birmtest de default database voor nu: mysql>use birmtest  Maak een nieuwe tabel Klant aan: mysql> 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) );

18 Internetapplicaties - VIII Relationele Databases18 Opmerkingen  klant_id INTEGER NOT NULL PRIMARY KEY -> betekent dat we een veld klant_id willen maken van het type INTEGER. -> NOT NULL betekent dat klant_id voor elk record moet bestaan (niet NULL mag zijn) -> PRIMARY KEY betekent o.a. dat het veld klant_id een unieke sleutel is voor zijn record. klant_id zal altijd precies 1 record bepalen.  naam CHAR(40) -> betekent dat we en veld naam willen maken van het type CHAR van maximum 40 karakters lang.  Er zijn nog vele andere types, maar daar komen we later op terug.

19 Internetapplicaties - VIII Relationele Databases19 SQL commando insert  Invoegen van een klantrecord: mysql>insert into Klant values (1, 'Peeters','Filip','1000','Brussel'); Opm: in principe moet je de veldnamen expliciet vermelden, omdat theoretisch, de veldnamen geen volgorde hebben.  Invoegen van bestaande primary key mag niet: mysql>insert into Klant values (1, 'Claes','Willy','2000','Antwerpen'); ERROR 1062: Duplicate entry '1' for key 1  Nu met unieke klant_id: mysql>insert into Klant values (2, 'Claes','Willy','2000','Antwerpen'); Query OK, 1 row affected (0.00 sec)

20 Internetapplicaties - VIII Relationele Databases20 SQL commando select  Select hadden we al gezien bij het bekijken van user en host in de user-tabel. mysql> select * from klant; | klant_id | naam | voornaam | zip | stad | | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claes | Willy | 2000 | Antwerpen | rows in set (0.00 sec)

21 Internetapplicaties - VIII Relationele Databases21 SQL commando update  Update gebuiken we om bestaande records te wijzigen. mysql> update Klant set naam = 'Claeys' where klant_id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from klant; | klant_id | naam | voornaam | zip | stad | | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claeys | Willy | 2000 | Antwerpen |

22 Internetapplicaties - VIII Relationele Databases22 SQL commando delete  Delete gebuiken we om bestaande records te verwijderen. mysql> delete from Klant where naam = 'Claeys'; Query OK, 1 row affected (0.05 sec) mysql> select * from klant; | klant_id | naam | voornaam | zip | stad | | 1 | Peeters | Filip | 1000 | Brussel | row in set (0.00 sec)

23 Internetapplicaties - VIII Relationele Databases23 Meerdere tabellen  We voegen het 2e record opnieuw toe: mysql> insert into Klant values (2, 'Claes','Willy','2000','Antwerpen'); mysql> select * from Klant; | klant_id | naam | voornaam | zip | stad | | 1 | Peeters | Filip | 1000 | Brussel | | 2 | Claes | Willy | 2000 | Antwerpen |  We creëren een tabel Bestelling die gelinkt zal worden met Klant: mysql> create table Bestelling ( best_id INTEGER NOT NULL PRIMARY KEY, klant_id INTEGER, besteld DATE);

24 Internetapplicaties - VIII Relationele Databases24 Meerdere tabellen…  In Bestelling voegen we 3 records toe. mysql> insert into Bestelling values (1000,2,' '); mysql> insert into Bestelling values (2000,2,' '); mysql> insert into Bestelling values (3000,1,' '); Als we de gegevens van een klant met bijbehorende bestellingen willen zien dan moeten we deze link zelf aangeven:

25 Internetapplicaties - VIII Relationele Databases25 …joinconditie nodig mysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestel ling where klant.klant_id = bestelling.klant_id; | klant_id | naam | voornaam | zip | stad | best_id | besteld | | 2 | Claes | Willy | 2000 | Antwerpen | 1000 | | | 2 | Claes | Willy | 2000 | Antwerpen | 2000 | | | 1 | Peeters | Filip | 1000 | Brussel | 3000 | | mysql> select klant.*, bestelling.best_id, bestelling.besteld from klant, bestel ling ; | klant_id | naam | voornaam | zip | stad | best_id | besteld | | 1 | Peeters | Filip | 1000 | Brussel | 1000 | | | 2 | Claes | Willy | 2000 | Antwerpen | 1000 | | | 1 | Peeters | Filip | 1000 | Brussel | 2000 | | | 2 | Claes | Willy | 2000 | Antwerpen | 2000 | | | 1 | Peeters | Filip | 1000 | Brussel | 3000 | | | 2 | Claes | Willy | 2000 | Antwerpen | 3000 | |


Download ppt "Internetapplicaties - VIII Relationele Databases 1 Internetapplicaties Deel 8: Relationele Databases."

Verwante presentaties


Ads door Google