Skip to content

haerphi/workshopSQL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Workshop SQL

Pour bien commencer

Nous allons utiliser une base de données en PostgreSQL.

Pour plus de facilité, nous te recommandons d'utiliser http://www.elephantSQL.com

C'est un service de base de données en ligne super simple qui nécessite simplement de t'inscrire.

Sinon, mais c'est plus long et compliqué :

Utilise PostgreSQL avec Docker grâce à ce lien: https://docs.docker.com/engine/examples/postgresql_service/

Tu dois désormais être en possession de plusieurs informations pour continuer :

Informations de connexion

  • Nom de l'hôte / Hostname
  • Base de données / Database
  • Nom d'utilisateur / User
  • Mot de passe / Password

Gérer sa base de données.

Pour afficher le contenu et faire des requêtes, nous te proposons un super outil:

  • Gratuit
  • Multi OS (Mac, Linux et Windows)
  • Multi databases (parmi les plus populaires: MySQL, PostgreSQL, Oracle, SQL Server, SQLite...)

Qui te permettra de gérer toutes tes futures bases de données depuis une même interface.

C'est par ici : https://dbeaver.io/

Une fois installé et lancé, un assistant t'aidera à configurer la connexion vers ta base de données.

Ressources utiles concernant le languages

Et Maintenant, on parle Pokémons (Gotta store 'em all)

Le contenu à importer dans ta base de données se trouve

Avec DBeaver, tu peux importer directement le script et l'exécuter, ou copier-coller le texte dans un "Nouvel Editeur SQL"

Tu possèdes désormais une base de données contenant:

  • Une table contenant les Pokémons des deux premières générations
  • Une table contenant les types de Pokémons
  • Une table contenant les Régions (Kanto et Johto)
  • Une table contenant les relations entres les types et les pokemons

La liste des "énigmes" à résoudre (ou des requêtes si tu préfères rester sérieux).

Nous allons te donner une série d'instructions, en français, que tu dois convertir en SQL afin d'obtenir un résultat:

Un exemple pour commencer

Récupère la liste des noms des pokémons (Tips: La colonne s'intitule 'name')

Résultat:

Exemple de requête

Dans cette fenêtre, tu as donc la requête (en haut) et le résultat (en bas). Pour chaque énigme, tu devras obtenir le même genre de fenêtre.

Énigmes

  1. Récupère les id ainsi que les noms des pokémons dont le poids est supérieur à 2000.
Voir le résultat

id name
76 golem
95 onix
130 gyarados
131 lapras
143 snorlax
149 dragonite
208 steelix
226 mantine
248 tyranitar
249 lugia

  1. Récupère les id, les noms, ainsi que la taille des pokémons dont le poids est inférieur ou égal à 20 dans l'ordre croissant par taille.
Voir le résultat

id name height
50 diglett 2
177 natu 2
16 pidgey 3
21 spearow 3
172 pichu 3
174 igglybuff 3
175 togepi 3
191 sunkern 3
187 hoppip 4
109 koffing 6
188 skiploom 6
200 misdreavus 7
92 gastly 13
93 haunter 16

  1. Récupère les noms des 3 pokémons les plus lourds.
Voir le résultat

name
snorlax
steelix
golem

  1. Récupère tous les pokémons originaires de johto dont le nom termine par la lettre u.
Voir le résultat

name type
chinchou johto
pichu johto
natu johto
xatu johto
raikou johto

  1. Récupère les noms des pokemons avec leur types (Tips: On appelle ça une double jointure).
Voir le résultat

name type
bulbasaur poison
bulbasaur grass
ivysaur poison
ivysaur grass
venusaur poison
venusaur grass
charmander fire
charmeleon fire
charizard flying
charizard fire
... ...

  1. Affiche le nombre de pokémons dans chaque région.
Voir le résultat

Sum name
151 kanto
100 johto

  1. Quel expérience vais-je gagner si je bats un magneton, un tauros et un kabuto ?
Voir le résultat

Total
406

  1. Requête BONUS. Récupère le nombre de pokémons dont le(s) type(s) infligent 'double_damage_to' aux pokémons de type Eau (water). Attention, l'information se trouve dans un tableau PostgreSQL.... et il va falloir aggréger.
Voir le résultat

Total
41

Créons une table !

C'est bien beau tout ça, on a appris à faire toutes sortes de requêtes et à ramener toute sortes d'informations, mais on a pas vu comment on créait ou insérait de nouvelles données. C'est par ici :

Imagine une table qui te permettrait de stocker les pokémons que tu as attrapé.

De quelles informations as-tu besoin ? Quel sont les types des données que tu vas stocker ?

Tu trouveras quelques infos utiles ici

Rédige ensuite un nouveau script qui créera cette nouvelle table, tu pourras ensuite créer quelques "INSERT" afin de remplir un peu cette nouvelle table. Il n'y a pas "une" bonne réponse à cet exercice, on peut néanmoins montrer un exemple qui fonctionne :

Attention, Spoiler !
CREATE TABLE catched ( id SERIAL PRIMARY KEY, pokemon_id INT REFERENCES pokemons(id), catched_at TIMESTAMP N0T NULL DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP );

INSERT INTO catched (pokemon_id) VALUES (58), (25), (189);

Tu peux ensuite faire des requêtes de sélection pour ramener les pokémons capturés.

C'est la fin !

Ce Workshop vous à été présenté par Philippe Haerens et Lindsay Vannebenne dans le cadre de la formation BeCode, de la promotion Hamilton 2.12. N'hésitez pas a partager votre ressenti, les points positifs et négatifs, c'est important pour nous aussi.

Vous pourrez trouver les solutions ici

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages