Upload
lykhanh
View
212
Download
0
Embed Size (px)
Citation preview
Comment stocke-t-on des données sur un site web ?
Sommaire
I. Introduction aux bases de données
II. Structure d’une base de données
III. Administrer la base avec PHPMyadmin
IV. Le langage SQL
Pourquoi stocker ses données dans une base de
données ?
Rappel : organisation des
langages d’un site web
Rappel : organisation des
langages d’un site web
XHTML et CSS permettent de réaliser une page web qui s’affiche dans le navigateur
PHP génère du code XHTML pour le personnaliser en fonction du visiteur
MySQL stocke les données du site web (exemple : liste des membres)
2 façons de stocker des données
Dans des fichiers
• Accès très rapide
• Structure et lecture des fichiers complexe à mettre en œuvre
Dans une base de données
• Accès un peu plus lent
• … mais pas besoin de se soucier de la lecture des fichiers
MySQL
MySQL est un SGBDR (Système de
Gestion de Base de Données
Relationnelle)
C’est un programme
Son rôle est de stocker des données de
manière organisée, hiérarchisée
MySQL
MySQL est le plus célèbre SGBDR open-source et gratuit
C’est le plus utilisé, notamment sur le web :
Wikipédia
eBay
Youtube
Le langage SQL
On « parle » à la base de données (MySQL) dans un langage appelé SQL (Structured Query Language)
SQL est un langage standardisé, il est utilisé par différents logiciels de gestion de base de données
MySQL n’est donc pas le seul logiciel disponible pour gérer une base de données !
Les concurrents de MySQL
• Propriétaire
• Très complet et très puissant
• Le leader mondial des bases de donnéesOracle
• Propriétaire
• Généralement utilisé avec d’autres technologies Microsoft
Microsoft SQL Server
• Libre
• Plus de fonctionnalités que MySQL
• Moins populaire que MySQLPostgreSQL
• Libre
• Très très léger, facile à embarquer avec un logiciel
SQLite
Points communs avec les tableurs
Terrain connu : les tableurs
Terrain connu : les tableurs
La base de données (BDD) organise les
informations comme un tableur
Il y a un vocabulaire spécifique à
connaître pour la BDD
Vocabulaire de la BDD
Dans un tableur, on parle de :
Lignes
Colonnes
Feuilles (pages)
Dans une base de données :
Chaque ligne est appelée une entrée
Chaque colonne est appelée un champ
Chaque feuille est appelée une table
Vocabulaire de la BDD
Vocabulaire de la BDD
Une base de données peut contenir plusieurs tables
Une table est un tableau qui stocke le même type de données. Ex : La table des membres
La table des statistiques de connexion
La table des messages du forum
Il est possible de séparer ses tables dans plusieurs bases, mais c’est généralement inutile. Une base de données suffit.
Les ID
Très souvent, on crée un champ (= une
colonne) appelé « id » pour numéroter
les entrées
id nom prenom ecole promotion specialisation
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
3 BERANGER Aldéric EFREI 2011 TR
4 BOURELLY François EFREI 2012 SI
5 BUSCAN Romain EFREI 2011 TR
Table « eleves »
Les clés primaires
Les ID permettent d’avoir un identifiant unique pour chaque ligne. Ils forment alors la clé primaire de la table.
Les ID ne sont pas obligatoires. Une clé primaire peut aussi être un texte (comme le nom de famille). Ce qui compte, c’est qu’il n’y en ait pas 2 identiques dans une même table.
Une clé primaire peut être composée de 2 champs ou plus (ex : nom + prénom au cas où il y ait 2 fois le même nom de famille).
Un accès facile à prendre en main de la base de données
Ligne de commande
Normalement, on accède à la base de
données MySQL à travers une interface
en ligne de commande :
PHPMyAdmin
PHPMyAdmin est un outil qui permet de
manipuler sa base de données via une
interface graphique
WAMP Server
Pour installer sur son ordinateur simultanément PHP, MySQL et PHPMyAdmin, on peut utiliser un package tout prêt :
WAMP sous Windows : http://www.wampserver.com/dl.php
MAMP sous Mac : http://www.mamp.info/en/download.html
XAMPP sous Windows / Mac / Linux : http://www.apachefriends.org/fr/xampp.html
Utiliser PHPMyAdmin
PHPMyAdmin permet de créer
facilement des bases et des tables.
On peut aussi ajouter et lire des
données, mais le plus souvent on le fait
par l’intermédiaire de PHP pour afficher
le résultat sur son site web à sa façon.
Utiliser PHPMyAdmin
Apprenez à créer une table et à la remplir de données : http://www.siteduzero.com/tutoriel-3-14496-phpmyadmin.html
Créez une table pour stocker les élèves pour commencer et insérez quelques données factices. Vous en aurez besoin pour vous entraîner dans la prochaine partie.
Comment parler à la base de données ?
Parler avec MySQL
MySQL se charge d’enregistrer dans des fichiers sur le disque dur pour vous. Vous n’avez pas à vous en soucier.
MySQL organise les données de manière optimisée pour accélérer les accès aux données.
Vous devez « parler » à MySQL pour récupérer les données qui vous intéressent. On utilise pour cela le langage SQL.
Les requêtes SQL
On effectue des « requêtes » à MySQL en langage SQL.
4 grandes familles de requêtes : SELECT : récupérer des données (lire la table)
INSERT : insérer des données (remplir la table)
UPDATE : modifier des données (mettre à jour la table)
DELETE : supprimer des données
Il y en a d’autres, moins fréquemment utilisées : CREATE TABLE : crée une table
ALTER TABLE : modifie une table (ajoute / supprimedes champs…)
Etc.
Parler avec MySQL
PHPMyAdmin offre une interface pour écrire ses propres requêtes SQL.
On peut aussi écrire des requêtes SQL depuis un script PHP (on le verra lors de la prochaine séance)
La requête SELECT
De tous les types de requêtes, SELECT est le plus complexe à appréhender.
On peut en faire une utilisation très simple comme très complexe (en fusionnant par exemple des données issues de 2 tables différentes).
Testez les prochains exemples de code SQL dans PHPMyAdmin et n’hésitez pas à faire vos propres tests.
La requête SELECT
SELECT * FROM eleves;
Sélectionne toutes les entrées et tous les champs de la table eleves.
id nom prenom ecole promotion specialisation
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
3 BERANGER Aldéric EFREI 2011 TR
4 BOURELLY François EFREI 2012 SI
5 BUSCAN Romain EFREI 2011 TR
SELECT nom, prenom FROM eleves;
Sélectionne toutes les entrées mais uniquement les champs nom et
prenom de la table eleves.
nom prenom
ABRAN Benoît
ADOS Luc
BERANGER Aldéric
BOURELLY François
BUSCAN Romain
La requête SELECT
SELECT * FROM eleves WHERE specialisation='SI';
Uniquement les élèves en spé SI
id nom prenom ecole promotion specialisation
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
4 BOURELLY François EFREI 2012 SI
SELECT * FROM eleves WHERE specialisation='SI‘ AND promotion < 2012;Uniquement les élèves en spé SI des promos antérieures à 2012
id nom prenom ecole promotion specialisation
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
La requête SELECT
SELECT nom FROM eleves WHERE nom LIKE 'A%';
Les élèves dont le nom commence par A (% est un joker)
nom
ABRAN
ADOS
SELECT * FROM eleves ORDER BY prenom;
Triés par prénom
id nom prenom ecole promotion specialisation
3 BERANGER Aldéric EFREI 2011 TR
1 ABRAN Benoît EFREI 2011 SI
4 BOURELLY François EFREI 2012 SI
2 ADOS Luc EFREI 2011 SI
5 BUSCAN Romain EFREI 2011 TR
La requête SELECT
SELECT * FROM eleves ORDER BY promotion, prenom;
Triés par promotion puis par prénom
SELECT * FROM eleves ORDER BY promotion, prenom LIMIT 0,3;Prend uniquement 3 entrées, en commençant par la première entrée de la liste (n°0). Permet de tronquer un résultat.
id nom prenom ecole promotion specialisation
3 BERANGER Aldéric EFREI 2011 TR
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
5 BUSCAN Romain EFREI 2011 TR
4 BOURELLY François EFREI 2012 SI
id nom prenom ecole promotion specialisation
3 BERANGER Aldéric EFREI 2011 TR
1 ABRAN Benoît EFREI 2011 SI
2 ADOS Luc EFREI 2011 SI
Les autres requêtes
Ce n’est qu’une introduction à SELECT, pour aller plus loin : http://www.siteduzero.com/tutoriel-3-9866-pour-aller-
plus-loin.html
Pour lier 2 tables entre elles et créer des relations : http://www.siteduzero.com/tutoriel-3-32310-creer-
des-relations-dans-votre-base-de-donnees.html
http://www.siteduzero.com/tutoriel-3-38831-les-jointures-moyen-d-economiser-des-ressources.html
http://www.siteduzero.com/tutoriel-3-32078-sql-selection-multi-tables.html
Pour ajouter, supprimer,
modifier…
Les requêtes INSERT, UPDATE et
DELETE sont en général plus faciles à
utiliser qu’INSERT
Pour une introduction à ces requêtes,
voir : http://www.siteduzero.com/tutoriel-
3-14514-ecrire-des-donnees.html