1) Affichez toutes les villes
Select name from city;
-- 4079
2) Affichez toutes les villes françaises
Select name from city where countryCode='FRA';
-- 4079
3) Affichez les pays dont la date d'indépendance est inférieur à l'an 1900 et n'est pas null
select * from country where IndepYear < 1900 AND IndepYear IS NOT NULL;
-- 43
4) Affichez le nombre de pays dans le monde
select count(*) from country;
-- 239
5) Affichez le pays avec la plus petite superficie
SELECT * FROM country WHERE SurfaceArea = (SELECT MIN(SurfaceArea) FROM country);
SELECT Name from world.country ORDER BY SurfaceArea ASC LIMIT 1;
-- 0.4 - vatican
6) Affichez le nombre moyen d'habitants pour toute ville confondue
SELECT AVG(Population) FROM city;
7) Affichez le nom et la densité des pays (population/surface) rangées par ordre décroissant de densité
SELECT Name, (population/surfaceArea) AS density FROM country ORDER BY density DESC;
8) Insérer une nouvelle ville avec :
- ID : 4080
- Name : Oompa Loompa
- CountryCode : BRA
- District : Amazonas
- Population : 78000
INSERT INTO city(Name, CountryCode, District, Population)
VALUES(NULL, "Oompa Loompa", "BRA", "Amazonas", 78000)
9) Supprimer la ville de Campinas ainsi que toutes les données liées
DELETE FROM city WHERE name = 'Campinas'
10) Affichez toute les villes dont la langue officiel est l'anglais. Sur ces résultats devront apparaître les colonnes:
- Name (en tant que nom de la ville)
- CountryCode (en tant que code pays)
- CountryName (en tant que nom de ce pays)
- Population
- Percentage (en tant que le pourcentage de personne parlant ce language)
SELECT city.NAME, country.Name as 'CountryName', country.Code, countrylanguage.Percentage, city.Population FROM country, countrylanguage, city WHERE country.Code = countrylanguage.CountryCode AND city.CountryCode = country.Code AND countrylanguage.isOfficial = "T" And countrylanguage.Language = 'English'
ou encore
SELECT city.NAME, country.Name as 'CountryName', country.Code, countrylanguage.Percentage, city.Population
FROM country
INNER JOIN countrylanguage on (country.Code = countrylanguage.CountryCode)
INNER JOIN city ON (city.CountryCode = country.Code)
WHERE countrylanguage.isOfficial = "T"
And countrylanguage.Language = 'English'
11) Affichez la différence entre la somme des populations listée dans les villes par rapport à la population annoncée dans le pays
Select Country.code, Country.population as 'Country Pop', Cities.population as 'City Pop', Country.population - Cities.population as 'Difference Pop'
FROM
(SELECT code, sum(city.population) as population FROM country, city where city.countryCode = country.code group by code) Cities
RIGHT JOIN Country on ( Country.code = Cities.code)
-- 239 enregistrements
ou
SELECT (country.population - sum(city.population)) as difference FROM city inner join country on country.code = city.countryCode group by countryCode;