
L'objectif de cette activité est de découvrir rapidement l'utilisation du logiciel UwAmp afin de créer ou d'accéder à une base de données et de la modifier en écrivant des requêtes SQL.
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
Le logiciel UwAmp |
UwAmp est un logiciel permettant la création rapide d'un serveur web ou d'un serveur de base de données sous Windows.
![]()
Icône du logiciel UwAmp
Pour lancer le serveur de base de données il faut cliquer sur le bouton SQLite au lancement de UwAmp :

Le SGBD (Système de Gestion de Bases de Données) s'ouvre et permet de créer, modifier ou interroger une base de données :
Création manuelle d'une base de données |
Nous allons créer une nouvelle base de données contenant des informations sur des personnes.
La base de données s'appellera information.db et contient une seule table nommée personne.
La table personne contiendra 18 enregistrements sur les 18 personnes suivantes en précisant leur nom, leur prénom et leur age :
nom | prenom | age |
DUPONT | Virginie | 18 |
MARTIN | Pierre | 17 |
BERNARD | Caroline | 25 |
THOMAS | Roland | 31 |
PETIT | Oscar | 16 |
ROBERT | Paul | 11 |
RICHARD | Manon | 24 |
DUBOIS | Maxence | 22 |
LOPEZ | Jean | 43 |
DURAND | Clément | 36 |
HUBERT | Stella | 29 |
DUPUIS | Simon | 33 |
MOULIN | Fanny | 19 |
BOUCHER | Antoine | 28 |
POIRIER | Florent | 26 |
PARIS | Josiane | 15 |
FLEURY | Gaspard | 41 |
FONTAINE | Xavier | 21 |
Pour créer une nouvelle base de données il faut cliquer sur New Database dans le menu File de UwAmp puis indiquer le nom d'un nouveau fichier. On peut ensuite créer les tables et ajouter des enregistrements en lançant des requêtes SQL dans l'onglet Execute SQL.
Créez la nouvelle base de données en cliquant sur New Database dans le menu File d'UwAmp, et enregistrez-la sous le nom information.db dans votre répertoire de travail.

Remarque : cliquez sur le bouton Cancel dans la boîte de dialogue Create Table afin de ne pas créer ici une nouvelle table (la table sera créée manuellement avec les commande SQL)

Nous allons créer une table personne contenant à 3 champs :
Pour cela il faut exécuter la ligne de commande SQL suivante dans l'onglet Execute SQL :
CREATE TABLE personne (nom char(20),prenom char(20),age int);

Création d'une table personne contenant 3 attributs
L'onglet Database Structure permet de voir la structure de la base de données (nom et type des attributs de chacune des tables s'il y a plusieurs tables). On y retrouve les 3 champs de la table personne ainsi que leur type :

L'onglet Browse Data permet de consulter les données entrées dans chacune des tables :

Pour l'instant la table personne est vide
Ajoutons un nouvel enregistrement dans la table personne.
Pour cela il faut exécuter la ligne de commande SQL suivante dans l'onglet Execute SQL :
INSERT INTO personne VALUES ('DUPONT','Virginie',18);

Ajout d'un nouvel enregistrement dans la table personne
La table personne contient maintenant 1 enregistrement. Pour voir le contenu de la table il faut retourner dans l'onglet Browse Data:

La table personne contient maintenant 1 enregistrement
Ajoutez les 3 enregistrements suivants en exécutant manuellement une par une les commandes INSERT INTO suivantes dans l'onglet Execute SQL :
INSERT INTO personne VALUES ('MARTIN','Pierre',17);
INSERT INTO personne VALUES ('BERNARD','Caroline',25);
INSERT INTO personne VALUES ('THOMAS','Roland',31);
La table personne contient alors 4 enregistrements :

La table personne contient maintenant 4 enregistrements
Remarque : l'onglet Execute SQL d'UwAmp permet d'exécuter une seule ligne SQL à la fois.
Mais alors comment ajouter plusieurs enregistrements à la fois dans la table ?
Voici les 14 derniers enregistrements à ajouter dans la table personne :
INSERT INTO personne VALUES ('PETIT','Oscar',16);
INSERT INTO personne VALUES ('ROBERT','Paul',11);
INSERT INTO personne VALUES ('RICHARD','Manon',24);
INSERT INTO personne VALUES ('DUBOIS','Maxence',22);
INSERT INTO personne VALUES ('LOPEZ','Jean',43);
INSERT INTO personne VALUES ('DURAND','Clément',36);
INSERT INTO personne VALUES ('HUBERT','Stella',29);
INSERT INTO personne VALUES ('DUPUIS','Simon',33);
INSERT INTO personne VALUES ('MOULIN','Fanny',19);
INSERT INTO personne VALUES ('BOUCHER','Antoine',28);
INSERT INTO personne VALUES ('POIRIER','Florent',26);
INSERT INTO personne VALUES ('PARIS','Josiane',15);
INSERT INTO personne VALUES ('FLEURY','Gaspard',41);
INSERT INTO personne VALUES ('FONTAINE','Xavier',21);
Pour insérer plusieurs enregistrements d'un coup il faut :
1 - enregistrer toutes les lignes SQL commençant par INSERT INTO dans un fichier texte portant l'extension .SQL (chaque ligne finissant par un point-virgule)
2 - cliquer dans le menu File + Import + DataBase from SQL file et choisir le fichier SQL contenant les lignes à exécuter
3 - répondre Non à la question "Voulez-vous créer une nouvelle base de données" afin d'insérer les nouveaux enregistrements dans la base de données courante
Importez les 14 enregistrements manquant afin que votre table personne soit complète et contienne les 18 enregistrements :

Voici ces 18 enregistrements au format CSV :
"nom","prenom","age"
"DUPONT","Virginie","18"
"MARTIN","Pierre","17"
"BERNARD","Caroline","25"
"THOMAS","Roland","31"
"PETIT","Oscar","16"
"ROBERT","Paul","11"
"RICHARD","Manon","24"
"DUBOIS","Maxence","22"
"LOPEZ","Jean","43"
"DURAND","Clément","36"
"HUBERT","Stella","29"
"DUPUIS","Simon","33"
"MOULIN","Fanny","19"
"BOUCHER","Antoine","28"
"POIRIER","Florent","26"
"PARIS","Josiane","15"
"FLEURY","Gaspard","41"
"FONTAINE","Xavier","21"
Pour insérer plusieurs enregistrements à partir d'un fichier CSV il faut :
1 - enregistrer tous les enregistrement dans un fichier texte portant l'extension .CSV (les champs étant séparés par une virgule)
2 - la première ligne du fichier CSV contient le nom des colonnes dans la table
3 - cliquer dans le menu File + Import + Table from CSV file et choisir le fichier CSV contenant les enregistrements
4 - préciser le nom de la table à créer (exemple : personne). ATTENTION : cette table ne doit pas encore exister
5 - cocher la case "Extract field names from first line" afin d'extraire les noms des colonnes à partir de la première ligne du fichier CSV
Remarque :
Conclusion : il vaut mieux préférer le format SQL au format CSV pour l'importation des données dans une table
Et voici le résultat de l'exportation de la base de données complète au format SQL :
BEGIN TRANSACTION;
CREATE TABLE personne (nom char(20),prenom char(20),age int);
INSERT INTO personne VALUES('DUPONT','Virginie',18);
INSERT INTO personne VALUES('MARTIN','Pierre',17);
INSERT INTO personne VALUES('BERNARD','Caroline',25);
INSERT INTO personne VALUES('THOMAS','Roland',31);
INSERT INTO personne VALUES('PETIT','Oscar',16);
INSERT INTO personne VALUES('ROBERT','Paul',11);
INSERT INTO personne VALUES('RICHARD','Manon',24);
INSERT INTO personne VALUES('DUBOIS','Maxence',22);
INSERT INTO personne VALUES('LOPEZ','Jean',43);
INSERT INTO personne VALUES('DURAND','Clément',36);
INSERT INTO personne VALUES('HUBERT','Stella',29);
INSERT INTO personne VALUES('DUPUIS','Simon',33);
INSERT INTO personne VALUES('MOULIN','Fanny',19);
INSERT INTO personne VALUES('BOUCHER','Antoine',28);
INSERT INTO personne VALUES('POIRIER','Florent',26);
INSERT INTO personne VALUES('PARIS','Josiane',15);
INSERT INTO personne VALUES('FLEURY','Gaspard',41);
INSERT INTO personne VALUES('FONTAINE','Xavier',21);
COMMIT;
Voici le fichier SQL complet permettant de créer et de remplir la table personne en l'important dans UwAmp :
Travail à faire :
1 - ajoutez les 6 personnes suivantes à la table personne qui doit alors contenir 24 enregistrements :
nom |
prenom |
age |
DUPIN |
Melchior |
27 |
DOUCET |
Rose |
39 |
DIDIER |
Gaspard |
17 |
DUVAL |
Violette |
42 |
DENIS |
Marguerite |
19 |
DAVID |
Balthazar |
51 |
2 - affichez la totalité de la table personne
3 - affichez le nombre d'enregistrement présents dans la table personne
4 - affichez seulement les personnes ayant plus de 20 ans
5 - afficher seulement les personnes dont le nom de famille commence par la lettre D
Voici les nouvelles commandes SQL à noter et à connaître désormais :
Modification des données |
Une fois que la base de données est créée et qu'elle contient des données il est possible de les modifier.
Travail à faire :
Testez les commandes SQL suivante sur votre table personne contenant les 24 enregistrements :
Modification d'un enregistrement :
UPDATE personne SET age=26 WHERE (nom='BERNARD')
Suppression d'un enregistrement précis :
DELETE FROM personne WHERE (nom='DUPUIS' AND prenom='Simon' AND age=33)
Suppression d'un ou plusieurs enregistrements :
DELETE FROM personne WHERE (age<18);
ATTENTION : si la condition logique passée en paramètre à WHERE concerne plusieurs lignes de la table, alors elles seront toutes détruites définitivement !
Problème des doublons : ajouter à la table personne un nouvel enregistrement identique à la dernière ligne. La table contient alors un doublon (2 lignes identiques mais correspondant à 2 personnes différentes qui ont le même nom, le même prénom et le même age). Peut-on supprimer une seule des 2 lignes identiques ? La notion de clé primaire permettra de solutionner ce problème.
Notre table personne contient pour l'instant seulement 3 champs : nom, prenom et age.
Nous voulons ajouter pour chaque nouvelle personne un numéro de téléphone. Pour cela il faut modifier la structure de la table en lui ajoutant un 4ème champ qui sera nommé telephone.
Pour ajouter un nouveau champ à la table il faut utiliser la commande SQL ALTER TABLE :
ALTER TABLE personne ADD telephone char(10)
Ajout de nouveaux enregistrements avec le numéro de téléphone dans le 4ème champ :
INSERT INTO personne VALUES('ROUSSEAU','Valérie',35,'0687215465');
INSERT INTO personne VALUES('LUCIEN','Stéphane',44,'0619735582');
Problème : les anciens enregistrements ne possèdent pas de numéro de téléphone. Leur champ "telephone" est NULL (c'est à dire vide).
Affichage de tous les enregistrements n'ayant pas de numéro de téléphone (champ telephone vide, donc NULL) :
SELECT * FROM personne WHERE telephone IS NULL
Affichage de tous les enregistrements possédant un numéro de téléphone (champ telephone renseigné, donc NOT NULL) :
SELECT * FROM personne WHERE telephone IS NOT NULL
Remplissage de tous les champs telephone qui sont NULL :
UPDATE personne SET telephone='06xxxxxxxx' WHERE ( telephone IS NULL)
Modification de tous les champs telephone qui valent '06xxxxxxxx' :
UPDATE personne SET telephone='non renseigné' WHERE ( telephone='06xxxxxxxx')
Remarque : avec SQLite, la commande ALTER TABLE permet de rajouter une nouvelle colonne (un nouveau champ), mais ne permet :
A retenir : les noms et les types des colonne sont définitifs dès la création de la table avec CREATE TABLE.
Voici les nouvelles commandes SQL à noter et à connaître désormais :
Jointure entre deux tables |
Les jointures en SQL permettent d'associer plusieurs tables dans une même requête. Cela permet d'exploiter la puissance des bases de données relationnelles.
Il existe 3 types de jointures :
Créons une nouvelle base de données contenant 2 tables (vous l'enregistrerez sous le nom jointure.db) :
Voici le contenu en clair de ces 2 tables :
Table personne :
nom |
prenom |
code_ville |
DUPONT |
Virginie |
3 |
MARTIN |
Pierre |
2 |
BERNARD |
Caroline |
2 |
THOMAS |
Roland |
1 |
PETIT |
Oscar |
4 |
ROBERT |
Paul |
3 |
RICHARD |
Manon |
5 |
DUBOIS |
Maxence |
4 |
LOPEZ |
Jean |
5 |
DURAND |
Clément |
1 |
Table ville :
code_ville |
ville |
1 |
Toulouse |
2 |
Strasbourg |
3 |
Lyon |
4 |
Bordeaux |
5 |
Marseille |
Voici le code SQL complet permettant d'importer directement la totalité de cette base de données jointure.db dans UwAmp (création des 2 tables et insertions des enregistrements).
BEGIN TRANSACTION;
CREATE TABLE personne (nom char(20),prenom char(20),code_ville int);
INSERT INTO personne VALUES('DUPONT','Virginie',3);
INSERT INTO personne VALUES('MARTIN','Pierre',2);
INSERT INTO personne VALUES('BERNARD','Caroline',2);
INSERT INTO personne VALUES('THOMAS','Roland',1);
INSERT INTO personne VALUES('PETIT','Oscar',4);
INSERT INTO personne VALUES('ROBERT','Paul',3);
INSERT INTO personne VALUES('RICHARD','Manon',5);
INSERT INTO personne VALUES('DUBOIS','Maxence',4);
INSERT INTO personne VALUES('LOPEZ','Jean',5);
INSERT INTO personne VALUES('DURAND','Clément',1);
CREATE TABLE ville (code_ville int,ville char(20));
INSERT INTO ville VALUES(1,'Toulouse');
INSERT INTO ville VALUES(2,'Strasbourg');
INSERT INTO ville VALUES(3,'Lyon');
INSERT INTO ville VALUES(4,'Bordeaux');
INSERT INTO ville VALUES(5,'Marseille');
COMMIT;
Travail à faire :
Importez la totalité de cette nouvelle base de données dans UwAmp et enregistrez-la dans un fichier nommé jointure.db.
Testez ensuite dans UwAmp les différentes requêtes suivantes.
Affichage de toutes les lignes de la table personne :
SELECT * FROM personne
Affichage de toutes les lignes de la table ville :
SELECT * FROM ville
Jointure naturelle : pour chaque personne on obtient le nom de la ville en plus du code de la ville
SELECT * FROM personne NATURAL JOIN ville;
Jointure naturelle "inversée" (en inversant le nom des tables) :
SELECT * FROM ville NATURAL JOIN personne;
On obtient alors dans l'ordre :
Jointure interne en utilisant le champ code_ville : on obtient le même résultat qu'avec la jointure naturelle
SELECT * FROM personne INNER JOIN ville USING (code_ville);
Jointure externe gauche en utilisant le champ code_ville : on obtient le même résultat qu'avec la jointure naturelle
SELECT * FROM personne LEFT OUTER JOIN ville USING (code_ville);
Jointure externe droite : on inverse le nom des tables dans la jointure externe gauche, et obtient le même résultat qu'avec la jointure naturelle "inversée"
SELECT * FROM ville LEFT OUTER JOIN personne USING (code_ville);
Pour l'instant, tous les codes de ville (entier de 1 à 5) présent dans la table personne existaient dans la table ville. Mais que se passe-t-il si un code de ville dans la table personne n'existe pas dans la table ville ?
Pour cela, commençons par ajouter 2 enregistrements à la table personne, utilisant des code de ville n'existant pas dans la table ville :
INSERT INTO personne VALUES('ROGER','Alexandre',6);
INSERT INTO personne VALUES('VIDAL','Sandrine',7);
Pour ces 2 nouveaux enregistrements il n'y a pas de correspondance avec la table ville (les codes de ville 6 et 7 n'existant pas dans la table ville).
QUESTION : Comment réagit alors la jointure naturelle ?
SELECT * FROM personne NATURAL JOIN ville;
RÉPONSE : On constate que la jointure naturelle n'affiche pas les lignes sans correspondance (ROGER Alexandre et VIDAL Sandrine sont absents du résultat de la jointure).
QUESTION : Comment réagit la jointure interne lorsque certaines ignes n'ont pas de correspondance ?
SELECT * FROM personne INNER JOIN ville USING (code_ville);
RÉPONSE : On obtient le même résultat qu'avec la jointure naturelle (seules les lignes avec correspondance sont affichées)
QUESTION : Comment réagit la jointure externe gauche lorsque certaines lignes n'ont pas de correspondance ?
SELECT * FROM personne LEFT OUTER JOIN ville USING (code_ville);
RÉPONSE : cette fois les lignes sans correspondance sont affichées (avec un champ vide dans la nouvelle colonne pour les lignes sans correspondance)
Remarque : la seule jointure externe implémentée dans UwAmp est la jointure externe GAUCHE :
SELECT * FROM table1 LEFT OUTER JOIN table2 USING (nom)
Les jointures externes droite et complète ne sont pas implémentées (indiqué par le message d'erreur "RIGHT and FULL OUTER JOINs are not currently supported")
Pour réaliser une jointure externe droite il suffit d'inverser l'ordre des tables dans la jointure externe gauche :
SELECT * FROM table2 LEFT OUTER JOIN table1 USING (nom)
Si on utilise le mot clé JOIN dans une requête SQL sans préciser le type de jointure à faire (NATURAL, INNER ou OUTER) quel type de jointure est alors réalisée ? Testez ce cas et retenez la réponse :
SELECT * FROM personne JOIN ville
Que se passe-t-il si on réalise une jointure sur deux tables n'ayant aucun attribut commun ? Testez ce cas et retenez la réponse.
Que se passe-t-il si on réalise une jointure sur deux tables ayant plusieurs attributs communs ? Testez ce cas et retenez la réponse.
Comment réaliser une jointure externe complète en utilisant l'UNION et sachant que FULL OUTER JOIN ne fonctionne pas ?
Remarque complémentaire concernant la différence entre une jointure externe complète et une union :
Les jointures (JOIN) s'appuient sur des clés pour établir des relations, ce qui les rend essentielles pour les bases de données normalisées où les données sont réparties dans plusieurs tables. En revanche, l'opérateur UNION exige que les requêtes comportent le même nombre de colonnes, avec des types de données compatibles, et supprime généralement les lignes dupliquées, sauf si l'opérateur UNION ALL est utilisé.
Clé primaire et clé étrangère |
Il existe deux types de clés :
Les différentes liaisons clé primaire/clé étrangère confère à la base de données une structure relationnelle.
Par définition une clé primaire est unique dans la table. La clé primaire garantit que chaque enregistrement d'une table est différent des autres : il est alors impossible qu'il y ait des doublons dans une table.
Dans la base de données information.db nous allons créer une nouvelle table nommée eleves et contenant le nom et le prénom des élèves inscrits dans un lycée. Cette nouvelle table contiendra 3 champs :
Le champs identifiant est obligatoire (il ne doit pas ête NULL) et il sera de type INT (nombres entiers commençant à 1).
Voici le contenu de cette table eleves :
Table eleves :
identifiant |
nom |
prenom |
1 |
DUPONT |
Virginie |
2 |
MARTIN |
Pierre |
3 |
BERNARD |
Caroline |
4 |
THOMAS |
Roland |
5 |
PETIT |
Oscar |
6 |
ROBERT |
Paul |
7 |
RICHARD |
Manon |
8 |
DUBOIS |
Maxence |
9 |
LOPEZ |
Jean |
10 |
DURAND |
Clément |
Travail à faire :
Dans la base de données information.db créez cette nouvelle table eleves en précisant que le champs identifiant est une clé primaire :
CREATE TABLE eleves (identifiant INT NOT NULL PRIMARY KEY, nom char(20),prenom char(20));
Ajoutez chacun des 10 enregistrements ci-dessus dans la table eleves :
INSERT INTO eleves VALUES(1,'DUPONT','Virginie');
INSERT INTO eleves VALUES(2,'MARTIN','Pierre');
etc.
Affichez la table eleves complète et vérifiez qu'elle contient bien 10 enregistrements.
Que se passes-t-il si on ajoute un enregistrement contenant une clé primaire qui existe déjà dans la table ? Testez ce cas et retenez la réponse. Exemple :
INSERT INTO eleves VALUES(2,'CHEVALIER','Laurent');
Un nouvel élève de nom DURANT et de prénom Clément doit être inscrit au lycée. Or il y a déjà un élève DURANT Clément (d'identifiant 10) dans la table eleves.
Ajoutez le nouvel élèves DURANT Clément à la table eleve. Quel est alors l'identifiant de ce nouvel élève ?
La table eleve contient-elle des doublons, c'est à dire 2 lignes strictement identiques ?
Qu'est-ce qui distingue les deux élèves DURANT Clément dans la table eleves ?
L'ancien élève DURANT Clément (d'identifiant 10) a déménagé et doit être désinscrit du lycée : supprimez son enregistrement dans la table eleves sans suppimer l'enregistrement du nouvel élève DURANT Clément.
A retenir : une clé primaire interdit des doublons dans une table, et permet ici de distinguer 2 personnes ayant le même nom et le même prénom.
Une clé étrangère est un champs permettant de faire référence à une clé primaire dans une autre table.
Nous avons une table eleves contenant le nom des élèves du lycée. Nous allons mainenant créer une nouvelle table nommée specialite et contenant la composition des groupes de spécialité. Mais dans cette nouvelle table nous n'allons pas répéter le nom des élèves : on va simplement faire référence à leur identifiant dans la table eleves grâce à une clé étrangère.
Voici une exemple de contenu de la table specialite :
Table specialite :
identifiant |
matiere |
2 |
NSI |
4 |
NSI |
2 |
mathématiques |
5 |
mathématiques |
3 |
physique |
2 |
physique |
Créez cette nouvelle table specialite en précisant que le champs identifiant est une clé étrangère pointant vers le champs identifiant de la table eleves :
CREATE TABLE specialite (identifiant INT NOT NULL REFERENCES eleves, matiere char(20));
Insérez quelques lignes dans la table specialite pour créer les différents groupes de spécialité du lycée. Un élève donné pourra suivre jusqu'à 3 spécialités différentes. Exemple à compléter à loisir :
INSERT INTO specialite VALUES(2,'NSI');
INSERT INTO specialite VALUES(4,'NSI');
INSERT INTO specialite VALUES(2,'mathématiques');
INSERT INTO specialite VALUES(5,'mathématiques');
INSERT INTO specialite VALUES(3,'physique');
INSERT INTO specialite VALUES(2,'physique');
Pour afficher les spécialités de chacun des élèves on va faire une jointure naturelle : l'attribut commun entre les tables eleves et specialite étant identifiant il sera naturellement utilisé pour la jointure pour lier les deux tables. Testez, observez et retenez le résultat de la requête SQL suivante :
SELECT * FROM eleves NATURAL JOIN specialite;
On peut inverser l'ordre des tables dans la jointure en fonction des résultats recherchés. Testez, observez et retenez le résultat de la requête SQL suivante :
SELECT * FROM specialite NATURAL JOIN eleves;
Pour mettre un peu d'ordre on peut trier les lignes obtenues selon l'attribut identifiant. Testez, observez et retenez le résultat de la requête SQL suivante :
SELECT * FROM eleves NATURAL JOIN specialite ORDER BY identifiant;
Enfin on peut ordonner les lignes de la jointure inversée en fonction des élèves. Testez, observez et retenez le résultat de la requête SQL suivante :
SELECT * FROM specialite NATURAL JOIN eleves ORDER BY identifiant;
Remarque à retenir concernant les clés primaire et étrangère :
Remarque sur l'affichage des informations concernant la structure d'une table :
La commande SQL PRAGMA TABLE_INFO(ma_table) renvoie 5 colonnes :
Testez la commande PRAGMA TABLE_INFO sur chacune des 3 tables de votre base de données information.db et observez les résultats obtenus :
Voici les nouvelles commandes SQL à noter et à connaître désormais :
Importation des données dans UwAmp |
Pour importer ou exporter les données d'une seule table on utilise le format de fichier CSV.
Pour importer ou exporter une bases de données complète on utilise le format SQL.
Importation des données d'une table au format CSV :

Exportation des données d'une table au format CSV :

Importation d'une base de données compète au format SQL :

Exportation d'une base de données compète au format SQL :

La base de données Gymnase2000 |
Dans cette activité, nous utilisons la base de données Gymnase2000, contenant les informations d'un petit club sportif réparties dans 7 tables différentes.

Schéma de la base de données Gymnase2000
Voici les fichiers de la base de données Gymnase2000 (contenant 7 tables) prêts à être importer dans UwAmp :
Voici les 7 tables de la base de données Gymnase2000 :
Dans la table Seances et dans la table Entrainer, l'identifiant des sportifs entraîneurs est nommé IdSportifEntraineur. Et il faut faire attention aux minuscules/majuscules dans les différents champs de type texte. Si un sportif a un conseiller éventuellement, l'identifiant de celui-ci est indiqué dans IdSportifConseiller (NULL sinon).
En consultant la structure des 7 tables (cliquez ci-dessus sur le lien "Structure des 7 tables de la base Gymnase2000") repérer les clés primaires (PRIMARY KEY), les clés étrangères (REFERENCES), et représentez graphiquement sur le papier le schéma relationnel des 7 tables de la base de données Gymnase2000.
Travail à faire :
Téléchargez le fichier SQL correspondant à la base de données Gymnase2000 complète, importez-la dans UwAmp puis répondez aux questions suivantes en interrogeant la base de données dans UwAmp à l'aide de requêtes SQL.
En utilisant l'éditeur Notepad++ vous conserverez vos réponses et les requêtes SQL correspondantes dans un fichier texte nommé gymnase2000.txt sans oublier de préciser les questions initiales.
Voici la structure que doit suivre votre fichier texte gymnase2000.txt (chaque requête SQL est pécédées de la question à laquelle elle répond) :
=======================================================
Ficher texte gymnase2000.txt
Requêtes SQL sur la base de données Gymnase 2000
=======================================================
Requêtage simple
--------------------------------------------------------------------------------------
Simple
Lister le contenu de la table Seances :
SELECT * FROM Seances;
Lister les sportifs par ordre croissant d'âge :
SELECT * FROM Sportifs ORDER BY Age;
Lister les 5 gymnases les plus grands :
--------------------------------------------------------------------------------------
Restriction
Lister les sportifs (nom et prénom) agés strictement de plus de 30 ans :
etc.
Nous allons maintenant utiliser toutes les notions vues pendant le cours :
Les demandes sont classées en trois catégories :
Vous devez au minimum réussir à faire les premières (Niveau 1), et une partie des deuxièmes (Niveau 2). Dans l'absolu, les troisièmes (Niveau 3) correspondent à des demandes type rencontrables en entreprise.
Accès à une base de données en Python |
Pour accèder à une base de données en Python il faut utiliser le module SQLite3. Pour cela vous pouvez allez à l'activité suivante :
Réalisé par Jean-Christophe MICHEL
© Janvier 2025