Documente Academic
Documente Profesional
Documente Cultură
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/
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)
DES POSTES CLIENTS DE TRAVAIL Manipulations via des pages Web (mode d'accs quasi-universel)
SQL : structured query language, langage de requtes structur Introduction aux systmes d'information - Page 5
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 )
PRINCIPES DES BASES DE DONNES Modlisation des donnes Modle entit-association Modle relationnel
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
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
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
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
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
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
MODLISATION DE LA COOPRATIVE
MODLE DE DONNES
EXERCICE DE MODLISATION
LA COOPRATIVE OFFRE DES PROMOTIONS SOUS LA FORME D'UN
PANIER DE 2 PRODUITS, AVEC UN PRIX ATTRACTIF AU KILOGRAMME
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 :
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
EXERCICE DE MODLISATION
UTILISATION DES BASES DE DONNES Langage SQL Outils EasyPHP et phpMyAdmin Dfinition de la structure d'une base Langage de manipulation des donnes
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
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 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
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
FORMULAIRE DE DFINITION DES CHAMPS DE LA TABLE Dfinition de chaque champ de la table partir de la modlisation
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
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
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
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 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
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
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 :
(les seuls champs indiqus dans la liste, pour tous les enregistrements)
SELECT * FROM table WHERE restriction
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
EXEMPLES
SELECT * FROM produit WHERE type = 'LEGUME'
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
ou
! terme
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')
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
Exemple
SELECT DISTINCT prix FROM produit
(seulement les taille premiers rsultats) (taille rsultats aprs la position rang 1)
Exemples
SELECT * FROM produit LIMIT 10
me
au 30me produits)
(classements imbriqus)
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
Attention, le premier rsultat pour rang zro et non pas un ! Introduction aux systmes d'information - Page 39
Exemples
SELECT COUNT(nom) FROM 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
Exemples
SELECT DISTINCT type AS genre FROM produit
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
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
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
(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
Cette formulation est la premire apparue historiquement. Introduction aux systmes d'information - Page 42
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
(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
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
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
3. COMMENT OBTENIR LA LISTE TRIE DES NOMS, CRITS EN MINUSCULE, POUR LES FRUITS DONT LE PRIX EST COMPRIS ENTRE 2 ET 3 EUROS ?
6. PEUT-ON CONNATRE LES ACHETEURS DES LGUMES FOURNIS PAR KING KING ?
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
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