35
Comment stocke-t-on des données sur un site web ?

Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

  • Upload
    lykhanh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Comment stocke-t-on des données sur un site web ?

Page 2: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 3: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Pourquoi stocker ses données dans une base de

données ?

Page 4: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Rappel : organisation des

langages d’un site web

Page 5: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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)

Page 6: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 7: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 8: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

MySQL

MySQL est le plus célèbre SGBDR open-source et gratuit

C’est le plus utilisé, notamment sur le web :

Wikipédia

Google

eBay

Youtube

Facebook

Page 9: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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 !

Page 10: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 11: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Points communs avec les tableurs

Page 12: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Terrain connu : les tableurs

Page 13: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 14: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 15: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Vocabulaire de la BDD

Page 16: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 17: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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 »

Page 18: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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).

Page 19: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Un accès facile à prendre en main de la base de données

Page 20: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Ligne de commande

Normalement, on accède à la base de

données MySQL à travers une interface

en ligne de commande :

Page 21: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

PHPMyAdmin

PHPMyAdmin est un outil qui permet de

manipuler sa base de données via une

interface graphique

Page 22: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 23: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 24: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 25: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

Comment parler à la base de données ?

Page 26: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 27: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 28: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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)

Page 29: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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.

Page 30: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 31: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 32: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 33: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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

Page 34: Comment stocke-t-on des données sur un site web web/Cours/2008-09.cours.02... · Les bases de données relationnelles Author: Mateo Created Date: 1/6/2009 4:22:58 PM

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