HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
WERKGROEP 1 – OEFENINGEN Zorg ervoor dat je een database hebt aangevraagd op http://stap.iam.hva.nl Open daarna het volgende adres in je browser: http://stap.iam.hva.nl/phpmyadmin Log in met de gegevens die je bij het aanmaken van jouw database hebt ontvangen (deze staan in een email op jouw HvA emailadres) Als je goed ingelogd bent, kom je in phpMyAdmin. Dit is een handige tool om een MySQL database te maken en te beheren.
EEN DATABASE EN EEN TABEL MAKEN Het aanmaken van een database is al voor je gebeurd, dit gaat automagisch bij het aanvragen van de database via stap.iam.hva.nl Als je op de naam van jouw database klikt (stu_ldapLogin) kom je in een scherm waar je een tabel toe kunt voegen. Maak een tabel met de naam 'test' en zorg dat deze 4 velden krijgt. Hieronder staat het ontwerp van deze tabel. De bovenste rij geeft de naam van de tabel. In de volgende rijen staan de velden van de tabel. Bij elk veld staat -
de naam,
-
het datatype en eventuele lengte,
-
of het veld leeg mag blijven (null) of niet (not null) en of het de primaire sleutel van de tabel is en of de waarde automatisch door de database wordt opgehoogd (auto_increment)
Maak deze tabel nu. test
id
int
not null, primaire sleutel, autoincrement
vak
varchar(80) not null
beoordeling char(1)
null
periode
not null
int
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
1
HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
Bovenaan staan een aantal tabs. De belangrijkste tabs zijn: -
Bij de tab 'verkennen' kun je de inhoud van de database zien. Deze kun je nu nog niet aanklikken, want er staan nog geen gegevens in de database
-
Bij de tab 'structuur' staat het ontwerp van de database wat je net hebt gemaakt. Hier kan je dit eventueel op een later moment nog aanpassen
-
Bij de tab 'SQL', kun je een sql‐query intypen en uitvoeren. Dit gaan we straks nog doen.
-
Bij de tab 'invoegen', kun je gegevens handmatig invoeren. Over het algemeen zul je php‐code schrijven om gegevens in de database te zetten. Soms doe je dit echter handmatig.
-
De tab 'exporteer' is handig als je de hele tabel wilt overzetten op een andere computer.
RIJEN MET GEGEVENS INVOEGEN Klik op de tab 'Invoegen'. Je kan twee rijen tegelijk invoeren. Vul de volgende gegevens in, maar laat het veld voor 'id' leeg. vak: Game‐On beoordeling: G periode: 1 vak: Applicatieontwikkeling beoordeling: (leeg laten) periode: 3 Druk op start en controleer of er geen foutmelding wordt gegeven. Om de zojuist ingevoerde gegevens te zien, ga je naar de tab 'verkennen'. Je ziet dat 'id' automatisch een nummer heeft gekregen. Dit komt omdat je bij het ontwerp bij dit veld 'auto_increment' hebt gekozen. Als je geen 'auto_increment' bij dit veld hebt gezet, krijg je een foutmelding. Vanuit de tab 'verkennen' kun je rijen ook bewerken of verwijderen. Probeer dit eens uit.
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
2
HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
SQL Ga naar de tab 'SQL'. Bekijk onderstaande sql‐code en bedenk wat het doet.
CREATE TABLE `muziek` ( `id` int(11) NOT NULL auto_increment, `naam` varchar(80) NOT NULL, `artiest` varchar(80) NOT NULL, `album` varchar(80) NOT NULL, `duurInSec` int(11) NOT NULL, `genre` varchar(80) default NULL, `rating` int(11) default NULL, PRIMARY KEY
(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=296 ;
INSERT INTO `muziek` VALUES (1, 'Cold Water Music', 'AiM', 'Cold Water Music', 344, 'Ambient', 3); INSERT INTO `muziek` VALUES (30, 'Les Professionnels', 'Air', 'Premiers Symptomes', 272, 'Ambient', 3); INSERT INTO `muziek` VALUES (38, 'Bridge', 'Amon Tobin', 'Permutation', 355, 'Drum & Bass', 5); INSERT INTO `muziek` VALUES (78, 'Debris', 'Asian Dub Foundation', 'Facts And Fictions', 258, 'Drum & Bass / Dub', 3); INSERT INTO `muziek` VALUES (96, 'Frontier Psychiatrist', 'The Avalanches', 'Since I Left You', 288, 'Turntablism', 5); INSERT INTO `muziek` VALUES (101, 'Hi-Lo', 'Battles', 'EP C/B EP', 471, 'Electronica', 5); INSERT INTO `muziek` VALUES (105, 'Pow', 'Beastie Boys', 'Check Your Head', 133, 'HipHop', 5); INSERT INTO `muziek` VALUES (123, 'Munsun', 'beat pharmacie', 'Metropolis', 205, 'Jazz', 5); INSERT INTO `muziek` VALUES (129, 'Sissyneck', 'Beck', 'Odelay [Bonus Tracks]', 232, 'Indie', 5); INSERT INTO `muziek` VALUES (130, 'Astounded', 'Bran Van 3000', 'Discosis', 357, 'Electronica', 5);
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
3
HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
INSERT INTO `muziek` VALUES (155, 'Brand New Day', 'Dizzee Rascal', 'Boy in da Corner', 239, 'Electronica', 3); INSERT INTO `muziek` VALUES (158, 'Jorge Ben & Toquinho', 'DJ Marky', 'The Brazilian Job', 224, 'Drum & Bass', 5); INSERT INTO `muziek` VALUES (159, 'Prisoner (Nico Dub Version)', 'Dub War', 'Million Dollar Love (Disc 1)', 325, 'Rock', 3); INSERT INTO `muziek` VALUES (171, 'Push up', 'Freestylers', 'Raw as f**k', 279, 'Dance', 5); INSERT INTO `muziek` VALUES (172, '?Get Up, Punk! 0200 Hrs. (Joint Special Operations Task Force)', 'General Patton V.S. The X-Ecutioners', 'Joint Special Operations Task Force', 219, 'Electronica/Dance', 5); INSERT INTO `muziek` VALUES (177, 'Another Mother', 'Herbaliser', 'Blow Your Headphones', 407, 'Trip-Hop', 3); INSERT INTO `muziek` VALUES (239, 'Aqueous transmission', 'Incubus', 'Morning view', 466, 'Electronica', 3); INSERT INTO `muziek` VALUES (243, 'Track 5', 'JunkieXL', 'A broadcast from the computer hell cabin -3pm', 279, 'Dance', 3); INSERT INTO `muziek` VALUES (244, 'Basin street blues', 'Kid Koala', 'Some of my best friends are djs', 287, 'Acid Jazz', 3); INSERT INTO `muziek` VALUES (252, 'Brain', 'N*E*R*D', 'In Search Of...', 223, 'Pop', 3); INSERT INTO `muziek` VALUES (255, 'Happy Birthday Jubilee', 'Perry Farrell', 'Song Yet To Be Sung', 279, 'Electronica', 5); INSERT INTO `muziek` VALUES (256, 'Mysterons', 'Portishead', 'Dummy', 305, 'Electronica', 5); INSERT INTO `muziek` VALUES (274, 'The Sleepless', 'Red Snapper', 'Making Bones', 288, 'Experimental', 5); INSERT INTO `muziek` VALUES (295, 'I have seen', 'Zero 7', 'Simple Things', 306, 'TripHop', 3);
Kopieer de code naar het tekstvak en klik op 'start'. Bekijk de resulterende tabel. De 4 meest gebruikte queries zijn: 1.
SELECT: om rijen uit de database op te halen
2.
INSERT: om rijen aan de database toe te voegen
3.
UPDATE: om rijen in de database te wijzigen
4.
DELETE: om rijen uit de database te verwijderen
Hierboven heb je INSERT gebruikt en CREATE TABLE. Nu gaan we oefenen met SELECT. Komende weken gaan we oefenen met INSERT, UPDATE en DELETE.
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
4
HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
SQL SELECT Bij deze oefening gebruik je je boek over SQL en/of http://www.w3schools.com/sql/default.asp Alle oefeningen voer je uit door de query in te typen op de tab 'SQL' -
Type de volgende query in en bekijk het resultaat: SELECT artiest FROM muziek
-
Maak zelf de volgende query: selecteer album uit de tabel muziek
-
De volgende query selecteert alle velden en alle rijen uit de tabel muziek. Type / kopieer de volgende query en bekijk het resultaat: SELECT * FROM muziek
-
Als je exact wilt aangeven welke velden je wilt zien gebruik je een komma om de velden te scheiden. Probeer eens uit: SELECT naam,duurInSec FROM muziek
-
Maak zelf een query om id en genre te laten zien
WHERE -
Je wilt vaak niet alle rijen laten zien. Hiervoor moet je een WHERE‐clausule toevoegen. Bekijk het resultaat van de volgende query: SELECT * FROM muziek WHERE id=244
-
Het veld id is van type int, ofwel een geheel getal. Als je met een string werkt, moet je enkele aanhalingstekens gebruiken. Probeer dit eens uit: SELECT naam, album, artiest, genre FROM muziek WHERE genre='Electronica'
-
Maak zelf een query die alle rijen selecteert met rating 5
-
Maak zelf een query die alle rijen selecteert met artiest 'Incubus'
-
Als je meerdere condities hebt kun je AND en OR gebruiken. Zie volgend voorbeelden: SELECT * FROM muziek WHERE genre='Electronica' AND rating=3 SELECT * FROM muziek WHERE genre='Electronica' OR rating=3
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
5
HvA – Instituut voor Interactieve Media
Applicatieontwikkeling
ORDER BY -
Om gegevens te sorteren gebruik je ORDER BY eventueel in combinatie met ASC (oplopend) of DESC (aflopend)
-
Maak een query die alle rijen en alle velden ophaalt gesorteerd op genre
-
Maak een query die alle rijen en alle velden ophaalt gesorteerd op duurInSec aflopend (dus de langste bovenaan)
-
Je kunt een WHERE en een ORDER BY tegelijk opnemen. Zie het volgende voorbeeld: SELECT * FROM muziek WHERE genre='Electronica' ORDER BY rating DESC
-
Maak een query die alle velden uit muziek toont waarbij de rating 5 is gesorteerd op genre
LIMIT -
Soms wil je het aantal rijen dat terug wordt gegeven beperken tot een maximum. Dit doe je met LIMIT.
-
Voer de volgende query uit: SELECT * FROM muziek LIMIT 7
-
LIMIT komt altijd achteraan een query te staan. Bekijk de volgende query waarin alles zit wat tot nu toe behandeld is: SELECT naam,artiest,genre,rating FROM muziek WHERE genre='Electronica' ORDER BY rating DESC LIMIT 4
LIKE -
als je wilt zoeken binnen de gegevens van een veld, gebruik je LIKE. Zie volgend voorbeeld en bekijk wat het doet SELECT * FROM muziek WHERE rating=3 AND artiest LIKE 'ai%'
-
Het % teken geeft aan dat hier vanalles mag staan. De query zoekt naar rijen met rating 3 en waarbij de artiestennaam start met 'Ai'. Als je wilt zoeken naar de string 'The' binnen de velden naam, artiest album, gebruik je twee % tekens. SELECT * FROM muziek WHERE naam LIKE '%the%' OR artiest LIKE '%the%' OR album LIKE '%the%'
-
Maak een query die zoekt naar de string '%bi%' binnen de velden genre, naam en artiest
S.E. Rouwhorst <
[email protected]> J.P. Sturkenboom <
[email protected]>
6