1
IFT1147
Programmation Serveur Web avec PHP
Introduction à MySQL
IFT1147 - Introduction à MySQL 2
Base de donnée relationnelle
Une base de données relationnelle est
composée de plusieurs tables possédant
des relations logiques (théorie des
ensembles) entre elles.
Chaque table possède plusieurs attributs.
Chaque ligne dune table est un
ensemble de valeurs pour les mêmes
attributs.
IFT1147 - Introduction à MySQL 3
Exemple de table: Film
1952Singing in the Rain4
1960Psycho3
1990Cyrano de Bergerac2
1997Les Boys
1
anneetitrefilmID
Le filmID permet d’identifier chaque
ligne de façon unique.
IFT1147 - Introduction à MySQL 4
Exemple de table: Acteur
1969-01-02PatrickHuard6
1967-06-20NicoleKidman5
1932-04-04AnthonyPerkins4
1912-08-23GeneKelly3
1947-08-16MarcMessier2
1948-12-27GerardDepardieu1
NaissancePrenomNomacteurID
IFT1147 - Introduction à MySQL 5
Exemple de table: Role
Cette table fait le lien entre les acteurs
et les films.
IFT1147 - Introduction à MySQL 6
Contenu de la table Role
Ti-Guy61
Don Lockwood34
Norman Bates43
Cyrano de Bergerac12
Bob21
PersonnageacteurIDfilmID
2
IFT1147 - Introduction à MySQL 7
MySQL et MySQL AB
MySQL est un serveur de base de
données produit par MySQL AB qui peut,
sous certaines conditions, être utilisé
gratuitement (double licence).
Nous utiliserons la version 3.23
Le site Web de référence est
http://www.mysql.com
IFT1147 - Introduction à MySQL 8
MySQL - limitations
La version 3.23 de MySQL dont nous
nous servirons comporte plusieurs
limitations
Aucun
subselect
n’est possible
Pas de support pour des
foreign key
Pas de support pour des transactions
Pas de
trigger
,
view
,
stored procedure
IFT1147 - Introduction à MySQL 9
Connexion
Le serveur MySQL est installé sur
europa.iro.umontreal.ca et ne
peut être accédé qu’à partir du domaine
iro.umontreal.ca.
Votre nom d’usager MySQL est le même
que votre login Unix, le mot de passe
initial est celui de la recette Unix initiale.
IFT1147 - Introduction à MySQL 10
Connexion
Vous pouvez seulement créer des bases
de données dont le nom débute par
votre login suivi de _, par exemple
dift1147_Cinema
Personne à part vous (et l’administrateur
du serveur) ne possède de droits (même
de consultation) sur vos bases de
données.
IFT1147 - Introduction à MySQL 11
Ligne de commande mysql
mysql est le logiciel de prédilection pour
interagir avec le serveur MySQL.
Il est installé par défaut
Il est créé et supporté par MySQL AB
Il fonctionne sous tout système
d’exploitation
D’autres logiciels incluent PHPMyAdmin,
mysqlcc, MySQL Administrator,
IFT1147 - Introduction à MySQL 12
Connexion avec mysql
Afin que le client mysql puisse se
connecter au serveur, vous devez lui
donner le nom du serveur, votre nom
d’usager et votre login
mysql -h europa.iro.umontreal.ca
-u login -p
Le système vous demandera alors votre
mot de passe.
3
IFT1147 - Introduction à MySQL 13
Lister les bases de données
show databases permet d’afficher la
liste de toutes les bases de données du
serveur.
Il y en a beaucoup … donc, afin de
trouver les vôtres, il vaut mieux spécifier
que le nom de celles que vous cherchez
commence par votre login
show databases like ’dift1147_%’;
IFT1147 - Introduction à MySQL 14
Choisir une base de données
Afin de travailler avec une des bases de
données, on utilise la commande use
use dift1147_Cinema;
La prochaine étape est d’obtenir la liste
des tables
show tables;
ou, comme précédemment
show tables like %toto% ;
IFT1147 - Introduction à MySQL 15
La structure dune table
Afin de connaître la liste des colonnes
d’une table, on peut utiliser la
commande
describe nomDeLaTable;
Et pour obtenir la commande SQL
complète permettant de recréer la
structure d’une table
show create table nomDeLaTable;
IFT1147 - Introduction à MySQL 16
Finalement, les données …
La commande SQL SELECT permet
d’extraire les informations dune ou
plusieurs tables.
SELECT titre, annee
FROM Film;
Si on veut obtenir toutes les colonnes
SELECT * FROM Film;
IFT1147 - Introduction à MySQL 17
Avant d’aller plus loin
La casse n’a pas d’importance pour les
mots clés SQL. Elle importe pour ce qui
est des noms des tables !
Les retours à la ligne à l’intérieur d’une
commande ne servent qu’à la lisibilité.
Afin que le client envoie une commande
au serveur, elle doit être terminée par ;
(ou par \G)
IFT1147 - Introduction à MySQL 18
sultats distincts
Dans la table Film, plusieurs films
peuvent porter le même titre.
SELECT titre FROM Film;
retournera alors des duplicats.
Si on ne souhaite pas obtenir de
duplicats, il faut écrire
SELECT DISTINCT titre FROM Film;
4
IFT1147 - Introduction à MySQL 19
Limiter les résultats de SELECT
Les résultats retournés par SELECT
peuvent être limités en utilisant WHERE
SELECT titre, annee
FROM Film
WHERE annee = 1997;
SELECT * FROM Film
WHERE titre LIKE P% ;
IFT1147 - Introduction à MySQL 20
Ordonner les résultats de SELECT
ORDER BY ordonne les résultats. Les
colonnes du tri n’ont pas besoin d’être
affichées
SELECT titre FROM FILM
ORDER BY annee ASC;
ORDER BY doit être utilisé après WHERE
SELECT * FROM FILM
WHERE annee=1997 ORDER BY titre;
IFT1147 - Introduction à MySQL 21
Limiter - encore
De grandes bases de données
contiennent des centaines de millions
d’entrées. Il est inimaginable de toutes
les afficher dune seule fois.
Souvent, on n’a besoin que des 100
premières (selon l’ordre choisi). On peut
alors utiliser LIMIT.
IFT1147 - Introduction à MySQL 22
Limiter - exemple
Voici comment afficher les 5 premiers
films (en ordre alphabétique) qui ont été
tournés en 1997
SELECT *
FROM Film
WHERE annee = 1997
ORDER BY titre ASC
LIMIT 5;
IFT1147 - Introduction à MySQL 23
Nombre de lignes
Si on n’est pas vraiment intéressé au
résultat d’une requête, mais seulement
au nombre de lignes quelle retourne, il
vaut mieux utiliser la fonction count
(moins de transfert de données).
SELECT COUNT(*) AS nombre
FROM Film
WHERE annee = 1997;
IFT1147 - Introduction à MySQL 24
Quelques fonctions utiles
Afin de manipuler des chaînes de
caractères, on peut utiliser (entre autres)
LEFT(colonne, nbChr)
RIGHT(colonne, nbChr)
CONCAT(chaine1, chaine2)
Dans la condition WHERE, on peut utiliser
AND, OR, BETWEEN et ISNULL
5
IFT1147 - Introduction à MySQL 25
Plusieurs tables dans une requête
Le FROM d’une requête peut contenir
plusieurs tables, séparées par des
virgules.
SELECT *
FROM Acteur, Role
Le résultat de la requête est alors le
produit cartésien des deux tables.
IFT1147 - Introduction à MySQL 26
Plusieurs tables - suite
La plupart du temps, on ne veut obtenir
que les lignes « reliées » des deux tables,
et non pas le produit cartésien au grand
complet.
Il faut alors spécifier la relation dans le
WHERE.
SELECT * FROM Acteur, Role
WHERE Acteur.acteurID=Role.acteurID;
IFT1147 - Introduction à MySQL 27
Plusieurs tables - ce nest pas fini
Dans certains cas, seulement les lignes
reliées entre deux tables ne sont pas non
plus le résultat souhaité.
Que faire s’il faut obtenir tous les
éléments d’une première table qui ne
possèdent pas d’entrée dans une autre,
par exemple tous les acteurs qui n’ont
encore eu aucun role ?
IFT1147 - Introduction à MySQL 28
Plusieurs tables - LEFT JOIN
La clause LEFT JOIN permet de
retourner toutes les entrées d’une
première table avec, s’il y a
correspondance, les entrées d’une
deuxième, et NULL dans toutes les
colonnes réservées à la deuxième table
s’il n’y a pas de correspondance.
IFT1147 - Introduction à MySQL 29
LEFT JOIN - exemple
SELECT Acteur.*
FROM Acteur LEFT JOIN Role
ON Acteur.acteurID = Role.acteurID
WHERE isnull(Role.acteurID);
Un LEFT JOIN est beaucoup plus lent à
exécuter quun lien direct. À n’utiliser
qu’en cas de besoin.
IFT1147 - Introduction à MySQL 30
Sauvegarde
Avant de modifier les données dans les
tables, mieux vaut savoir créer une
sauvegarde !
Le logiciel mysqldump est l’utilitaire
cessaire. Il prend les mêmes
arguments que le client mysql; de plus,
on doit aussi spécifier le nom de la base
de données à sauvegarder.
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !