Bases de données
TNSI B
MySQL
MySQL est un Système de Gestion de Base de Données (SGBD) parmi les plus populaires au monde. Il est
distribué sous double licence, une licence publique générale GNU et une licence propriétaire selon
l’utilisation envisagée.
La première version de MySQL est apparue en 1995 et l’outil est régulièrement entretenu.
Il est particulièrement connu des développeurs pour faire partie des célèbres quatuors: WAMP (Windows,
Apache, MySQL et PHP), LAMP (Linux) et MAMP (Mac). Ces packages sont simples à mettre en œuvre et
très utilisés.
MySQL est largement connu et exploité comme SGBD pour des applications utilisant PHP. C’est d’ailleurs
pour cette raison que la plupart des hébergeurs web proposent PHP et MySQL.
Il est compatible avec de nombreux langages de programmation : PHP, Java, Ruby, C, C++, Python, …
MySQL inclut plusieurs moteurs de bases de données, les 2 moteurs les plus connus étant MyISAM
(moteur par défaut) et InnoDB (pour les modèles relationnels).
1 Gestion des bases de données
Avant de commencer à manipuler des bases de données, des tables et leurs éléments, il convient de
savoir ce qui existe déjà sur votre machine.
Ceci est possible en lançant les requêtes suivantes à partir d’un terminal mysql.
Lancez une console MySQL à partir de l’icône WampServer de votre machine.
Indiquez le nom d’utilisateur (root par défaut) et le mot de passe si nécessaire (aucun par défaut).
Pour visualiser les bases de données existantes, tapez la commande : show databases;
Pour choisir la base de données à utiliser le cas échéant, tapez : use ma_bdd;
Enfin, pour visualiser les tables existantes dans la base de donnée sélectionnée, tapez : show tables;
Remarque : Il est très fortement conseillé de terminer toutes vos requêtes SQL par un « ; ». Même si ce n’est pas nécessaire dans
certains cas, cela vous évitera bien des soucis.
2 Vocabulaire et syntaxe des requêtes MySQL
Une fois que les bases de données présentes sur votre machine ont été clairement identifiées, on va
pouvoir les manipuler grâce à MySQL.
On peut diviser le vocabulaire SQL en trois groupes :
• Le langage de définition de données (LDD) permet manipuler les structures (bases, tables,
index, vues).
• Le langage de manipulation de données (LMD) permet de manipuler les données stockées dans
les structures.
• Le langage de contrôle de données (LCD) permet de gérer les permissions et annulations des
transactions, selon certains utilisateurs, certaines requêtes ou la reprise sur panne. Il s'agit de la
sécurité de la base, des permissions des utilisateurs. (hors référentiel de terminale NSI).
Lycée PABLO PICASSO PERPIGNAN Page 1 / 8
Bases de données
TNSI B
MySQL
2.A Langage de définition de données
a Requête CREATE
CREATE DATABASE nom_base;
• crée une base de données appelée nom_base (à adapter à la situation !!!).
• Rappel :une base de données est un ensemble de tables. Un SGBD peut gérer plusieurs bases de
données.
CREATE TABLE client1 (nom VARCHAR(50), prenom VARCHAR(50), adresse VARCHAR(200));
• crée une table intitulée client1 possédant 4 attributs (ou champs) :
• nom : chaîne d'au plus 50 caractères.
• prenom : chaîne d'au plus 50 caractères.
• adresse : chaîne d'au plus 200 caractères.
b Requête DESCRIBE
DESCRIBE nom_table;
• donne les informations (attributs, type, valeur par défaut, …) de la table nom_table.
c Requête ALTER
ALTER DATABASE nom_base CHARACTER SET utf8;
• applique le codage des caractères utf8 à la base de données nom_base.
ALTER TABLE nom_table ADD (nom_colonne type_données) ;
• ajoute une colonne nom_colonne de type type-données à la table nom_table.
ALTER TABLE nom_table DROP nom_colonne ;
• supprime la colonne nom_colonne de la table nom_table.
d Requête DROP
DROP DATABASE nom_base;
• supprime une base de données appelée nom_base.
DROP TABLE nom_table;
• supprime une base de données appelée nom_table.
Remarque : les requêtes ci-dessus ne sont que des exemples. Il y a beaucoup d’autres possibilités et options que nous
découvrirons et utiliserons selon nos besoins.
Lycée PABLO PICASSO PERPIGNAN Page 2 / 8
Bases de données
TNSI B
MySQL
Activité : Création et suppression d’une base de données et d’une table.
En utilisant un terminal MySQL, écrire les requêtes SQL appropriées :
• Créer une base de données nommée nsi.
• Vérifier que la base de données a bien été créée.
• Sélectionner cette base de données comme base de données de travail.
• Créer une table term_nsi comportant des attributs nom, prenom ;
• Vérifier que la table term_nsi et ses attributs ont bien été créés :
• Ajouter l’attribut classe de type varchar(8) dans la table term_nsi :
• Vérifier que l’attribut a bien été ajouté ;
• Supprimer la table term_nsi;
• Vérifier que la table term_nsi a bien été supprimée.
• Supprimer la base de données nsi ;
• Vérifier que la base de données nsi a bien été supprimée.
Lycée PABLO PICASSO PERPIGNAN Page 3 / 8
Bases de données
TNSI B
MySQL
2.B Langage de manipulation de données
a Requête SELECT … FROM … :
La requête SELECT permet de renvoyer des informations spécifiques et contenues dans la table précisée
après la clause FROM.
SELECT et FROM sont obligatoires dans un requête SELECT.
La forme générale de la requête SELECT est la suivante :
SELECT [DISTINCT] <liste d’attributs>
FROM <liste de tables>
[WHERE <condition>]
[GROUP BY <champs de regroupement>]
[HAVING <condition>]
[ORDER BY <attribut> [ASC] | [DESC]]
Remarques :
• Les clauses DISTINCT, WHERE, GROUP BY, HAVING, ORDER BY sont optionnelles.
• Les clauses GROUP BY, HAVING ne sont pas au programme de Terminale NSI.
• Des instructions d’agrégation permettent d’effectuer des opérations comme le comptage, la
somme, la moyenne, ... :
• AVG(<attribut>)
• COUNT(*)
• MAX (<attribut>)
• MIN (<attribut>)
• SUM (<attribut>)
Activité : Consultation d’une base de données
• Importation de la base de données (PHPMyAdmin)
◦ Télécharger le fichier promos_nsi.sql présent dans le dossier partagé « Bases de données »
de votre espace de classe ;
◦ Importer la base de données à partir du fichier promos_nsi.sql dans PHPMyAdmin.
• Consultation de la base de données (PHPMyAdmin ou terminal MySQL)
◦ Sélectionner la base de données promos_nsi comme base de données de travail.
◦ Afficher la structure de la BDD.
◦ Afficher la structure de la table.
Lycée PABLO PICASSO PERPIGNAN Page 4 / 8
Bases de données
TNSI B
MySQL
◦ Ecrire une requête :
▪ permettant d’afficher toutes les informations de la table.
▪ permettant de n’afficher que les noms des élèves de la table.
▪ permettant de n’afficher que les prénoms des élèves de la table.
▪ permettant d’afficher les noms et les prénoms des élèves de la table.
▪ permettant de connaître le nombre d’enregistrements de la table.
▪ permettant de connaître la liste des classes des éléves de NSI.
Clause WHERE
WHERE permet d’ajouter des conditions à la requête SELECT … FROM … .
Les conditions s’écrivent sous forme de comparaisons.
Condition Description Condition Description
> Plus grand que <= Plus petit ou égal à
>= Plus grand ou égal à = Égal à
< Plus petit que <> Différent de
Remarques :
• On peut :
◦ chaîner des conditions avec les mots-clé AND et OR.
◦ faire la comparaison avec une liste grâce à IN et NOT IN.
◦ sélectionner des valeurs dans un intervalle avec le mot-clé BETWEEN ou hors d’un intervalle
avec NOT BETWEEN.
◦ utiliser le mot-clé IS NULL pour sélectionner les valeurs nulles ou IS NOT NULL our des valeurs
non nulles.
• Les comparaisons de chaînes de caractères tiennent compte des espaces et de la casse des
caractères.
Lycée PABLO PICASSO PERPIGNAN Page 5 / 8
Bases de données
TNSI B
MySQL
Activité : Consultation d’une base de données avec clause WHERE
• Ecrire une requête :
◦ permettant d’afficher les noms et les prénoms des élèves de la table appartenant à la terminale
TG03.
◦ permettant d’afficher les noms et les prénoms des élèves de sexe féminin de la table.
◦ permettant de connaître le nombre d’élèves se prénommant Théo.
◦ ...
Clause ORDER BY
ORDER BY permet d'ordonner les résultats d'une requête par ordre croissant (ASC) ou décroissant
(DESC) sur un attribut donné.
La plupart des SGBD trient par défaut de manière croissante.
• Faire une requête permettant d’afficher les noms et les prénoms des élèves de la table dans l’ordre
alphabétique inverse des noms.
b Requête INSERT
Cette requête permet d’insérer des enregistrements dans les tables d'une base de données.
La syntaxe de la requête est la suivante :
INSERT INTO nom_table VALUES (valeur);
• Faire une requête permettant d’ajouter les noms de vos enseignants de NSI dans la table.
c Requête UPDATE
Cette requête permet de mettre à jour des enregistrements dans les tables d'une base de données.
La syntaxe de la requête est la suivante :
UPDATE nom_table SET attribut=valeur [WHERE condition];
La clause WHERE est optionnelle mais cela peut entraîner des modifications (tous les champs de tous les
enregistrements par exemple) qui ne provoquent pas d'erreur SQL mais qui falsifient toutes les données
de la base.
• Mettre la table à jour en indiquant le prénom des enseignants de NSI et en précisant que leur
classe est ‘prof’.
Lycée PABLO PICASSO PERPIGNAN Page 6 / 8
Bases de données
TNSI B
MySQL
d Requête DELETE
Cette instruction sert à effacer un enregistrement d'une table de la base de données.
La syntaxe de la requête est la suivante :
DELETE FROM nom_table [WHERE condition] ;
• Supprimer les noms des enseignants présents dans la table.
3 Clés et jointures
3.A Clés primaires et étrangères
a Lecture
Les clés primaires et étrangères sont incluses dans la description des tables.
On peut les voir en affichant toutes les informations de la table :
DESCRIBE <nom_table>;
ou les visualiser seules :
SELECT * FROM information_schema.table_constraints
WHERE table_name = ‘nom_table';
b Création
On peut ajouter un clé primaire à une table en tapant la requête suivante :
ALTER TABLE nom_table ADD PRIMARY KEY(attribut);
Pour ajouter une clé étrangère à une table existante, on peut utiliser la requête suivante :
ALTER TABLE table_depart ADD FOREIGN KEY (attribut_depart) REFERENCES
table_destination(attribut_destination) ON DELETE RESTRICT ON UPDATE RESTRICT;
Remarque : La création d’un index est automatique. En cas de problème, on peut le créer par la requête : ALTER TABLE
nom_table ADD INDEX(attribut);
c Suppression
On peut ajouter un clé primaire à une table en tapant la requête suivante :
alter table nom_table drop primary key;
Pour supprimer une clé étrangère à une table existante, on peut utiliser la requête suivante :
alter table nom_table drop foreign key nom_contrainte;
Remarque : La suppression de la clé étrangère ne supprime pas l’index sur l’attribut. On peut le supprimer par la
requête : alter table nom_table drop index(attribut);
Lycée PABLO PICASSO PERPIGNAN Page 7 / 8
Bases de données
TNSI B
MySQL
3.B Jointure de tables
Les jointures permettent de récupérer les informations de différentes tables en utilisant les liaisons entre
clés primaires et clés étrangères.
Une base de données est constituée de 3 tables : eleves, matieres, notes.
Un extrait de ces trois tables est présenté ci-dessous :
eleves matieres notes
id prenom age id matiere id_note id_eleve id_matiere note
1 Pauline 8 1 Francais 1 1 2 15
2 Jean 9 2 Maths 2 2 1 13
3 Jacques 8 3 HG 3 4 2 17
4 Sylvie 9 4 Sciences 4 4 5 8
5 LV 5 2 3 14
6 EPS 6 3 4 16
On souhaite afficher un récapitulatif des notes faisant apparaître le prénom de l’élève suivi de sa note et
de la matière correspondante. Pour cela, on doit effectuer une jointure entre les tables pour récupérer les
différentes informations.
La table notes permet d’établir ce récapitulatif et possède les liaisons nécessaires à l’obtention des
informations manquantes. C’est donc à partir de cette table que la requête sera bâtie.
Pour éviter les ambiguïtés, il convient de bien identifier les différents attributs en précisant la table à
laquelle ils appartiennent.
En tenant compte de tout cela, la requête SQL s’écrira :
SELECT notes.id_note,eleves.prenom,matieres.matiere,notes.note
FROM notes
JOIN eleves on notes.id_eleve = eleves.id
JOIN matieres on notes.id_matiere = matieres.id ;
Compléter le tableau ci-dessous donnant le résultat de la requête :
id_note eleve matiere note
Ecrire une requête SQL permettant d’afficher le titre, le prénom, le nom et le pays du livre Hernani de la
base de données mediatheque.
Lycée PABLO PICASSO PERPIGNAN Page 8 / 8