De Wereld-Database
In deze les gaan we een database met drie tabellen gebruiken. De database bevat een tabel city (plaats), een tabel country (land) en een tabel countrylanguage (taal van het land).
We downloaden de file world.zip en unzippen het bestand. Je ziet een nieuw bestand met de naam world.sql. Onthoud waar het staat.
We maken een database zoals we dat eerder hebben gedaan. We starten XAMPP Apache en MySQL en gaan naar 127.0.0.1/phpmyadmin. We maken daar een nieuwe database en noemen die world (wereld). Daarna importeren we het scirpt world.sql. Na een paar seconden is de database aangemaakt.
Laten we met controleren of de database goed is aangemaakt.
Ga naar het tabje SQL in phpmyadmin en voer de volgende queries uit. De getallen tussen haakjes zijn de getallen die je zou moeten zien als je de query uitvoerd.
SELECT count(*) FROM city (4079)
SELECT count(*) FROM country (239)
SELECT count(*) FROM countrylanguage (984)
Als we de city tabel en country tabel bekijken dan zien we het volgende:
TABEL City | ||
Kolomnaam | Beschrijving | Voorbeeld |
ID | Primary Key (nummer) | 19 |
Name | Naam van de stad | Amsterdam |
CountryCode | Foreign Key naar Country | NLD |
District | Provincie of Regio | Noord-Holland |
Population | Bevolkingsgrootte | 731200 |
TABEL Country | ||
Kolomnaam | Beschrijving | Voorbeeld |
Code | Primary Key (Country Code) | NLD |
Name | Naam van het land | Netherlands |
Continent | Continent | Europe |
Region | Regio | Western Europe |
SurfaceArea | Oppervlakte (in KM2) | 41526.00 |
IndepYear | Jaar van onafhankelijkheid | 1581 |
Population | Bevolkingsgrootte, inwoneraantal | 15864000 |
LIfeExpectancy | Levensverwachting | 78.3 |
GNP | Bruto Nationaal Product | 371362.00 |
GNPOld | Oud Bruto Nationaal Product | 360478.00 |
LocalName | Lokale naam | Nederland |
GovernmentForm | Regeringsvorm | Constitutional Monarchy |
HeadOfState | 'Baas' van het land | Alexander |
Capital | Foreign Key naar City | 5 |
Code2 | Officiële landsafkorting (bijv NL) | 2 |
Opgaven
Opgave 1
Kijk of je Nederland kunt vinden en druk alle kolommen af uit de tabel Country. Zoek daarvoor naar alle rijen waarvan naam begint met 'Net' (van Netherlands).
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 2
Zoek nu alle landen die meer dan 100000000 (100 miljoen) inwoners hebben. Dat is een 1 met 9 nullen. Hoeveel landen hebben meer dan 100 miljoen inwoners?
Zet de query die je hebt gebruikt op je antwoordenblad.
Opgave 3
Hoeveel inwoners heeft het land Belgium?
Zet de query die je hebt gebruikt op je antwoordenblad.
Opgave 4
Hoeveel inwoners heeft het land Australia (Australë)? Het inwoneraantal staat in de kolom Population in de tabel country.
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 5
We gaan de twee tabellen kopellen met de join. En we drukken alle plaatsen (city) af die in Nederland (Netherland) liggen en die in de database staan. Laten we eerste de join gaan maken. Maak de onderstaande query af en koppel de twee tabellen met de juiste keys aan elkaar.
SELECT *
FROM city
JOIN country
on ... = ...
WHERE country.Name='Netherlands'
Als het goed is zie je nu alle steden in Nederland die in de database staan. Verander de query nu zo dat je niet alle steden ziet maar dat je gewoon een aantal krijgt.
---
Opgave 6
Hoeveel steden uit Belgium (België) staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 7
Hoeveel steden uit France (Frankrijk) staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 8
Hoeveel steden uit Morocco (Marocco) staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 9
Hoeveel landen van het Continent Europe (Europa), staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 10
Hoeveel steden die onderdeel uitmaken van het Continent Europe (Europa), staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 11
Hoeveel steden die onderdeel uitmaken van het Continent Africa (Afrika), staan er in de database?
Zet de query die je gebruikt hebt op je antwoordenblad.
Opgave 12
We gaan nu twee tabellen joinen (samenvoegen). We willen namelijk opzoeken wat de hoofdstad is van Nigeria.
Dat doen we door uit de tabel city de naam van de city te halen. Dat zie je in de eerste twee regels van de query. Dan gaan we de tabel samenvoegen join-en met de country tabel. En als laatste stap selecteren we alleen het juiste land in het gedeelte achter de WHERE.
De query ziet er dus zo uit:
SELECT city.Name
FROM city
join country
on ... = ...
WHERE country.Name = 'Nigeria'
Maak de query af door op de plaats van de ... de juiste primary key en foreign key te zetten.
Zet de query die je hebt gebruikt op je antwoordenblad.
---
Opgave 13
In de World database staat nog een derde tabel en die heet countrylanguage. In deze tabel staat de CountryCode. Dit is een foreign key naar de Code kolom in de tabel country.
Maak nu een de voglende query af door op de plaats van de puntjes de juiste tabelnaam of kolomnamen in te vullen:
SELECT country.Continent, country.Name, countrylanguage.Language, countrylanguage.Percentage
FROM countrylanguage
JOIN ........
ON ........ = ........
WHERE countrylanguage.Language='Dutch'
ORDER BY countrylanguage.Percentage desc
Kijk goed naar de uitkomst van de query. Als het goed is kun je zien hoeveel procent van de inwoners van België Nederlands (Dutch) praten. Zorg dat alles regels van de query begrijpt voordat je verder gaat naar de voglende opgave.
Zet de werkende query op je antwoordenblad.
Opgave 14
Voor de volgende vraag kun je de query van opgave 12 als basis gebruiken.
Bepaal welke talen er in België worden gesproken en hoeveel procent van de inwoners elke taal spreekt.
SELECT country.Continent, country.Name, countrylanguage.Language, countrylanguage.Percentage, countrylanguage.IsOfficial
FROM countrylanguage
FROM ........
JOIN ........
ON ........ = ........
WHERE ........ = 'Belgium'
ORDER BY countrylanguage.Percentage desc
In de laatste kolom 'IsOfficial' kun je zien of het een officiele taal van het land is. (T=true en F=false).
Zet de werkende query op je antwoordenblad.
Opgave 15
In de vorige query kon je in de laatste kolom 'IsOfficial' zien of het een officiele taal van het land is. (T=true en F=false). Verander nu de query van Opgave 13 zodat je alleen de officiële talen te zien krijgt.
Zet de werkende query op je antwoordenblad.
Opgave 16
Hoveel oficiële talen heeft 'South Africa' ?
Zet de query waarmee je dit antwoord hebt bepaald op je antwoordenblad.
Opgave 17
Hoeveel niet-oficiële talen heeft 'India'?
Zet de query waarmee je dit antwoord hebt bepaald op je antwoordenblad.
Opgave 18
Hoeveel talen (officieel en niet-officieel) worden er op het continent 'Europe' gesproken?
Zet de query waarmee je dit antwoord hebt bepaald op je antwoordenblad.
Opgave 19
Hoeveel officiële talen worden er op het continent 'Europe' gesproken?
Zet de query waarmee je dit antwoord hebt bepaald op je antwoordenblad.
--