Programmation web et multimédia II
Techniques d'intégration multimédia
Pascal Larose, professeur
Cours 05
Objectifs du cours :
• Révision des bases de données relationnelles
• Révision PHPMyAdmin
• Révision SQL : SELECT, FROM, INNER JOIN, WHERE, ORDER BY.
Révision des bases de données relationnelles
Observez le schéma de base de données ci-dessous. Nous travaillerons, dans les prochains cours sur ce
modèle qui nous permettra de nous introduire à l’interrogation de base de données. Suivez le prof et
prenez des notes !!!
Combien de tables avons-nous (Ok facile! J)? Tables de spécialisation? Table d’intersection?
Combien de champs dans t_participant? Dans t_sport?
Combien de clés primaires?
Combien de clés étrangères?
Combien de relation? Donnez les cardinalités des relations?
Révision PHPMyAdmin
Avant de débuter les exercices d’aujourd’hui, il nous faudra installer une base de données sur votre poste,
en local. Utilisez le fichier course_pwem2_2025.sql qui contient le SQL de la base de données.
Paramètres de connexion :
Hôte : localhost
BD : course_pwem2_2025
Utilisateur : course_pwem2_2025
Mot de passe : pwemii_mdp
Suivez le prof et surtout prenez des notes !! Donc, créer un utilisateur avec une bd du même nom.
Ensuite, importer la base de données selon la démo du professeur.
Révision SQL (1ère partie)
SELECT
Pour extraire de l’information de la base de données. L’information est retournée sous la forme d’une
table (lot d’enregistrements) constituée d’un certain nombre de lignes (enregistrements) et de colonnes
(champs).
Exemples :
SELECT *
FROM nomTable
Toutes les colonnes (champs) de toutes les lignes (enregistrements) de la table nomTable se trouvent
dans le lot d’enregistrements résultant de la requête.
SELECT champ1, champ2, ... champn
FROM nomTable
Seuls les champs spécifiés de tous les enregistrements de la table nomTable se trouvent dans le lot
d’enregistrements résultant de la requête.
SELECT champ1, champ2, ... champn
FROM nomTable
WHERE expression logique
Seuls les champs spécifiés des enregistrements pour lesquels l’expression logique est vraie se trouvent
dans le lot d’enregistrements résultant de la requête. Donc cela filtre et diminue le nombre de résultats.
SQL : INNER JOIN
SELECT champ1, champ2, ... champn
FROM nomTable1
INNER JOIN nomtable2 ON nomTable1.champcléprimaire = nomtable2.champcléétrangère
WHERE expression logique
Même principe que pour le SELECT, sauf que les champs énumérés ici proviennent des deux tables
mentionnées en exploitant le lien relationnel entre celles-ci. Une jointure est nécessaire pour rejoindre les
champs de deux tables.
ORDER BY avec deux ou plusieurs clés, ascendant ou descendant
SELECT champ1, champ2, …champn
FROM nom_table
ORDER BY champx ASC|DESC, champy ASC|DESC
Le mot-clé ORDER BY est utilisé pour trier un résultat de requête. Dans cet exemple, il y aurait deux tris.
LIKE
Vérifie l’égalité en permettant le caractère de remplacement : %. Cela ressemble à un opérateur = mais cela est
plus permissif afin de faire des recherches.
SELECT champ1, champ2, …champn
FROM nom_table
WHERE champx LIKE ‘M%’
Fera l’extraction de tous les noms débutants par un M.
LIMIT à la fin d'une instruction SQL
SELECT champ1, champ2, …champn
FROM nom_table
LIMIT no_occurr_depart, nbre_occur
Cette instruction permet de choisir une quantité d’enregistrements, à partir d’un rang précis dans la BD…
Cela est utile quand on fait de l’affichage avec une pagination pour ne pas voir tous les résultats en même
temps.
DAYOFMONTH( ), DAYOFWEEK( ), HOUR( ), MINUTE( ), MONTH( ), YEAR()
SELECT champ1, champ2, …champn
FROM nom_table
WHERE YEAR(champDate)=2001 AND
MONTH(champDate)>4
ORDER BY champx
Ces fonctions sont disponibles pour les dates dans le SELECT (voir l’opérateur AS) et/ou dans le
WHERE. Permet le filtrage en fonction de certains critères habituels aux dates.
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
L’opérateur AS
SELECT champ1, champ2, …champn,
DAYOFMONTH(champDate) AS jourMois,
DAYOFWEEK(champDate) AS jourSemaine,
MONTH(champDate) AS mois,
YEAR(champDate) AS annee
FROM nom_table
WHERE YEAR(champDate)=2001 AND MONTH(champDate)>4
ORDER BY champDate
Permets de faire l’extraction d’une requête avec une sous-information de date, sous forme d’une colonne
de la requête. C’est comme si on invente un nouveau champ qui est utile mais pas présent dans la table.
IN (……) dans un WHERE
SELECT champ1, champ2, …champn
FROM nom_table
WHERE champx IN (valeur1,valeur2,...);
L’opérateur IN vous permet de spécifier des valeurs multiples dans une clause WHERE.
C’est une syntaxe raccourcie. C’est comme un choix de réponses des valeurs possibles!
DISTINCT dans un SELECT
SELECT DISTINCT champ1, champ2, …champn
FROM nom_table;
La déclaration SELECT DISTINCT est utilisée pour retourner des valeurs distinctes (différentes), c’est-à-
dire sans doublons.
COUNT avec synthaxe (*)
SELECT COUNT(*)
FROM nom_table;
La fonction COUNT(*) retourne le nombre d’enregistrements dans une table. Le nombre de lignes
retournées par ce SELECT.
COUNT avec nom de colonne
SELECT COUNT(champx)
FROM nom_table;
La fonction COUNT(champx) retourne le nombre de valeurs se retrouvant dans une colonne.
COUNT avec DISTINCT
SELECT COUNT(DISTINCT champx)
FROM nom_table;
La fonction COUNT(DISTINCT champx ) retourne le nombre de valeurs distinctes se retrouvant dans
une colonne.
Opérateurs :
Comparaison: =, < >, <, >, <=, >=,
Logique: OR, AND, NOT, IS NULL (Le champs est vide)
Lien d’intérêt :
http://dev.mysql.com/doc/refman/5.7/en/non-typed-operators.html