Chapitre 3
RAPPELS SUR MYSQL
 
 
Précédent Suivant
 

Rappels sur MySQL
Bases de données: vocabulaire
Types d'attributs particuliers
* Attribut en clé primaire
* Identifiant unique d'un enregistrement
* Accès direct à l'enregistrement par la clé
* Accélère les jointures où la clé sert de pivot
* Attribut en index
* N'est pas forcément unique dans la table
* Accélère les tris (ou recherches) sur l'attribut
* Sans index: recherche séquentielle
* Avec index: table organisée en zones
Requêtes SQL (1/3)
* SQL: Structured Query Language
* Langage universel des bases de données
* Permet l'interrogation d'une base
* Permet la modification d'une base
* Projection
* Sélection de certains attributs d'une table
* SELECT titre,auteur FROM ouvrage
* Sélection
* Sélection d'enregistrements d'une table
* Vérifiant certaines conditions
* SELECT * FROM ouvrage
WHERE auteur='Harris, Thomas'
Requêtes SQL (2/3)
* Tri
* SELECT * FROM utilisateur ORDER BY nom,prenom
* Croissant par défaut
* Décroissant: "DESC" après le nom de l'attribut
* Pour accélérer le tri: index
* Jointure
* Fusion de plusieurs tables
* SELECT utilisateur.nom,
utilisateur.prenom,
ouvrage.titre
FROM emprunt,utilisateur,ouvrage
WHERE (utilisateur.id=emprunt.utilisateur
AND ouvrage.id=emprunt.ouvrage)
* Pour identifier de manière unique: clé primaire
Requêtes SQL (3/3)
* Insertion d'un enregistrement
* INSERT INTO ouvrage (titre,auteur)
VALUES ('Sphère','Crichton, Michael')
* Suppression d'enregistrement(s)
* DELETE FROM utilisateur WHERE nom='Nawouak'
* Suppression de tous les enregistrements avec le nom "Nawouak"
* DELETE FROM emprunt WHERE id=2
* Suppression de l'enregistrement avec l'identifiant unique "2"
* Modification d'enregistrement(s)
* UPDATE emprunt
SET utilisateur=7 WHERE ouvrage=2
Connexion à une base MySQL (1/3)
* Connexion au serveur MySQL
* Nom du serveur ("host")
* Nom de l'utilisateur ("login")
* Mot de passe ("password")
* mysql_connect($host,$login,$password)
* Sélection de la base
* Nom de la base ("base")
* mysql_select_db($base)
* Déconnexion du serveur
* mysql_close()
* Toujours se déconnecter: pensez aux autres !
Connexion à une base MySQL (2/3)
* Schéma de connexion
if (@mysql_connect($host,$login,$password)) {
if (@mysql_select_db($base)) {
/* Connexion réussie */
/* Code du script */
@mysql_close();
}
else {
@mysql_close();
die("Connexion à la base impossible !");
}
}
else die("Connexion au serveur impossible !");
* "@" supprime l'affichage des messages d'erreur
* "die" affiche un message et interrompt le script
Connexion à une base MySQL (3/3)
* Défauts du schéma
* Réécrire le schéma à chaque connexion à la base
* Informations de connexion dupliquées dans chaque page
* Petit exercice
* Ecrire une fonction pour la connexion
* Mettre cette fonction dans un fichier
(connexion.php)
* Mettre les informations de connexion dans un fichier
(globales.php)
* Réécrire le schéma de connexion en conséquence
Exécution d'une requête MySQL
* Exécution d'une requête
* $requete = "SELECT * from utilisateur";
$result = mysql_query($requete);
* "$result" contient le résultat de la requête
* Extraction des enregistrements un par un
* $enr = mysql_fetch_row($result);
* Enregistrement converti en tableau simple: $nom = $enr[2];
* $enr = mysql_fetch_array($result);
* Enregistrement converti en tableau associatif: $nom = $enr["nom"];
* $enr = mysql_fetch_object($result);
* Enregistrement converti en objet: $nom = $enr->nom;
* Connaître le nombre d'enregistrements
* Requête "SELECT"
* Nombre d'éléments trouvés: mysql_num_rows($result)
* Requête "DELETE" ou "UPDATE"
* Nombre d'éléments affectés: mysql_affected_rows()
* Petit exercice: afficher le contenu de la table "ouvrage"
phpMyAdmin: interface d'administration
* Interface Web d'administration MySQL
* Niveau administrateur
* Créer des utilisateurs
* Login / mot de passe
* Limitation de l'accès à certaines bases
* Créer des bases
* En général, un utilisateur = une base
* Cas de la plupart des fournisseurs d'espace
* Niveau utilisateur
* Accès à une ou plusieurs bases
* Souvent impossible de créer de nouvelles bases
* Manipulation de tables
* Définition de leur structure
* Saisie des données
* Requêtes