Vous êtes sur la page 1sur 48

INTRODUCTION AUX SYSTMES D'INFORMATION ET AUX BASES DE DONNES AVEC MYSQL

Objectifs Connatre les principales caractristiques d'un systme d'information Comprendre la structure d'une base de donnes Matriser les bases du langage SQL Complments ncessaires Accs un serveur de bases de donnes (EasyPHP, MAMP, etc.) Niveau de comptences en pr-requis Pas de connaissance particulires

Ce document d'enseignement est diffus librement, pour usage individuel. Il est librement tlchargeable sur le site de l'auteur *. Michel Cartereau - Janvier 2011

AgroParisTech - UFR d'informatique - 16, rue Claude Bernard - F 75231 PARIS CEDEX 05
michel.cartereau @ agroparistech.fr - Tlphone : +33 1 44 08 16 80 * http://www.agroparistech.fr/mmip/mc/

SYSTME D'INFORMATION Introduction Ralisation

Introduction aux systmes d'information - Page 2

INTRODUCTION AU SYSTME D'INFORMATION

EXEMPLE D'ORGANISATION VENTE DE PRODUITS (FRUITS, LGUMES) PAR UNE COOPRATIVE Produits achets un producteur et revendus des clients DIFFRENTES ACTIVITS Achat de lot un producteur, vente de produit un client, suivi de l'volution des stocks, etc. INFORMATIONS Identification des produits avec prix de vente, d'achat et quantits, coordonnes des producteurs et des acheteurs, etc. UN SYSTME D'INFORMATION UNE REPRSENTATION OPRATIONNELLE DE LA RALIT Donnes (informations associes aux activits de l'organisation) + Outils (manipulation des donnes, aide la dcision)

Introduction aux systmes d'information - Page 3

SYSTME D'INFORMATION : VUE INFORMATIQUE


QUELS SONT LES LMENTS INFORMATIQUES ? UN SYSTME INFORMATIQUE UN SERVEUR Une base de donnes + une application fournissant les outils

DES POSTES CLIENTS DE TRAVAIL Manipulations via des pages Web (mode d'accs quasi-universel)

ARCHITECTURE CENTRALISE AVEC UTILISATIONS EN RSEAU

Introduction aux systmes d'information - Page 4

SYSTME D'INFORMATION : RALISATION


AUTOMATISATION DU FONCTIONNEMENT D'UNE ORGANISATION IMPORTANCE DU SYSTME D'INFORMATION ENJEUX CRITIQUES POUR L'ORGANISATION Fonctionnement dpendant du systme d'information UN OBJET POTENTIELLEMENT COMPLEXE ET COTEUX Dmarche mthodologique indispensable pour sa ralisation UNE DMARCHE DE PROJET GRANDES TAPES 1) Analyse des besoins, cahier des charges, tude de faisabilit 2) Spcifications, conception et validation du systme 3) Mise en production et exploitation du systme PRINCIPAUX RLES Matrise d'ouvrage (MOA) tapes 1 et 3 Matrise d'uvre (MOE) tape 2 DIFFRENTES ACTEURS Chefs de projet, architecte de logiciel, dveloppeur, intgrateur, etc. RLE PRIMORDIAL DES DONNES LA BASE DE DONNES Ensemble structur d'informations cohrentes et prennes, correspondant ici aux activits d'une organisation MODLISATION DES DONNES Analyse des informations manipules dans l'organisation avec reprsentation formelle de leur nature et leur structuration IMPLMENTATION DES DONNES Utilisation d'un systme de gestion de base de donnes (SGBD), et d'un langage de manipulation des donnes (norme SQL 1) FOCALISATION SUR LA BASE DE DONNES DANS CETTE PRSENTATION

SQL : structured query language, langage de requtes structur Introduction aux systmes d'information - Page 5

SYSTME D'INFORMATION : VUE PRATIQUE


A QUELLES SITUATIONS DE LA COOPRATIVE CELA CORRESPOND ? PRINCIPALES ACTIVITS DU CT DES FOURNISSEURS Enregistrement d'un nouveau lot, fournisseur ou produit DU CT DES CLIENTS Enregistrement d'une vente, d'un nouveau client, EN INTERNE Mise jour du prix d'un produit, rapports, tat du stock, etc.

SUIVI GNRAL EXEMPLES DE QUESTIONS Quel est le prix du kilogramme de pomme ? Quelle est l'adresse de De La Rue ? Y-a-t-il des choux de Chine en stock ? Et combien ? A qui correspond le numro de tlphone 01.44.08.16.01 ? Combien de lgumes sont rpertoris ? Quand est-ce que King King a livr des carottes ? Combien de lots de brocolis a-t-on enregistr cette anne ? Quel est le poids moyen des ventes de carottes ? Y-a-t-il un fruit dont le prix dpasse 10 euros ? Quels sont les producteurs situs dans les Yvelines ? Quel est le plus gros stock de produit actuel ? LE SYSTME D'INFORMATION DOIT RPONDRE TOUS LES BESOINS, QUI DOIVENT TRE EXAMINS AVANT SA CRATION ( ANALYSE DES BESOINS )

Introduction aux systmes d'information - Page 6

PRINCIPES DES BASES DE DONNES Modlisation des donnes Modle entit-association Modle relationnel

Introduction aux systmes d'information - Page 7

MODLISATION DES DONNES


QUELLES SONT LES INFORMATIONS MANIPULES ?

MODLISATION DONNES : INFORMATIONS CORRESPONDANT DES LMENTS RELS exemples : un client, un produit, un fournisseur, un lot, une vente INVENTAIRE DES LMENTS RELS ( ENTITS ) liste des donnes lmentaires 1 rattaches ( attributs ) exemple : produit avec numro, nom, type (lgume ou fruit), prix REPRSENTATION DE CHAQUE INFORMATION ( FORMAT ) utilisation de types de donnes lmentaires (texte, nombre, etc.) exemple : le nom d'un produit est un texte IDENTIFICATION DES DPENDANCES ENTRE LES ENTITS ( RELATIONS) exemple : une vente s'applique un seul produit et un seul client, avec une date et un prix associs LA MODLISATION DES DONNES INTERVIENT DANS LA PREMIRE TAPE DE LA CONCEPTION DU SYSTME D'INFORMATION (MODLE CONCEPTUEL ENTIT-ASSOCIATION 2 PRSENT ICI)

Une donne lmentaire ou atomique, correspond une valeur simple (nombre, texte, date, etc.) et non pas une valeur multiple (liste, ensemble, etc.) 2 En anglais : entity-relationship model, traduit aussi par modle entit-relation Introduction aux systmes d'information - Page 8

DONNE DU PRODUIT
MODLISATION DE L'ENTIT PRODUIT 1

COMMENT REPRSENTER UN PRODUIT ? DE QUOI A-T-ON BESOIN ? Le nom du produit, exemple : carotte Connatre son type, lgume ou fruit, exemple : lgume Connatre son prix de vente (1 kilogramme), exemple : 1 euro COMMENT IDENTIFIER UN PRODUIT DE MANIRE UNIQUE ? Identification possible avec son nom mais risque d'ambigut, donc plus fiable avec un numro d'ordre associ REPRSENTATION PAR LES ATTRIBUTS 1) numro : nombre entier, l' identificateur 2 2) nom : texte 3) type : texte, soit LEGUME, soit FRUIT 4) prix : nombre entier en centimes 3, exemple : 100 (1 euro) MODLISATION Reprsentation de l'entit produit

Conventions du modle entit-association 4: entit rectangle, attribut ovale, identificateur

soulign

1 2

La reprsentation est bien sr simplifie ici, dans le cadre de cette prsentation. Dans le modle entit-relation , l' identificateur identifie de manire unique une entit ; il correspond un ou plusieurs attributs. 3 Notation en centimes afin de simplifier les manipulations (pas de partie dcimale) 4 Schma ralisable avec le logiciel Dia gratuit et libre pour Windows et Linux, avec le jeu de symboles ER du modle entit-association , et disponible en : http://live.gnome.org/Dia Introduction aux systmes d'information - Page 9

DONNE DE LA PERSONNE
UNE PERSONNE EST SOIT UN PRODUCTEUR, SOIT UN ACHETEUR

COMMENT REPRSENTER UNE PERSONNE ? DE QUOI A-T-ON BESOIN ? La nom de la personne exemple : De La Rue Connatre son adresse dont notamment le code postal et la ville, exemple : 80, bd. J. Jaurs - 92110 - Clichy Connatre son numro de tlphone exemple : 01.47.15.30.00 COMMENT IDENTIFIER UNE PERSONNE DE MANIRE UNIQUE ? Identification avec un numro d'ordre associ REPRSENTATION PAR LES ATTRIBUTS 1) numro : nombre entier, l' identificateur 2) nom : texte 3) adresse : texte 4) code postal : texte 5) ville : texte 6) tlphone : texte MODLISATION Reprsentation de l'entit personne

Introduction aux systmes d'information - Page 10

ENTITS ET BASE DE DONNES


CAS DES ENTITS PRODUIT ET PERSONNE TRADUCTION D'ENTIT DANS LA BASE DE DONNES Dfinition d'une table 1 pour une entit, avec une colonne 2 par attribut et une ligne par lment de donne ( n-uplet 3) L'identificateur est appel la clef ; il est automatiquement cr un index associ dans la base pour la gestion des donnes 4 Le schma de la table indique le nom de la table et la liste des attributs, avec la spcification des caractristiques de chacun : - indication si c'est la clef 5 - type de ses valeurs ( domaine ) SCHMA DE LA TABLE PRODUIT 1) numero : nombre entier (clef) 2) nom : texte, d'au plus 40 caractres 3) type : texte, soit LEGUME, soit FRUIT 4) prix : nombre entier SCHMA DE LA TABLE PERSONNE 1) numero : nombre entier (clef) 2) nom : texte, d'au plus 40 caractres 3) adresse : texte, d'au plus 60 caractres 4) code_postal : texte, de 5 caractres 5) ville : texte, d'au plus 40 caractres 6) telephone : texte, de 14 caractres UNE BASE DE DONNE EST UN ENSEMBLE DE TABLES

1 2

Une table est aussi appele une relation (vocabulaire du modle relationnel) Un attribut s'appelle aussi un champ ; ici, un nom d'attribut dans la table est par prcaution not sans accents et en remplaant tout espace par un trait de soulign ( _ ) afin d'viter des anomalies dans les traitements informatiques 3 L'lment de la table ou n-uplet s'appelle aussi un enregistrement, et tuple en anglais. 4 Cet index permet de retrouver rapidement un enregistrement partir de sa clef 5 Si l'identificateur de l'entit est compos de plusieurs attributs, chacun de ses attributs est alors indiqu comme dfinissant la clef. Introduction aux systmes d'information - Page 11

TABLES PRODUIT ET PERSONNE


EXEMPLES DE REPRSENTATION DANS LA BASE DE DONNES

EXEMPLE POUR LA TABLE PRODUIT


produit numero nom type LEGUME 1 2 3 4 5 6 7 CAROTTE BROCOLIS PANAIS KIWI CHOU DE CHINE POMME POIRE X X X X X X X FRUIT 100 200 300 220 250 160 190 prix

EXEMPLE POUR LA TABLE PERSONNE


personne numero 1 2 3 4 5 6 nom adresse code_postal 93100 75013 95200 92110 78000 75020 ville telephone

DE LA RUE 9, rue Convention KING KING 1, place d'Italie LILI CESAR TAO MOMO 3, rue Rsistance 80, bd. J. Jaurs 1, avenue de Paris 6, place Gambetta

MONTREUIL 01.48.70.60.00 PARIS 01.44.08.13.13

SARCELLES 01.34.38.20.00 CLICHY 01.47.15.30.00

VERSAILLES 01.30.97.80.00 PARIS 01.43.15.20.20

Introduction aux systmes d'information - Page 12

DONNE DE LA VENTE
LA VENTE D'UN PRODUIT UNE PERSONNE

COMMENT REPRSENTER UNE VENTE ? CARACTRISATION D'UNE VENTE Association entre entits : un produit est vendu une personne, une date, avec une quantit, et un prix ventuellement diffrent du prix du produit (exemple : rduction) Identification impossible de manire unique avec ces informations : identification par un numro d'ordre REPRSENTATION Association entre un produit et une personne avec les attributs : 1) 2) 3) 4) numro : nombre entier, l' identificateur quantit : nombre entier de kilogrammes achets prix : nombre entier du prix pay en centimes date : de la vente
DE L'ASSOCIATION VENTE

MODLISATION

Dtermination du nombre d'associations possibles ( cardinalit) pour chacune des entits, sous la forme minimum : maximum Exemple : un produit peut ne pas tre vendu ou tre vendu N fois 1 soit la cardinalit 0:N

Conventions du modle entit-association : relation losange avec les attributs propres de l'association et avec les cardinalits notes sur les branches d'entits

N dsigne ici un nombre non limit a priori, c'est--dire plusieurs fois. Introduction aux systmes d'information - Page 13

ASSOCIATION VENTE ET BASE DE DONNES


CAS DE L'ASSOCIATION DE LA VENTE TRADUCTION DANS LA BASE DE DONNES Dfinition d'une table pour l'association, o chaque entit implique est reprsente par sa clef ; ici, clefs d'entits associes : numro de produit et numro de personne (l'acheteur) Schma de la table vente : 1) numero : nombre entier (clef) 2) produit : numro d'identification dans la table produit 3) acheteur : numro d'identification dans la table personne 4) quantite : nombre entier de kilogrammes achets 5) prix : nombre entier du prix pay en centimes 6) date : de la vente EXEMPLE DE DONNES Exemple : vente n 1 de 30 Kg de brocolis Lili le 27/12/2005 au prix de 1 90 le kilogramme
vente numero 1 2 produit numero 1 2 personne numero 1 2 3 nom adresse code_postal 93100 75013 95200 ville PARIS telephone 01.44.08.13.13 DE LA RUE 9, rue Convention KING KING 1, place d'Italie LILI 3, rue Rsistance MONTREUIL 01.48.70.60.00 SARCELLES 01.34.38.20.00 CAROTTE BROCOLIS nom X X type LEGUME FRUIT 100 200 prix produit 2 3 acheteur 3 3 quantite 30 3 prix 190 250 date 2005-12-27 2005-12-28

Introduction aux systmes d'information - Page 14

ASSOCIATION ET BASE DE DONNES


TRADUCTION DANS LE MODLE RELATIONNEL CAS GNRAL D'UNE ASSOCIATION SANS CARDINALIT 1:1 Association reprsente par une table, o chaque entit implique dans l'association y est reprsente par sa clef en tant qu'attribut Exemple : association est vendu

CAS PARTICULIER D'ASSOCIATION CARDINALIT 1:1 Association reprsente dans l'entit cardinalit 1:1, par l'identificateur de l'autre entit lie en tant qu'attribut Exemple : association fournit

CLEF PRIMAIRE ET CLEF TRANGRE La clef reprsentant une entit dans la table d'une association est appele clef trangre par opposition la clef primaire servant d'identificateur dans la table de l'entit 1 Exemple : acheteur est une clef trangre dans la table vente, numro est la clef primaire dans la table personne

UNE ASSOCIATION EST REPRSENTE EN GNRAL PAR UNE TABLE, SAUF DANS LE CAS OU UNE DES BRANCHES PORTE UNE CARDINALIT 1:1

Une clef trangre est aussi appele clef externe et une clef primaire clef de relation Introduction aux systmes d'information - Page 15

DONNE DU LOT
UN LOT CORRESPOND ICI UN SEUL PRODUIT COMMENT REPRSENTER UN LOT ? CARACTRISATION D'UN LOT Une entit en double association avec produit et personne : un lot contient un produit, et il est fourni par une personne (producteur) Il faut aussi connatre la taille initiale du lot, la taille du reste (pas encore vendu), la date de la fourniture et le prix d'achat (pour 1 kg) Exemple : lot de 450 Kg de carottes entirement vendus, fourni par De La Rue le 29 dcembre 2005 au prix de 70 centimes le kg COMMENT IDENTIFIER UN LOT DE MANIRE UNIQUE ? Impossible de manire unique avec les informations identification par un numro d'ordre MODLISATION

CAS PARTICULIER D'ASSOCIATIONS AVEC UNE CARDINALIT 1:1 UN LOT EST COMPOS D'EXACTEMENT 1 PRODUIT, UN LOT EST FOURNI PAR EXACTEMENT 1 PRODUCTEUR

Introduction aux systmes d'information - Page 16

LOT DANS LA BASE DE DONNES


ENTIT lot EN ASSOCIATION AVEC produit ET personne REPRSENTATION REPRSENTATION DANS LA BASE DE DONNES Associations fournit et compose avec une cardinalit 1:1 Schma de la table lot : 1) numero : nombre entier unique d'identification (clef) 2) produit : numro d'identification dans la table produit 3) producteur : numro d'identification dans la table personne 4) taille_initiale : nombre entier de kg (taille la livraison) 5) taille_reste : nombre entier de kg (pas encore vendus) 6) prix : nombre entier en centimes, correspondant au prix d'un kilogramme achet au producteur 7) date : de la fourniture EXEMPLE DE DONNES Le lot n 1 : 450 Kg de carottes entirement vendus , achets au prix de 70 centimes le kilogramme, le 29 dcembre 2005 De La Rue
lot
numero produit 1 2 3 produit numero 1 2 personne numero 1 2 3 nom adresse code_postal 93100 75013 95200 ville PARIS telephone 01.44.08.13.13 DE LA RUE 9, rue Convention KING KING 1, place d'Italie LILI 3, rue Rsistance MONTREUIL 01.48.70.60.00 SARCELLES 01.34.38.20.00 CAROTTE BROCOLIS nom X X type LEGUME FRUIT 100 200 prix 1 3 1 producteur 1 2 2 taille_initiale 450 100 300 taille_reste 0 0 110 prix 70 300 60 date 2005-12-29 2005-12-29 2005-12-30

Introduction aux systmes d'information - Page 17

MODLISATION DE LA COOPRATIVE
MODLE DE DONNES

Introduction aux systmes d'information - Page 18

EXERCICE DE MODLISATION
LA COOPRATIVE OFFRE DES PROMOTIONS SOUS LA FORME D'UN
PANIER DE 2 PRODUITS, AVEC UN PRIX ATTRACTIF AU KILOGRAMME

EXEMPLE : LE PANIER PURE HIVERNALE , 3,2 EUROS,


COMPOS DE 1 KG DE CAROTTES ET DE 1 KG DE PANAIS

1) PROPOSER UNE MODLISATION DE CE PANIER

2) QUELLES SONT LES CONSQUENCES SUR LES AUTRES ENTITS ?

Introduction aux systmes d'information - Page 19

REDONDANCE DES DONNES


DUPLICATION INUTILE DE DONNES CAS DE REDONDANCE EXEMPLE On dfinit un rfrent unique pour toute personne enregistre, qui correspond un employ de la cooprative en contact avec elle, identifi par le nom de cet employ et son poste tlphonique Si on rajoute ces attributs dans la table personne :
personne numero 1 2 3 nom DE LA RUE KING KING LILI ... telephone referent GERARD GARANCE GARANCE poste 223 222 222 ... 01.48.70.60.00 ... 01.44.08.13.13 ... 01.34.38.20.00

on voit apparatre rapidement une duplication d'information inutile et dangereuse car si par exemple le poste tlphonique d'un rfrent change, il faut alors rpercuter la modification chaque rptition CONSQUENCES Gchis de mmoire en cas de rptitions nombreuses Risques levs d'incohrence lors de mises jour incompltes ANALYSE Cas gnral de dpendance fonctionnelle entre 2 attributs d'un enregistrement : la connaissance de la valeur du premier attribut entrane la dtermination du second attribut de manire unique Exemple : si on connat le nom du rfrent, on peut trouver le poste SOLUTION Elimination des dpendances fonctionnelles par dcomposition de l'entit en plusieurs entits ; exemple :

LA REDONDANCE EST A PRIORI UN DFAUT DANS UNE BASE DE DONNES

Introduction aux systmes d'information - Page 20

INCOHRENCE DES DONNES


CAS O LES DONNES ENREGISTRES SONT INCORRECTES

CAS D'INCOHRENCE EXEMPLE Cas o un lot fait rfrence un produit non enregistr
lot
numero produit 1 2 3 produit numero 1 2 4 CAROTTE BROCOLIS KIWI nom X X X type LEGUME FRUIT 100 200 220 prix 1 producteur 1 2 2 taille_initiale 450 100 300 taille_reste 0 0 110 prix 70 300 60 date 2005-12-29 2005-12-29 2005-12-30

3
1

CAUSE POSSIBLE Suppression de l'enregistrement n 3 dans la table produit MODLISATION EXEMPLE Toute rfrence un produit doit exister dans la table produit CONTRAINTE D'INTGRIT RFRENTIELLE Toute valeur d'une clef trangre doit exister pour la clef primaire

LA COHRENCE EST UNE QUALIT INDISPENSABLE DES BASES DE DONNES

Introduction aux systmes d'information - Page 21

EXERCICE DE MODLISATION

DANS LE CADRE DU SYSTME D'INFORMATION DE LA COOPRATIVE,


INDIQUER LES CONTRAINTES D'INTGRIT RELATIONNELLE

EXISTE-T-IL D'AUTRES CONTRAINTES DE COHRENCE ? LESQUELLES ?

Introduction aux systmes d'information - Page 22

UTILISATION DES BASES DE DONNES Langage SQL Outils EasyPHP et phpMyAdmin Dfinition de la structure d'une base Langage de manipulation des donnes

Introduction aux systmes d'information - Page 23

INTRODUCTION
UTILISATION DES BASES DE DONNES 1 SQL 2, UN LANGAGE POUR LES BASES DE DONNES LANGAGE SIMPLE ET NORMALIS Destin faciliter les manipulations de donnes Fond sur le modle relationnel de bases de donnes Ecriture d'une commande sous la forme d'une requte PRINCIPALES FONCTIONS a) Dfinition de la structure d'une base (schmas de tables, etc.) b) Manipulation des donnes (recherche, ajout, mise jour, etc.) OUTILS ASSOCIS SYSTME DE GESTION DE BASE DE DONNES (SGBD) Ensemble de logiciels grant des bases de donnes, exemple : MySQL (SGBD libre trs utilis sur le Web) 3

PROGRAMMATION Interfaage avec les principaux langages : Java, PHP, C++, etc. UTILISATION SUR LE WEB Serveur Web + SGDB + interfaces de programmation + ... Exemple : Apache + MySQL + PHP + phpMyAdmin EasyPHP (Windows) ou MAMP (Mac OS X)
1 2

En anglais, une base de donne se dit database. SQL : structured query language, un langage de requtes structures ; prsentation ici des bases de la version 2 de 1992 ou SQL-92. 3 Autres SGBD rpandus : Oracle, PostgreSQL, Access, etc. Introduction aux systmes d'information - Page 24

CAS DE EASYPHP SOUS WINDOWS


APERU DE LA VERSION 3.0 D'EASYPHP (http://www.easyphp.org/ 1) CARACTRISTIQUES GNRALES UN ENVIRONNEMENT COMPLET SOUS WINDOWS libre de droits pour un usage non commercial serveur Apache + moteur PHP + SGBD MySQL + PhpMyAdmin ADMINISTRATION SIMPLIFIE manipulations facilites via un navigateur outil PhpMyAdmin pour l'administration des bases de donnes INSTALLATION APPLICATION EASY-PHP environnement complet en C:\Program Files\Easy-PHP... lancement par DMARRER PROGRAMMES ... EASYPHP 2 icne droite dans la barre de tches vrification du fonctionnement par consultation du site local adresse : http://localhost/ ou http://127.0.0.1/ 3 UTILISATION DE L'ICNE EN BAS DROITE clic-doit : menu de commande page d'administration : ADMINISTRATION accs au dossier des pages : EXPLORER redmarrage des serveurs : REDMARRER arrt des serveurs : ARRTER double-clic sur l'icne : tat courant

ATTENTION ! PRSENTATION RAPIDE D'EASYPHP POUR UN USAGE PERSONNEL, INTERMITTENT ET NON PERMANENT AUTRE SERVEUR GRATUIT POUR MAC OS X : MAMP 4
1 2

A AgroParisTech, dans la bote outils de Gaia : https://gaia.agroparistech.fr/ En salle d'informatique AgroParisTech, commande dans le sous-menu INFO et puis au message VOUS N'TES PAS ADMINISTRATEUR... CONTINUER ? confirmer par OUI. Sous Windows Vista et 7, il faut lancer l'application en mode administrateur : clic-droit sur l'icne de raccourci vers le programme et EXCUTER EN TANT QU'ADMINISTRATEUR. 3 localhost et 127.0.0.1 : adresses pour dsigner le poste courant dans l'Internet 4 MAMP disponible en : http://www.mamp.info/ Introduction aux systmes d'information - Page 25

RGLAGES DE EASYPHP
DOSSIERS POUR LES PAGES WEB ET LES BASES DE DONNES 1 APACHE ACCS AU FICHIER DE CONFIGURATION httpd.conf 2 Clic-doit sur l'icne d'EasyPHP puis CONFIGURATION APACHE RGLAGE DU DOSSIER SPCIFIQUE AUX PAGES WEB Cration d'un dossier 3, exemple : D:\easyphp\www Remplacements dans le texte du fichier de configuration de : DocumentRoot "${path}/www" par : DocumentRoot "D:/easyphp/www" de : <Directory "${path}/www"> par : <Directory "D:/easyphp/www"> MYSQL ACCS AU FICHIER DE CONFIGURATION my.ini 4 Clic-doit sur l'icne d'EasyPHP puis CONFIGURATION MYSQL RGLAGE DU DOSSIER SPCIFIQUE AUX BASES DE DONNES Cration d'un dossier 3, exemple : D:\easyphp\data Remplacements dans le texte du fichier de configuration de : datadir=${path}/mysql/data/ par : datadir=D:/easyphp/data/ Attention ! sous-dossier mysql copier dans le dossier D:\easyphp\data partir du dossier : C:\Program Files\Easy-PHP...\mysql\data Ne pas oublier de relancer le serveur aprs toute modification : clic-doit sur l'icne d'EasyPHP puis REDMARRER RECONFIGURATIONS NON INDISPENSABLES MAIS CONSEILLES 5

1 2

Dans les salles d'informatique d'AgroParisTech : c'est dj rgl en N:\www et N:\data Ce fichier httpd.conf est en fait dans le dossier C:\Program Files\Easy-PHP...\conf_files\ 3 A priori, en dehors du dossier des programmes sous Windows (C:\Program Files) 4 Ce fichier my.ini est en fait dans le dossier C:\Program Files\Easy-PHP...\conf_files\ 5 Afin de limiter la perte de donnes en cas de modification du logiciel et de faciliter leurs sauvegardes Introduction aux systmes d'information - Page 26

OUTIL PHPMYADMIN
ADMINISTRATION DES BASES DE DONNES AVEC MYSQL LANCEMENT DANS EASYPHP clic-droit sur l'icne d'EasyPHP puis ADMINISTRATION et GESTION BDD ou dans le navigateur l'adresse : http://localhost/mysql/ 1

VRIFICATION DES DROITS D'UTILISATION ( PRIVILGES ) Onglet PRIVILGES dans la page de phpMyAdmin

Ici l'utilisateur root dispose de tous les droits sur les bases, et a besoin d'un mot de passe pour s'identifier 2
PHPMYADMIN : MANIPULATIONS INTERACTIVES DES BASES DE DONNE

1 2

Autre forme valide de l'adresse : http://127.0.0.1/mysql/ (ne pas oublier la barre / finale) L'absence de mot de passe est une situation viter sur un poste usage strictement personnel, et c'est inacceptable sur un vrai serveur (possibilit de piratage) ; dans Easy-PHP, le mot de passe est connu par PHPMyAdmin et on est automatiquement l'utilisateur root (terme du jargon des serveurs dsignant l'administrateur du serveur disposant de tous les droits) Introduction aux systmes d'information - Page 27

CRATION D'UNE BASE


CAS DE LA BASE POUR LA COOPRATIVE

CRATION DE LA BASE AVEC PHPMYADMIN FORMULAIRE DANS LA PAGE D'ACCUEIL (RETOUR VIA LE BOUTON Indiquer le nom 1 de la base CRER UNE BASE DE DONNES )

puis a priori ne pas tenir compte de INTERCLASSEMENT et valider avec le bouton CRER

CRATION DE LA BASE EN SQL COMMANDE CREATE DATABASE Syntaxe de la requte 2 : CREATE Exemple : CREATE
DATABASE coop DATABASE nom

CRATION D'UNE NOUVELLE BASE, VIDE

Un nom de base est a priori constitu d'un maximum de 64 lettres, chiffres ou trait de soulign ( _ ) tout en commenant par une lettre ; il est conseill d'viter les lettres accentues 2 Par convention les noms de commandes dfinis dans le langage SQL sont crits en lettres majuscules mais en fait les SGBD ne font pas la diffrence entre les majuscules et les minuscules : on peut donc taper la requte avec les noms de commande crits en minuscules Introduction aux systmes d'information - Page 28

CRATION D'UNE TABLE AVEC PHPMYADMIN


CAS DE LA TABLE produit DE LA BASE coop FORMULAIRE DANS LA PAGE DE LA BASE Indiquer le nom 1 de la table CRER UNE NOUVELLE TABLE... et le nombre de champs de la table

puis valider avec le bouton EXCUTER

FORMULAIRE DE DFINITION DES CHAMPS DE LA TABLE Dfinition de chaque champ de la table partir de la modlisation

selon les indications suivantes :


numero : Type INT , attribut UNSIGNED , index PRIMARY car clef, et cocher A_I (auto_increment) pour affectation automatique du n d'ordre nom : Type VARCHAR , Taille 40 et on considre la valeur obligatoire 2 type : Type ENUM , Valeurs 'LEGUME','FRUIT' , valeur obligatoire prix : Type INT , attribut UNSIGNED , Dfaut Tel que dfini et 0 afin de placer automatiquement la valeur zro si le prix est inconnu

puis aprs vrifications, terminer en cliquant sur SAUVEGARDER

Un nom de table est a priori constitu d'un maximum de 64 lettres, chiffres ou trait de soulign ( _ ) tout en commenant par une lettre ; il est conseill d'viter les lettres accentues 2 Dans le cas de valeur obligatoire (not null), le champ doit comporter une valeur et le SGBD refusera un ajout si la valeur est absente ; attention ! la chane vide ( '' ) constitue une valeur. Introduction aux systmes d'information - Page 29

CRATION D'UNE TABLE EN SQL


DFINITION D'UN CHAMP Un champ est dfini par : nom 1, type et complments ventuels Principaux types de champ nombre entier : INTEGER avec signe, ou INTEGER UNSIGNED sans 2 synonyme possible de INTEGER : INT possibilit d'un nombre entier rduit : SMALLINT 3 nombre dcimal : DECIMAL(prcision, dcimales) avec indication du nombre maximal de chiffres (prcision) dont ceux aprs la virgule dcimale (dcimales) synonymes possibles de DECIMAL : DEC ou NUMERIC cas de calculs financiers avec une prcision au chiffre prs exemple : DECIMAL(5,2) pour une valeur entre -999,99 et 999,99 nombre rel : FLOAT ou DOUBLE PRECISION (prcision maximale) cas de calculs scientifiques sans ncessit d'exactitude 4 texte : VARCHAR(taille) avec au-maximum taille caractres valeur parmi une liste de possibilits : ENUM(liste) date : DATE Principaux complments incrmentation automatique (MySQL) : AUTO_INCREMENT le SGBD MySQL attribue automatiquement un numro d'ordre au champ si la valeur indique est vide ou nulle indication de valeur obligatoire : NOT NULL NULL dsigne l'absence de valeur et non pas une valeur nulle (0) valeur choisie en absence de dfinition : DEFAULT valeur DFINITION DE LA CLEF Indication du champ de la clef 5 : PRIMARY KEY (champ) ou s'il s'agit de plusieurs champs : PRIMARY KEY (liste de champs)

Un nom de champ est a priori constitu d'un maximum de 64 lettres, chiffres ou trait de soulign ( _ ) tout en commenant par une lettre ; il est conseill d'viter les lettres accentues 2 MySQL offre la possibilit d'indiquer un nombre maximal de chiffres lors de la dfinition mais cela n'est pas dans la norme de SQL et ne concerne que l'affichage et non le stockage de la valeur. 3 A priori, la plage de valeurs d'un nombre entier ordinaire s'tend de - 2 147 483 648 2 147 483 647 ou de 0 4 294 967 295 si sans signe (codage sur 4 octets) ; dans le cas d'un entier rduit, l'intervalle est de - 32 768 32 767 ou de 0 65 535 (codage sur 2 octets). 4 Par rapport au type DECIMAL, le type FLOAT ne garantit pas l'exactitude des calculs au chiffre prs mais ceux-ci sont effectus plus rapidement. 5 Si la clef est sur un seul champ, MySQL autorise son indication en complment de la dfinition du champ par la notation PRIMARY KEY Introduction aux systmes d'information - Page 30

CRATION D'UNE TABLE EN SQL (SUITE)


PRINCIPALES NOTATIONS DE VALEURS nombre entier : 1235 -69 nombre rel : 3.14159 -1.8E3 texte not par une chane de caractres entre apostrophes 1 :
'Carotte' 'aujourd''hui' '' (cas du texte vide)

date (anne-mois-jour 2) : '2009-01-07' ou '2009-1-7' liste (valeurs spares par une virgule) : 'LEGUME','FRUIT' avec la possibilit d'ajouter des espaces autour de la virgule COMMANDE DE CRATION EN SQL : CREATE TABLE Syntaxe de la requte
CREATE TABLE nom (liste des dfinitions de champ et de la clef)

possibilit d'ajouter des espaces ou des retours la ligne dans la notation afin de l'arer et de faciliter la lecture 3 Exemple (MySQL)
CREATE TABLE produit ( numero INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nom VARCHAR(40) NOT NULL, type ENUM('LEGUME','FRUIT') NOT NULL, prix INTEGER UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (numero) )

COMMANDE D'INFORMATION SUR UNE TABLE EN SQL : SHOW FIELDS Syntaxe de la requte
SHOW FIELDS FROM nom

Exemple (MySQL)
SHOW FIELDS FROM produit

1 2

Si le texte comporte une apostrophe, il faut alors la doubler ; la chane vide ( '' ) est une valeur. Notation internationale d'une date ( anne-mois-jour ) permettant un classement des dates par comparaison un un des symboles du texte de leurs notations. 3 Attention ! pas de retour la ligne l'intrieur des apostrophes ( ' ) d'une chane de caractres . Introduction aux systmes d'information - Page 31

AJOUT DE DONNES
INSERTION D'UN ENREGISTREMENT DANS UNE TABLE DE LA BASE

INSERTION DANS UNE TABLE AVEC PHPMYADMIN Utiliser l'onglet INSRER

remplir les zones pour un enregistrement (avec 0 pour la clef 1) puis valider avec le bouton EXCUTER

INSERTION DANS UNE TABLE AVEC SQL COMMANDE INSERT Syntaxe de la requte
INSERT INTO table (liste de champs) VALUES (liste de valeurs)

Exemple
INSERT INTO produit (numero, nom, type, prix ) VALUES (0, 'CAROTTE', 'LEGUME', 100)

Convention dans le cas d'une incrmentation automatique par MySQL. Introduction aux systmes d'information - Page 32

MISE JOUR DE DONNES


MODIFICATION D'UN ENREGISTREMENT DANS UNE TABLE DE LA BASE

MISE JOUR DANS UNE TABLE AVEC PHPMYADMIN Afficher les enregistrements et utiliser le bouton

modifier dans le formulaire puis valider avec le bouton EXCUTER MISE JOUR DANS UNE TABLE AVEC SQL COMMANDE UPDATE Syntaxes de la requte (versions simplifies 1)
UPDATE table SET champ1 = valeur1 WHERE clef = valeur UPDATE table SET champ1 = valeur1

(mise jour de tous les enregistrements)

UPDATE table SET champ1 = valeur1, champ2 = valeur2, ... WHERE clef = valeur

Exemples
UPDATE produit SET prix = 110 WHERE numero = 1 UPDATE produit SET nom = 'KIWI', type = 'FRUIT', prix = 110 WHERE numero = 1

La condition suivant le mot-clef WHERE peut en fait tre plus dveloppe (cf. page 36) et la modification peut alors s'appliquer plusieurs enregistrements (et non plus un seul). Introduction aux systmes d'information - Page 33

SUPPRESSION DE DONNES
SUPPRESSION D'UN ENREGISTREMENT DANS UNE TABLE DE LA BASE SUPPRESSION DANS UNE TABLE AVEC PHPMYADMIN Afficher les enregistrements et utiliser le bouton

puis confirmer la demande de suppression SUPPRESSION DANS UNE TABLE AVEC SQL COMMANDE DELETE Syntaxe de la requte (version simplifie 1)
DELETE FROM table WHERE clef = valeur

Exemples
DELETE FROM produit WHERE numero = 2

La clef d'un enregistrement supprim n'est a priori pas rutilise pour un nouvel enregistrement afin d'viter une confusion IL PEUT DONC Y AVOIR DES VALEURS ABSENTES POUR UNE CLEF SI NUMRO, EXEMPLE : 1 3 4 5 6 ... (2 SUPPRIM)

La condition suivant le mot-clef WHERE peut en fait tre plus dveloppe (cf. page 36) ; par ailleurs, si la commande est rduite la forme DELETE FROM table, la table entire est alors efface, vide. Introduction aux systmes d'information - Page 34

RECHERCHE DE DONNES AVEC PHPMYADMIN


RECHERCHE SIMPLE D'ENREGISTREMENTS DANS UNE TABLE DE LA BASE RECHERCHE DANS UNE TABLE AVEC PHPMYADMIN EXEMPLE N 1 :
TROUVER TOUS LES LGUMES

Choisir la table puis utiliser l'onglet RECHERCHER 1) Indication des champs rcuprer a priori, slection de tous les champs de la table

2) Indication de la question

ici, les enregistrements avec le champ type valant LEGUME et enfin valider avec le bouton EXCUTER Le rsultat est prsent sous la forme d'une table EXEMPLE N 2 :

TROUVER TOUS LES NOMS DES FRUITS

UNE RECHERCHE DANS LA BASE RENVOIE UNE TABLE DE DONNES

Introduction aux systmes d'information - Page 35

RECHERCHE DE DONNES AVEC SQL


RECHERCHE SIMPLE D'ENREGISTREMENTS DANS UNE TABLE DE LA BASE COMMANDE SELECT Syntaxes de la requte (versions simplifies 1)
SELECT * FROM table

(tous les champs de tous les enregistrements)


SELECT liste de champs FROM table

(les seuls champs indiqus dans la liste, pour tous les enregistrements)
SELECT * FROM table WHERE restriction

(tous les champs de certains enregistrements)


SELECT liste de champs FROM table WHERE restriction

(les seuls champs indiqus dans la liste, pour certains enregistrements)

RESTRICTION DE COMMANDE (CAS SIMPLE) Application d'une commande limite certains enregistrements Expression sous la forme d'une condition une comparaison entre champ(s) et valeur(s) avec
= > >= < <= != (diffrence)

la correspondance avec un texte gnrique 2 : LIKE 'motif' o motif peut contenir % (aucun ou toute suite de caractres), ou tout ce qui ne correspond pas au motif : NOT LIKE 'motif' Syntaxe de la restriction (cas simple)
WHERE champ comparaison valeur WHERE champ LIKE 'motif'

ou

WHERE champ NOT LIKE 'motif'

EXEMPLES
SELECT * FROM produit WHERE type = 'LEGUME'

(tous les lgumes, avec tous les champs dans la table)


SELECT nom FROM produit WHERE type = 'FRUIT'

(tous les noms de fruits)


SELECT nom, prix FROM produit WHERE prix >= 300

(le nom et le prix des produits de prix au-moins gal 3 )


SELECT nom FROM produit WHERE nom LIKE '%CHOU%'

(tous les noms contenant le mot CHOU )

1 2

D'autres formes plus complexes de la commande existent ; les principales seront prsentes ci-aprs. A priori (norme SQL), la comparaison tient compte de la casse des lettres ( a et A distincts) mais MySQL n'en tient pas compte de fait. Introduction aux systmes d'information - Page 36

RECHERCHE DE DONNES AVEC SQL (SUITE)


CAS DE RESTRICTIONS PLUS COMPLEXES RESTRICTION DE COMMANDE (COMPLMENTS) Une restriction peut aussi contenir une ngation :
terme AND terme terme OR terme NOT terme

ou

! terme

une combinaison logique :


( et , conjonction) ( ou , disjonction)

l'appartenance un intervalle de valeurs (bornes comprises) :


terme BETWEEN valeurmin AND valeurmax

la prsence, ou l'absence, parmi une liste de valeurs : terme IN (valeur1, valeur2, ...) terme NOT IN (valeur1, valeur2, ...) Un terme peut contenir un champ de la table une valeur (nombre ou texte) un calcul arithmtique entre deux termes : avec le parenthsage possible : ( ) une fonction de manipulation de texte :
CHARACTER_LENGTH(terme) (nombre de caractres) LOWER(terme) ou UPPER(terme) (passage en minuscules ou majuscules) TRIM(terme) (limination des espaces au dbut et la fin) + * /

EXEMPLES
SELECT nom, prix FROM produit WHERE prix BETWEEN 200 AND 499

(le nom et le prix des produits dont le prix est compris entre 2 et 4,99 )
SELECT nom, prix FROM produit WHERE type = 'LEGUME' AND (nom LIKE '%CHOU%' OR nom = 'BROCOLIS')

(le nom et le prix des lgumes qui sont un chou ou le brocolis)


SELECT nom FROM produit WHERE type = 'FRUIT' AND nom NOT IN ('POIRE', 'POMME')

(le nom des fruits autres qu'une poire ou une pomme)

Introduction aux systmes d'information - Page 37

INTERROGATION EN SQL AVEC PHPMYADMIN


EXEMPLE DE REQUTE DANS LA BASE coop Utiliser l'onglet SQL

Taper la requte 1 dans la zone puis cliquer le bouton EXCUTER

affichage de la requte et de la table en rsultat En cas d'anomalie Illegal mix of collations

1) Revenir la page d'accueil de phpMyAdmin

2) A droite, rgler la zone INTERCLASSEMENT POUR LA CONNECTION MYSQL la valeur UTF8_GENERAL_CI

Si on visualise une requte cre par MySQL, il peut apparatre des accents graves ( ` ) autour de noms de table ou de champ comme par exemple : `produit` ; cette notation est spcifique MySQL et sert notamment dlimiter un nom compos de plusieurs mots (fortement dconseill). Introduction aux systmes d'information - Page 38

RECHERCHE DE DONNES AVEC SQL (SUITE)


COMPOSANTS COMPLMENTAIRES DE LA REQUTE SELECT VALEURS DISTINCTES Elimination des doublons dans les rsultats
DISTINCT

(mot placer avant la liste des champs)

Exemple
SELECT DISTINCT prix FROM produit

(tous les prix existants, mais sans rptitions)

LIMITATION Limitation du nombre de rsultats


LIMIT taille

(seulement les taille premiers rsultats) (taille rsultats aprs la position rang 1)

LIMIT saut, taille

Exemples
SELECT * FROM produit LIMIT 10

(les 10 premiers produits)


SELECT nom, prix FROM produit LIMIT 10,20

(le nom et le prix du 11

me

au 30me produits)

TRI Classement des rsultats


ORDER BY champ ou ORDER BY champ ASC (classement croissant) ORDER BY champ DESC (classement dcroissant) ORDER BY champ1, champ2, ...

(classements imbriqus)

(ORDER BY placer la fin de la requte, aprs WHERE)

Exemples
SELECT nom, prix FROM produit WHERE type = "LEGUME" ORDER BY prix LIMIT 100

(le nom et le prix des 100 premiers lgumes classs par prix croissant)
SELECT nom, prix FROM produit ORDER BY type ASC, prix DESC

(classement par type croissant, puis par prix dcroissant)

Attention, le premier rsultat pour rang zro et non pas un ! Introduction aux systmes d'information - Page 39

RECHERCHE DE DONNES AVEC SQL (FIN)


COMPOSANTS COMPLMENTAIRES DE LA REQUTE SELECT FONCTIONS D'AGRGATIONS Rsultats sous la forme de calculs effectus sur les donnes renvoyes par l'interrogation
(comptage) AVG(champ) (moyenne, average) SUM(champ) (somme) MIN(champ) ou MAX(champ) (minimum ou maximum) ( placer seulement dans la liste des champs mais pas aprs WHERE)
COUNT(champ)

Possibilit de regroupement des rsultats avant les calculs


GROUP BY champ1, champ2, ... ( placer juste aprs la restriction WHERE ...)

Exemples
SELECT COUNT(nom) FROM produit

(le nombre total de produits)


SELECT type, COUNT(nom) FROM produit GROUP BY type

(les types et le nombre total de produit pour chaque type)


SELECT AVG(prix) FROM produit WHERE type = 'LEGUME'

(le prix moyen des lgumes)


SELECT type, MAX(prix) FROM produit GROUP BY type

(le prix maximal pour chaque type de produit)


SELECT type, MIN(prix) AS min, MAX(prix) as max FROM produit GROUP BY type

( min et max des prix pour chaque type de produit)

DFINITION D'UN NOM DE CHAMP Nom affect un champ correspondant une fonction d'agrgation ou renommage d'un champ de la table
AS champ

( placer aprs le nom d'un champ ou une agrgation)

Exemples
SELECT DISTINCT type AS genre FROM produit

(liste des types de produit, dans un champ appel genre )


SELECT type, COUNT(nom) AS nombre FROM produit GROUP BY type

(les types et le nombre total de produit pour chaque type)

FORME GNRALE DE LA REQUTE SELECT 1


SELECT rsultat(s) FROM table WHERE condition GROUP BY champ(s) ORDER BY critre(s)

Attention l'ordre : si prsent, GROUP BY doit figurer aprs WHERE et avant un ventuel ORDER BY Introduction aux systmes d'information - Page 40

OPRATION DE JOINTURE
CAS D'INFORMATIONS RPARTIES DANS PLUSIEURS TABLES

EXEMPLE Liste des numros de lots avec date de vente et nom du vendeur
lot numero produit 1 2 3 1 3 1 producteur 1 2 2 taille_initiale 450 100 300 taille_reste 0 0 110 prix 70 300 60 date 2005-12-29 2005-12-29 2005-12-30

+
personne numero 1 2 3 nom adresse code_postal 93100 75013 95200 ville PARIS telephone 01.44.08.13.13 DE LA RUE 9, rue Convention KING KING 1, place d'Italie LILI 3, rue Rsistance MONTREUIL 01.48.70.60.00 SARCELLES 01.34.38.20.00

numero de lot 1 2 3

date de lot 2005-12-29 2005-12-29 2005-12-30

nom de personne DE LA RUE KING KING KING KING

JOINTURE DE TABLE regroupement de champs correspondant une mme donne

Introduction aux systmes d'information - Page 41

JOINTURE EN SQL
PREMIRE FORMULATION 1 SYNTAXE Cas d'une jointure sur deux tables
SELECT liste de champs FROM table1 , table2 WHERE table1.champ1 = table2.champ2

Cas gnral d'une jointure


SELECT liste de champs FROM table1 , table2 , ... WHERE table1.champ1 = table2.champ2 AND ...

Nom de champ prfix par sa table afin d'viter toute ambigut (facultatif si aucune ambigut sur le nom de champ)
table.champ

Possibilit de rdfinir le nom d'une table afin de simplifier l'criture FROM table AS nom ou bien simplement FROM table nom EXEMPLES
SELECT lot.numero, lot.date, personne.nom FROM lot, personne WHERE lot.producteur = personne.numero

(jointure entre les tables lot et personne, sur le nom du producteur d'un lot)
SELECT lot.numero, date, nom FROM lot, personne WHERE producteur = personne.numero

(criture simplifie de la jointure prcdente)


SELECT lot.numero, lot.date, personne.nom AS fournisseur, produit.nom AS nature FROM lot, personne, produit WHERE lot.producteur = personne.numero AND lot.produit = produit.numero

(jointure prcdente complte avec le nom du produit dans le lot et un nouvel intitul pour les champs de nom du fournisseur et du produit)
SELECT l.numero, l.date, pe.nom AS fournisseur, pr.nom AS nature FROM lot AS l, personne AS pe, produit AS pr WHERE l.producteur = pe.numero AND l.produit = pr.numero

(jointure prcdente avec abrviation des noms de table)

Cette formulation est la premire apparue historiquement. Introduction aux systmes d'information - Page 42

JOINTURE EN SQL (SUITE)


DEUXIME FORMULATION 1 SYNTAXE AVEC JOIN Cas d'une jointure sur deux tables
SELECT liste de champs FROM table1 JOIN table2 spcification de jointure

Une spcification de jointure est - soit dans le cas gnral : ON table1.champ1 = table2.champ2 - soit en cas de champs de mme nom : USING (champ) c'est--dire quivalent : ON table1.champ = table2.champ Cas gnral d'une jointure
SELECT liste de champs FROM table1 JOIN table2 spcification2 JOIN table3 spcification3 ...

EXEMPLES
SELECT lot.numero, lot.date, personne.nom FROM lot JOIN personne ON lot.producteur = personne.numero

(jointure entre les tables lot et personne, sur le nom du producteur d'un lot)
SELECT lot.numero, date, nom FROM lot JOIN personne ON producteur = personne.numero

(criture simplifie de la jointure prcdente)


SELECT lot.numero, lot.date, personne.nom AS fournisseur, produit.nom AS nature FROM lot JOIN personne ON lot.producteur = personne.numero JOIN produit ON lot.produit = produit.numero

(jointure prcdente complte avec le nom du produit dans le lot et un nouvel intitul pour les champs de nom du fournisseur et du produit)
SELECT l.numero, l.date, pe.nom AS fournisseur, pr.nom AS nature FROM lot AS l JOIN personne AS pe ON l.producteur = pe.numero JOIN produit AS pr ON l.produit = pr.numero

(jointure prcdente avec abrviation des noms de table)

Cette formulation a t introduite en SQL dans la version de 1992 ; la prsentation est ici simplifie car elle permet en fait d'exprimer plusieurs formes de jointure. Introduction aux systmes d'information - Page 43

EXPORTATION DE LA BASE
MCANISME D'EXTRACTION DU CONTENU DE LA BASE (PHPMYADMIN) PRINCIPE Cration d'un fichier conservant une image de la base utile pour effectuer une sauvegarde complte de la base ou afin de rutiliser des donnes d'une ou plusieurs tables PROCDURE DE SAUVEGARDE COMPLTE a) Slectionner la base de donnes puis l'onglet EXPORTER

b) Vrifier les rglages automatiquement actives : slection de toutes les tables de la base, EXPORTER SQL, COMMENTAIRES, STRUCTURE, DONNES c) Cocher TRANSMETTRE et choisir un mode de COMPRESSION : AUCUNE si base petite, sinon "ZIPP" en cas de gros volume d) Cliquer sur le bouton EXCUTER et enregistrer le fichier produit 1, identifi avec le nom de la base et le suffixe SQL ; exemple : coop.sql
1

Le fichier cr est au format de texte brut ; il contient toutes les commandes ncessaires la reconstitution des tables de la base, exprimes dans le langage SQL. Introduction aux systmes d'information - Page 44

IMPORTATION D'UNE BASE


MCANISME DE RCUPRATION D'UNE BASE SAUVEGARDE (PHPMYADMIN) PRINCIPE Recration d'une base prcdemment sauvegarde partir d'un fichier conservant une image de la base ou afin d'ajouter des donnes une ou plusieurs tables PROCDURE DE REPRISE D'UNE BASE COMPLTE a) Crer une base de donnes (vide) b) Cliquer sur l'onglet IMPORTER

c) A EMPLACEMENT DU FICHIER TEXTE, indiquer le fichier contenant la sauvegarde de la base de donnes l'aide du bouton PARCOURIR d) Lancer l'importation via le bouton Excuter

En fin d'opration, affichage d'un compte-rendu synthtique et indication des tables importes

Introduction aux systmes d'information - Page 45

EXERCICES DE REQUTES SUR LA BASE COOP

DANS LE CADRE DU SYSTME D'INFORMATION DE LA COOPRATIVE :

1. PEUT-ON SUPPRIMER TOUS LES CHOUX EN UNE SEULE COMMANDE ?

2. QUELLE EST LA REQUTE POUR MULTIPLIER PAR 2 LE PRIX DES FRUITS ?

3. COMMENT OBTENIR LA LISTE TRIE DES NOMS, CRITS EN MINUSCULE, POUR LES FRUITS DONT LE PRIX EST COMPRIS ENTRE 2 ET 3 EUROS ?

4. CALCULER LE NOMBRE ET LE POIDS TOTAL DES LIVRAISONS POUR CHAQUE PRODUIT

5. COMMENT OBTENIR LE NOM DES ACHETEURS DE CHOU DE CHINE ?

6. PEUT-ON CONNATRE LES ACHETEURS DES LGUMES FOURNIS PAR KING KING ?

Introduction aux systmes d'information - Page 46

INDEX
!, 37 !=, 36 %, 36 _, 30 `, 38 <, 36 <=, 36 =, 36 >, 36 >=, 36 127.0.0.1, 25 A_I, 29 accent grave, 38 agrgations, 40 AND, 37 Apache, 26 AS, 40, 42 ASC, 39 association, 14, 15 attributs, 8 AUTO_INCREMENT, 29, 30 AVG, 40 base de donnes, 4 BETWEEN, 37 cardinalit, 13, 15 chane de caractres, 31 champ, 11 champ, nom, 40 champ, prfixe, 42 CHARACTER_LENGTH, 37 classement, 39 clef, 11 clef trangre, 15 clef primaire, 15 comparaison, 36 comptage, 40 contrainte d'intgrit rfrentielle, 21 correspondance, 36 COUNT, 40 CREATE DATABASE, 28 CREATE TABLE, 31 DATE, 30, 31 DEC, 30 DECIMAL, 30 DEFAULT, 30 DELETE, 34 dpendance fonctionnelle, 20 DESC, 39 diffrence, 36 DISTINCT, 39 DOUBLE PRECISION, 30 EasyPHP, 25 limination des espaces, 37 enregistrement, 11 entier, 31 entit, 8, 9 ENUM, 30 espace, 31 et, 37 exportation, 44 FLOAT, 30 format, 8 GROUP BY, 40 Illegal mix of collations, 38 importation, 45 IN, 37 incohrence, 21 INSERT, 32 insertion, 32 INT, 30 INTEGER, 30 intervalle, 37 JOIN, 43 jointure, 41, 42, 43 LIKE, 36 LIMIT, 39 limitation, 39 liste, 31, 37 localhost, 25 LOWER, 37 majuscule, 37 MAX, 40 MIN, 40 minuscule, 37 mise jour, 33 modle entit-relation, 8 mot de passe, 27 moyenne, 40 MySQL, 26 ngation, 37 NOT, 37 NOT LIKE, 36 NOT NULL, 30 NULL, 30 NUMERIC, 30 n-uplet, 11 ON, 43 OR, 37 ORDER BY, 39 ou, 37 phpMyAdmin, 27 PRIMARY KEY, 30 privilges, 27 recherche, 35 redondance, 20 rel, 31 regroupement, 40 relation, 8, 11 requte, 24 restriction, 36, 37 retour la ligne, 31 root, 27 sauvegarde, 44 SELECT, 36, 40 serveur, 4 SGBD, 24 SHOW FIELDS, 31 SMALLINT, 30 somme, 40 SQL, 24, 44 SUM, 40 suppression, 34 systme d'information, 3 systme informatique, 4 table, 9, 11 table, renommage, 42 taille, 37 texte, 31 tri, 39 TRIM, 37 tuple, 11 UNSIGNED, 30 UPDATE, 33 UPPER, 37 valeur atomique, 8 valeurs distinctes, 39 VARCHAR, 30 virgule, 31

Introduction aux systmes d'information - Page 47

SOMMAIRE
SYSTME D'INFORMATION .........................................................................2 Introduction au systme d'information................................................3 Systme d'information : vue informatique ..........................................4 Systme d'information : ralisation.....................................................5 Systme d'information : vue pratique .................................................6 PRINCIPES DES BASES DE DONNES ..........................................................7 Modlisation des donnes..................................................................8 Donne du produit..............................................................................9 Donne de la personne....................................................................10 Entits et base de donnes..............................................................11 Tables produit et personne ..............................................................12 Donne de la vente ..........................................................................13 Association vente et base de donnes.............................................14 Association et base de donnes ......................................................15 Donne du lot...................................................................................16 Lot dans la base de donnes ...........................................................17 Modlisation de la cooprative .........................................................18 Exercice de modlisation .................................................................19 Redondance des donnes ...............................................................20 Incohrence des donnes ................................................................21 Exercice de modlisation .................................................................22 UTILISATION DES BASES DE DONNES ......................................................23 Introduction ......................................................................................24 Cas de EasyPHP sous Windows .....................................................25 Rglages de EasyPHP.....................................................................26 Outil phpMyAdmin............................................................................27 Cration d'une base .........................................................................28 Cration d'une table avec phpMyAdmin ...........................................29 Cration d'une table en SQL ............................................................30 Cration d'une table en SQL (suite) .................................................31 Ajout de donnes .............................................................................32 Mise jour de donnes....................................................................33 Suppression de donnes..................................................................34 Recherche de donnes avec phpMyAdmin ......................................35 Recherche de donnes avec SQL....................................................36 Recherche de donnes avec SQL (suite).........................................37 Interrogation en SQL avec phpMyAdmin..........................................38 Recherche de donnes avec SQL (suite).........................................39 Recherche de donnes avec SQL (fin) ............................................40 Opration de jointure........................................................................41 Jointure en SQL ...............................................................................42 Jointure en SQL (suite) ....................................................................43 Exportation de la base .....................................................................44 Importation d'une base.....................................................................45 Exercices de requtes sur la base coop .....................................46 INDEX ....................................................................................................47

Introduction aux systmes d'information - Page 48