Opleiding Web Developer 2014-2015
25/11/14 Stand van zaken •  8 lessen back-­‐end achter de rug: – 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
– 
1.1 Wat is PHP? 1.2 OpzeCen ontwikkelomgeving 1.4 Hello World 2.1 variabelen 2.2 datatypes 2.3 Operatoren 2.4 Arrays 2.5 FuncKons 2.6 Include / require 3.1 If … else & ternary operator 3.2 For 3.3 Foreach 5.1 WWW / HTTP 5.2 $_GET / $_POST FuncKes •  Nog 22 lessen back-­‐end en 10 lessen database te gaan! Tijd voor databases! IntroducKe MySQL 1 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 In deze les •  IntroducKe –  Databases –  RelaKonele databases –  SQL en MySQL •  SELECT statement •  InstallaKe/configuraKe MySQL •  InstallaKe GUI (Sequel Pro / HeidiSQL / MySQL Workbench) •  Importeren .sql bestand met Northwind db •  Oefeningen Wat is een database? •  (drie)Dubbele betekenis: 1.  (de server waarop de database soeware draait) 2.  So%ware om gegevens in te beheren (bvb MySQL) 3.  Groep van tabellen in deze so%ware (Bvb alle tabellen van een bepaald website project) •  Database bevat tabellen –  Een tabel is vergelijkbaar met Excel-­‐spreadsheet –  Kolommen worden vooraf gedefinieerd –  Rijen vertegenwoordigen individuele enKteiten (bvb één concrete werknemer in een tabel metpersoneel) à deze rijen noemen we in database-­‐taal "records" 2 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Voorbeeld tabellen in database Voorbeeld kolommen ("fields") 3 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Voorbeeld gevulde rijen in tabel Enkele kenmerken van tabellen •  Typisch is er minstens één kolom genaamd "ID" die een uniek nummer bevat om elke record te idenKficeren. Dit noemen we een key –  Het is immers mogelijk dat de rest van de kolommen idenKek zijn in verschillende records (mensen met dezelfde naam etc) –  Een ID wordt typisch ingesteld zodat het automaKsch ingevuld wordt bij het aanmaken van een record. –  ID's die voordien gebruikt werden (zelfs als de record niet meer bestaat) mogen niet opnieuw gebruikt worden •  Naam van de tabel verwijst naar het soort enKteit dat erin bewaard wordt (bvb "klanten") •  Kolommen hebben een data type –  Zoals data types in PHP, maar veel strikter. Later meer… 4 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 RelaKes tussen enKteiten •  EnKteiten (records) zijn vaak aan elkaar gelinkt. •  Klassiek voorbeeld: werknemers en afdelingen à dezelfde informaKe (afdeling) komt herhaaldelijk terug id voornaam achternaam afdeling 1 Jos Van Os Verkoop 2 Karel De Grote ProducKe 3 Marja Van Genechten Verkoop 4 Hyena De Prins Management 5 Louis Delhaize Verkoop 6 Alexandra Moussaka ProducKe 7 Mike Verhandel Klein Verlet •  Probleem: wat als naam afdeling "verkoop" verandert in "sales"? Oplossing: aparte tabellen met relaKes Tabel werknemers id voornaam achternaam afdeling_id 1 Jos Van Os 1 2 Karel De Grote 2 3 Marja Van Genechten 1 4 Hyena De Prins 3 5 Louis Delhaize 1 6 Alexandra Moussaka 2 7 Mike Verhandel 4 Tabel afdelingen id afdeling 1 Verkoop 2 ProducKe 3 Management 4 Klein Verlet 5 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Voordelen •  Als naam afdeling verandert moeten niet alle records van de werknemers aangepast worden –  Eenvoudiger (1 aanpassing ipv honderden) –  Minder risico dat er per ongeluk iets misloopt –  Conceptueel is dit juister: elke enKteit (afdeling, werknemer,…) heee een eigen tabel. Als de naam van een afdeling wijzigt zou het niet kloppen dat records van een andere enKteit aangepast moeten worden •  Nadeel: informaKe selecteren wordt complexer •  De kolom afdeling_id in tabel werknemers noemen we een foreign key RelaKonele databases •  RelaKonele databases zijn ontwikkeld met het oog op het behouden en beheren van enKteiten en hun onderlinge relaKes –  Het ontwerp van de tabellen in onze database weerspiegelt best de werkelijkheid zoveel mogelijk –  RelaKonele databases helpen ons bij het leggen van relaKes en het behouden van hun integriteit (Bvb je kan geen afdeling verwijderen zolang er nog werknemers aan toegewezen zijn) –  Een relaKonele database maakt het mogelijk complexe selecKes en manipulaKes te doen, waarbij meerdere tabellen gecombineerd worden in 1 commando (dit noemen we een join). 6 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Denkoefening: database concertorganisaKe • 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Klanten Aansprekingen Abonnementen Betalingen Zalen Zitplaatsen Soorten zitplaatsen Prijscategorieën Seizoenen Landen Talen Hoe communiceren met de database? .PHP script commando in SQL taal MySQL Array (indien SELECT) Kan binnen dezelfde server zijn of tussen twee servers! 7 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Wat is SQL? •  "Structured Query Language" –  Query = een vraag –  Taal om met de database te "spreken" •  Wat kan je met SQL? –  Bestaande data opvragen –  Nieuwe data toevoegen –  Bestaande data aanpassen –  Bestaande data verwijderen –  Nieuwe databases aanmaken –  Tabellen in een database aanmaken/wijzigen –  Zelfgemaakte funcKes (stored procedures) en views aanmaken –  Permissies voor tabellen, procedures en views beheren SQL: een taal met dialecten! •  In tegenstelling tot PHP is SQL geen gestandaardiseerde taal. •  Hoewel zeer gelijkaardig, zijn er significante verschillen tussen SQL taal van de verschillende merken databases –  Oracle RDBMS, MySQL, Microsoe SQL Server,… •  Wij leren werken met MySQL –  Een populaire, graKs relaKonele database –  Populairste database in combinaKe met PHP 8 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 SQL: basis syntaxis •  Individuele SQL commando's noemen we statements •  Statements zijn opgebouwd als een zin die meestal vrij verstaanbaar klinkt. Bijvoorbeeld: SELECT voornaam FROM werknemers WHERE id = 2; •  Elk statement eindigt met een semicolon ; •  Statements bestaan typisch uit –  Enkele kernwoorden, normaal in hoofdleCers –  Namen van relevante tabellen en kolommen –  Operatoren om te vergelijken –  FuncKes om complexere manipulaKes uit te voeren IntroducKe van de basistermen • 
• 
• 
• 
• 
• 
• 
SELECT: rij(en) selecteren INSERT INTO: rij(en) toevoegen UPDATE: rij(en) aanpassen DELETE: rij(en) verwijderen CREATE: tabel, index of database aanmaken ALTER: tabelstructuur wijzigen DROP: tabel, index of database verwijderen 9 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Data selecteren SELECT [kolom(men)] FROM [tabel(len)]; VariaKes (1) •  SELECT DISTINCT … à geen dubbels tonen •  WHERE X = "tekst" à kolom X moet gelijk zijn aan string "tekst" •  WHERE X = 9 à kolom X moet gelijk zijn aan getal 9 •  WHERE X = "tekst" AND Y = 9 à Verschillende WHERE clauses kunnen gecombineerd worden met AND en OR à haakjes en andere operatoren werken ook (vergelijkbaar met wat we in PHP zagen) 10 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 VariaKes (2) •  ORDER BY X ASC à oplopend sorteren volgens kolom X •  ORDER BY X DESC à aflopend sorteren volgens kolom X •  ORDER BY X DESC, Y ASC à sorteren volgens verschillende kolommen •  LIMIT X à slechts X aantal resultaten tonen •  LIMIT X, Y à Y aantal resultaten na X tonen (Let op volgorde: LIMIT op het einde, na ORDER) Tools •  MySQL Workbench hCp://www.mysql.com/products/workbench/ •  Sequel Pro (Mac OSX) hCp://www.sequelpro.com/ •  HeidiSQL (Windows) hCp://www.heidisql.com/download.php •  PHPMyAdmin (PHP à goed voor online) hCp://www.phpmyadmin.net/ 11 © Vincent De Munck
Opleiding Web Developer 2014-2015
25/11/14 Aan de slag! •  Voorbeeld database: Northwind –  Zie info in map Database-­‐01 •  Volgende les: data uit de database ophalen vanuit PHP 12 © Vincent De Munck
Herunterladen

Stand van zaken Tijd voor databases!