35
1 Cours d’accompagnement de l’APP « Passage d’ACCESS à MySQL » Valérie Bellynck Responsable Licence Professionnelle - Planification LP Bases de données 2 Sommaire 1. Extension du sujet 2. Différence ACCESS <G> Serveur MySQL 3. OrganisaLon de l’APP 4. Qu’estGce que MySQL ? 5. SQL sous ACCESS 6. Transfert des données et du modèle logique de ACCESS à MySQL 7. Branchement d’ACCESS non pas sur msSQL mais sur MySQL via un connecteur 8. Liens praLques !! PréGrequis pour les cours sur le développement Web 2

CoursAPP-BDmySQL LP 20150930 - tiprof · 2015. 10. 5. · 1 Cours&d’accompagnement&de&l’APP& «&Passage&d’ACCESS&à&MySQL&»& & &&! Valérie Bellynck Responsable Licence Professionnelle

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • 1

    Cours&d’accompagnement&de&l’APP&«&Passage&d’ACCESS&à&MySQL&»&

    &&&

    !

    Valérie Bellynck Responsable Licence Professionnelle - Planification

    LP!Bases!de!données!

    2

    Sommaire!

    1.   Extension&du&sujet&2.   Différence&ACCESS&&Serveur&MySQL&3.   OrganisaLon&de&l’APP&&4.   Qu’estGce&que&MySQL&?&5.   SQL&sous&ACCESS&6.   Transfert&des&données&et&du&modèle&logique&de&ACCESS&à&MySQL&7.   Branchement&d’ACCESS&non&pas&sur&msSQL&mais&sur&MySQL&via&un&connecteur&&8.   Liens&praLques&&

    !!&PréGrequis&pour&les&cours&sur&le&développement&Web&&

    2

  • 3

    Extension!du!sujet!

    Extension&de&l’étude&de&cas&[…]$Après$2$semaines$de$projet,$vous$avez$avancé$sur$la$réalisa;on$de$votre$base$de$données$et$avez$pu$en$parler$avec$votre$responsable.$Celui?ci$se$ques;onne$sur$la$possibilité$d’intégrer$votre$réalisa;on$dans$un$système$d’informa;on$qui$s’appuie$sur$une$base$de$données$MySQL.$Pour$vérifier$la$faisabilité$de$ceKe$idée,$il$vous$demande$de$transcrire$en$MySQL$toutes$les$requêtes$u;les$à$l’export$de$votre$base$de$données$dans$une$base$de$données$MySQL,$ainsi$que$toutes$les$requêtes$qui$sont$exploitées$dans$vos$formulaires.$Vous$devrez$écrire$ces$requêtes$en$algèbre$rela;onnelle$puis$les$traduire$en$MySQL$pour,$finalement,$les$tester$sous$PhpMyAdmin.$$[…]$

    4

    APP!et!Organisa8on!

    ApprenLssage&par&Problème&&&& $$Buts$(orienté$«$compétences$»)$

    –  devenir$autonome$pour$apprendre$–  confronter$sa$compréhension$du$Pb,$de$la$ma;ère$–  communiquer$efficacement$face$à$une$tâche$$

    •  Séances$CM$/$TTG$/$TRAP$–  Cours$Magistral$/$en$Remédia;on$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$/$en$réponse$à$Ques;ons$

    –  Travail$Tutoré$en$Groupe$–  TRAvail$Personnel$(non$encadré)$

    •  Chamillo$/$;prof$/$Google$

  • 5

    Extension!du!sujet!

    Extension&de&l’étude&de&cas&[…]$Après$2$semaines$de$projet,$vous$avez$avancé$sur$la$réalisa;on$de$votre$base$de$données$et$avez$pu$en$parler$avec$votre$responsable.$Celui?ci$se$ques;onne$sur$la$possibilité$d’intégrer$votre$réalisa;on$dans$un$système&d’informaLon$qui$s’appuie$sur$une$base$de$données$MySQL.$Pour$vérifier$la$faisabilité$de$ceKe$idée,$il$vous$demande$de$transcrire&en&MySQL&toutes$les$requêtes$u;les$à$l’export$de$votre$base$de$données$dans$une$base$de$données$MySQL,$ainsi$que$toutes$les$requêtes$qui$sont$exploitées$dans$vos$formulaires.$Vous$devrez$écrire&ces&requêtes&en&algèbre&relaLonnelle,$puis$les$traduire&en&MySQL$pour,$finalement,$les$tester&sous&PhpMyAdmin.$$[…]$

    6

    Vocabulaire!et!tâches!

    Vocabulaire&&&&&&&(

  • 7

    SQL / mySQL / msSQL & phpMyAdmin

    8

    Différence!ACCESS!!Serveur!MySQL!PHPMyAdmin!

    ACCESS$•  Est$une$interface$entre$l’u;lisateur$et$la$machine$(IHM)$•  Transmet$des$commandes$au$SGBD$sous?jacent$$

    (msSQL$par$défaut)$

    MySQL$•  Est$un$serveur$de$bases$de$données$$•  Répond$à$des$requêtes$MySQL$PHPMyAdmin$•  Est$une$interface$Web$écrite$en$PHP$•  Génère$des$formulaires$HTML$qui$créent$des$requêtes$

    mySQL$,$les$envoie$au$serveurde$BD,$interprète$et$présente$les$réponses$dans$des$pages$HTML$

  • 9

    Qu’estCce!que!MySQL!?!

    SQL$(Structured$Query$Language)$$–  est$un$langage$d’accès$normalisé,$c?à?d$une$norme$qui$décrit$un$langage$de$

    requêtes$$pour$accéder$aux$données$de$bases$de$données$rela;onnelles$

    –  est$supporté$par$la$plus$part$des$SGBD$–  est$un$langage$«$déclara;f$»$mais$pas$«$impéra;f$»$(pas$de$condi;ons,$pas$

    de$boucles)$

    MySQL$$–  est$une$implémenta;on$de$la$norme$SQL$–  ne$réalise$pas$toutes$les$spécifica;ons$de$la$norme$–  est$exploité$avec$le$langage$de$script$PHP$pour$générer$des$pages$Web$liées$

    à$une$base$de$données$$$hKp://cyberzoide.developpez.com/php4/mysql/ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$cours$en$français$sur$mySQL$par$Hugo$ETIEVANT$

    $

    10

    SQL!?!

    SQL$(Structured(Query(Language)$$$$$$$$=(langage(structuré(de(requêtes($Langage&de&définiLon&des&données&(LDD)&

    –  Créer$/$Modifier(=$altérer)$/$Supprimer$des$tables$$Langage&de&manipulaLon&des&données&(LMD)&

    –  Insérer,$modifier,$supprimer$des$enregistrements$$–  Extraire$des$données$(requêtes)$$

    $Langage&de&contrôle&de&données&(LCD)&&–  Créer,$modifier,$supprimer$des$droits$d’accès$$

    $$hKp://dev.mysql.com/doc/refman/5.6/en/index.html$$

  • 11

    SQL!–!LDD!:!!Créa8on!d’une!rela8on!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    CréaLon$$à$par;r$de$son$nom,$$$$$$$$$$$$$$$$$$$$$$ses$aKributs$et$leur$domaine,$$$$$$$$$$$$$$$$$$$$$$sa$clé$primaire$CREATE TABLE Etudiant (carteNo Char(7) NOT NULL, nomEt Char(20), prenomEt Char(20), PRIMARY KEY (carteNo));!

      hKp://dev.mysql.com/doc/refman/5.7/en/create?table.html$(pas$en$fr…)$CREATE$TABLE$$($[NOT$NULL]$[,$.$.$.]$[,$PRIMARY$KEY$(]$[,$.$.$.])$]$)$$

    $Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

    12

    PhpMyAdmin$?$CREATE$

  • 13

    SQL!–!LDD!:!!Suppression/Altéra8on!d’une!rela8on!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    Suppression$$à$par;r$de$son$nom$DROP TABLE Etudiant;$

    DROP$TABLE$$$

    AltéraLon&/&ModificaLon&$à$par;r$de$son$nom$$$$$$$$$$$$$$$$$$$$$$$$$et$des$aKributs$(et$leur$domaine)$à$supprimer/modifier$

    ALTER TABLE Etudiant ADD adresse Char(100);$ALTER$TABLE$$$$$$$$$$$$$$$$$$$$$$$$$$$$ADD|DROP$($)$$

    $Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

    14

    SQL!–!LMD!:!!Inser8on!d’un!enregistrement!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    InserLon&$à$par;r$du$nom$de$la$rela;on$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$et$des$valeurs$des$aKributs$$renseignées$INSERT INTO Etudiant VALUES ('6229733', 'Martin', 'Anne');!INSERT INTO Etudiant (carteNo, nomEt) VALUES ('6229733',

    'Martin');!

    INSERT$INTO$[($[,$.$.$.])$VALUES$$[,$.$.$.]$$

    $Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

  • 15

    PhpMyAdmin$?$INSERT$

    16

    SQL!–!LMD!:!!Suppression!d’un!enregistrement!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    Suppression&$à$par;r$du$nom$de$la$rela;on$$$$$$$$$$$$$$$$$$$$$$$$et$des$aKributs$(et$leur$domaine)$à$supprimer/modifier$DELETE FROM Etudiant WHERE nomEt = 'Martin' AND prenomEt

    = 'Chloé';!$DELETE$FROM$$$$$$$$$$$$$$$WHERE$($=$$[$AND$$=$])$$

    $Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

  • 17

    PhpMyAdmin$?$DELETE$

    18

    SQL!–!LMD!:!!Modifica8on!d’un!enregistrement!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    Mise&à&jour&$à$par;r$de$la$rela;on,$$$$$$$$$$$$$$$$$$$$$$$$$$$$$des$critères$(prédicats)$permeKant$de$les$iden;fier,$$$$$$$$$$$$$$$$$$$$$$$$$$$$des$aKributs$à$modifer$et$leurs$valeurs$

    UPDATE Etudiant SET prenomEt = 'Chloé'!WHERE nomEt = 'Martin' AND prenomEt = 'Anne';!

    $UPDATE$$SET$($$=$$[,$$$=$$])$$$$$$$$$$$$$$$$WHERE$($=$$[$AND$$=$])$$

    $Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

  • 19

    PhpMyAdmin$–$formulaire$Modif$

    20

    SQL!–!LMD!:!!Extrac8on!d’enregistrements!

    Etudiant(carteNo [int], nomEt [string], prenomEt [string]) !

    SélecLon/Extracion&$à$par;r$de$la$rela;on$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$et$des$critères$(prédicats)$permeKant$de$les$iden;fier$SELECT * FROM Etudiant WHERE nomEt = 'Martin’;!$SELECT$[*$|$DISCTINCT]$$[,]$FROM$$[,$]$$$$$$$$$$$$$$$$$$WHERE$($=$$[$AND$$=$])$$$$$$$$$$$$$$$$$$GROUP$BY$$[$,$]$$$$$$$$$$$$$$$$$$HAVING($=$$[$AND$$=$])$$$$$$$$$$$$$$$$$ORDER$BY$$[$,$]$$$

    $Démo$dans$Excel$$$Démo$sous$MAMP$hKp://localhost:8888/phpMyAdmin/index.php?db=test$$

    conditions de sélection sur les valeurs

    conditions de sélection sur les groupements

  • 21

    PhpMyAdmin$?$SELECT$

    22

    SQL!sous!ACCESS!

    •  ACCESS$est$lié$à$msSQL$

    $Afficher$les$requêtes$msSQL$

     $noter$les$requêtes$msSQL$de$vos$requêtes$ACCESS$ $surligner$les$différences$e$syntaxe$avec$les$requêtes$mySQL$

  • 23

    Transfert!de!ACCESS!à!MySQL!

    •  Créer$les$tables$$–  soit$sous$PHPMyAdmin,$$–  soit$via$l’applica;on$MySQL$dans$le$terminal$–  soit$en$branchant$ACCESS$sur$un$serveur$mySQL$

    •  Exporter$les$données$–  soit$en$format$CSV$(Comma$Separated$Values)$–  soit$en$msSQL$puis$en$corrigeant$les$différences$de$syntaxe$–  soit$en$branchant$ACCESS$sur$un$serveur$mySQL$

      hKp://www.convert?in.com/access?to?mysql?tutorial.htm$  hKp://;prof.fr/SitesWebDynamic/Techniques?swd/07_MySQL?et?connectPhp/

    ImportExport?MySQL.html$

    24

    Exemple

  • 25

    Exemple&

    $Abonne$(NoCarte,$Nom,$Prenom)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Livre$(Code,$Titre)$Exemplaire$(Code,$Numero,$AnAchat,$Etat,$PrixAchat)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Emprunts$(Code,$Numero,$Date,$NoCarte)$$

    26

    PhpMyAdmin$Créa;on$de$table$et$inser;on$d’enregistrements$

  • 27

    PhpMyAdmin$–$Formulaire$SQL$

    28

    Exemple$de$requêtes$mySQL$Créa;on$de$table$et$inser;on$d’enregistrements$

    CREATE$TABLE$`Livres`$($$$`Code`$int(11)$NOT$NULL$AUTO_INCREMENT,$$$`Titre`$varchar(256)$NOT$NULL,$$$PRIMARY$KEY$(`Code`)$)$ENGINE=InnoDB$$DEFAULT$CHARSET=u|8$AUTO_INCREMENT=2$;$$

    INSERT$INTO$`bibliotheque`.`Livres`$(`Code`,$`Titre`)$VALUES$(NULL,$'L''alchimiste');$

    INSERT$INTO$`bibliotheque`.`Livres`$(`Code`,$`Titre`)$VALUES$(NULL,$'Les$fourmis'),$(NULL,$'Chouans');$

  • 29

    Formulaire$SQL$dans$PhpMyAdmin$Créa;on$de$table$et$inser;on$d’enregistrements$

    30

    Exemple$de$requêtes$mySQL$Créa;on$de$table$–$clé&double/triple…$

    CREATE$TABLE$`Exemplaire`$($$$`Code`$int(11)$NOT$NULL,$$$`Numero`$mediumint(4)$NOT$NULL,$$$`AnAchat`$mediumint(4)$DEFAULT$NULL,$$$`Etat`$enum('TB','Moyen','Bon')$DEFAULT$NULL,$$$`PrixAchat`$mediumint(4)$DEFAULT$NULL,$$$PRIMARY$KEY$(`Code`,$`Numero`$)$)$ENGINE=InnoDB$DEFAULT$CHARSET=u|8;$$

  • 31

    Exemple$de$requêtes$mySQL$Créa;on$de$table$–$intégrité&référenLelle…$

    CREATE$TABLE$`Exemplaire`$($$$`Code`$int(11)$NOT$NULL,$$$`Numero`$mediumint(4)$NOT$NULL,$$$`AnAchat`$mediumint(4)$DEFAULT$NULL,$$$`Etat`$enum('TB','Moyen','Bon')$DEFAULT$NULL,$$$`PrixAchat`$mediumint(4)$DEFAULT$NULL,$$$PRIMARY$KEY$(`Code`,$`Numero`$),$$$CONSTRAINT$`Exemplaire_Code_FK`$FOREIGN$KEY$(`Code`)$$$REFERENCES$`Livre`$(`Code`)$ON$DELETE$CASCADE$)$ENGINE=InnoDB$DEFAULT$CHARSET=u|8;$$

    32

    Exemple$de$requêtes$mySQL$Créa;on$de$table$–$intégrité&référenLelle…$

    Ou,&créaLon&sans&la&contrainte,&CREATE$TABLE$`Exemplaire`$($$$`Code`$int(11)$NOT$NULL,$$$`Numero`$mediumint(4)$NOT$NULL,$$$`AnAchat`$mediumint(4)$DEFAULT$NULL,$$$`Etat`$enum('TB','Moyen','Bon')$DEFAULT$NULL,$$$`PrixAchat`$mediumint(4)$DEFAULT$NULL,$$$PRIMARY$KEY$(`Code`,`Numero`),$)$ENGINE=InnoDB$DEFAULT$CHARSET=u|8$;$

    Puis&ajout&de&la&contrainte,&ALTER$TABLE$Exemplaire$ADD$FOREIGN$KEY$(Code)$$REFERENCES$Livre$(Code);$$

  • 33

    Exemple$de$requêtes$mySQL$Modifica;on$de$table$–$intégrité&référenLelle…$

    Voir&la&structure&d’une&relaLon,&SHOW$CREATE$TABLE$Exemplaire;$

    &&&

    &&&

    &Supprimer&une&contrainte&de&clé&étrangère,&ALTER$TABLE$`Exemplaire`$DROP$FOREIGN$KEY$`Exemplaire_ib_1`;$$

    CREATE$TABLE$`Exemplaire`$($$$`Code`$int(11)$NOT$NULL,$$$`Numero`$mediumint(4)$NOT$NULL,$$$`AnAchat`$mediumint(4)$DEFAULT$NULL,$$$`Etat`$enum('TB','Moyen','Bon')$DEFAULT$NULL,$$$`PrixAchat`$mediumint(4)$DEFAULT$NULL,$$$PRIMARY$KEY$(`Code`,`Numero`),$$$CONSTRAINT$`Exemplaire_ib_1`$FOREIGN$KEY$(`Code`)$$$$$REFERENCES$`Livre`$(`Code`)$)$ENGINE=InnoDB$DEFAULT$CHARSET=u|8$;$

    34

    Liste&de&requêtes&

    1.  Liste$des$abonnés$(nom,$prenom)$?$2.  Codes$des$livres$en$TB$état$?$3.  Titres$des$livres$en$TB$état$?$4.  Noms$des$personnes$ayant$emprunté$«$L’alchimiste$»$?$5.  No$de$carte$de$abonnés$ayant$emprunté$tous$les$

    livres$?$6.  Nombre$d’exemplaire$par$livre$?$7.  Prix$moyen$d’acaht$de$chaque$livre$?$(code,$;tre,$prix$

    moyen)$

  • 35

    1.&Liste&des&abonnés&

    $$$R1$=$$$$$$$$$$$$Nom,$Prenom$(Abonne)$=$Proj$(Abonne,$Nom,$Prenom)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$=$$$SELECT$$`Nom`$,$`Prenom`$FROM$`Abonne`$

    Π

    36

    2.&Codes&des&livres&en&TB&état&

    $$$

    R2$=$$$$Π$Nom,$Prenom$(σEtat='Bon'(Exemplaire))$$$$$$$$$=$Proj$($$Sel(Exemplaire,$Etat='Bon')$,$Code,$Numero)$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$=$$$SELECT$$`Code`$$FROM$`Exemplaire`$WHERE$`Etat`$=$'Bon'$

  • 37

    3.&Titres&des&livres&en&TB&état&

    R1$=$codes$et$numéros$des$livres$en$TB$état$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$X$$$

    R2$=$$$$ΠTitre(ΠNom,$Prenom$($σEtat='Bon'(Exemplaire)$)$X Livre$)$$=$Proj($Join`Livre`.`Code`$=`Exemplaire`$.`Code`$($$$$$$$$$$$$Proj$(Sel(Exemplaire,$Etat='Bon')$,$Code,$Numero),$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$Livre),$Titre)$…$

    $$$$$=$$SELECT$`Titre`$$FROM$`Livre`,$(SELECT$$`Code`,$`Numero`$$$$$$$$$$$$FROM$`Exemplaire`$WHERE$`Etat`$=$'Bon')$$$$$$$$$$$WHERE$`Livre`.`Code`$=`Exemplaire`$.`Code`$$$$$PhpMyAdmin$ne$peut$faire$plusieurs$requêtes$mySQL$consécu;ves$

    38

    Autres outils pour MySQL 
que PhpMyAdmin

  • 39

    Autre&que&PhpMyAdmin&

    •  directement$ou$• MySQL$WorkBench$

    40

    MySQL&G&API&

  • 41

    MySQL&G&API&

    42

    MySQL&WorkBench&

  • 43

    MySQL&WorkBench&CréaLon&d’une&table&

    44

    MySQL&WorkBench&CréaLon&d’une&table&

  • 45

    MySQL&WorkBench&CréaLon&d’une&table&

    46

    MySQL&WorkBench&CréaLon&d’une&table&

  • 47

    MySQL&WorkBench&Reverse&Engineering&

    48

    MySQL&WorkBench&Reverse&Engineering&

  • 49

    MySQL&WorkBench&Reverse&Engineering&:&éditeur&de&schéma&

    50

    Requête&créant&un&alias&de&table&

  • 51

    Précisions sur les jointures

    52

    L’intégrité&différenLelle&en&MySQL&et&le&différents&types&de&jointure&

    •  La$jointure$est$un$filtre$sur$2$tables$sélec;onnant$les$enregistrements$joints$par$les$valeurs$de$leurs$clés$

    •  Parmi$les$types$de$jointure,$les$plus$u;les$sont$:$–  Jointure$interne$(inner$join)$–  Jointure$à&gauche$(leÉ$join)$–  Jointure$à&droite$(right$join)$

    •  Démo$avec$MySQL$WorkBench$•  Référence$:$hKps://sio20197.wordpress.com/3?sql/manipula;on?des?donnees/select?2/

    from/jointures/types?de?jointures/$$

  • 53

    L’intégrité&différenLelle&en&MySQL&et&le&différents&types&de&jointure&

    54

    Jointure&interne&

    mode$de$liaison$d’ACCESS$par$défaut.$$2$requêtes$mySQL$possibles$:$$SELECT$*$FROM$`Exemplaire`,$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$et$$SELECT$*$FROM$`Exemplaire`$INNER$JOIN$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$$$

  • 55

    Jointure&interne&

    SELECT$*$FROM$`Exemplaire`,$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$$

    SELECT$*$FROM$`Exemplaire`$INNER$JOIN$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$$$

    56

    Jointure&gauche&&

    SELECT$*$FROM$`Exemplaire`$LEFT$JOIN$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$$

  • 57

    Jointure&droite&&

    SELECT$*$FROM$`Exemplaire`$RIGHT$JOIN$`Livre`$$WHERE$`Livre`.$`Code`$=$`Exemplaire`.$`Code`$;$$$

    58

    Jointure&gauche&dans&ACCESS&

  • 59

    L’intégrité&différenLelle&en&MySQL&et&le&différents&types&de&jointure&

    Contraintes$d’intégrité$référen;elles$:$$

    •  Peut?on?insérer$une$ligne$dans$la$table$des$emprunts$pour$mémoriser$l’emprunt$d’un$nouveau$livre$non$encore$défini$?$$

    •  Peut?on$supprimer$un$livre$s’il$a$déjà$été$emprunté$?$$$$

    NON,$si$les$dépendances$entre$clés$primaires$et$étrangères$ont$été$bien$déclarées.$$En$effet,$on$perd$alors$la$référence$=>$la$base$de$données$ne$serait$alors$plus$intègre$$

    •  Peut?on$supprimer$l’emprunt$d’un$livre$sans$avoir$du$supprimer$le$livre$aupréalable$?$

    $

    Démo$avec$MySQL$WorkBench$$

    60

    Précisions sur les groupements

  • 61

    Opéra;ons$de$calcul$•  extension$aux$opérateurs$de$base$$•  ne$peuvent$pas$être$exprimés$à$l’aide$de$ceux?ci$$Exemple$:$

    Compte&=$nombre$de$lignes$d’une$rela;on$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$qui$ont$une$même$valeur$d’aKribut$en$commun.$$T(=$CompteX1,...,Xn((R)$$$$$ou$$$$$T(=$CountX1,...,Xn((R)$$$$$$$$$$$$$$$$$$X1,...,Xn$étant$les$aKributs$de$regroupement$$&&

    &&&

    Somme&=$somme$cumulée$des$valeurs$d’un$aKribut$Y$$$$$$$$$pour$chacune$des$différentes$valeurs$des$aKributs$de$groupement$X1,...,Xn( S(=$SommeX1,,..,Xn((R,$Y)$$$$$ou$$$$$S(=$Sum(X1,,..,Xn((R,$Y)$$$

    $&

    CompteX1,...,Xn !

    T !

    R!

    R

    A B C a n 17 b o 14 c n 9 d p 13 e m 20 f m 10

    CompteB (R) B Compte n 2 m 2 o 1 p 1 $$ $$

    Compte (R) Compte 6

    62

    Agrégats$ou$$Groupements$

    non !!!

  • 63

    Quelques requêtes spéciales 
en MySQL

    64

    Manuel$officiel$mySQL$

    voir http://dev.mysql.com/doc/refman/4.1/en/show-columns.html!

  • 65

    SHOW$$COLUMNS$FROM$[ma_table]$versus$$$$$$$$$$$$$$$$$$$$$$$$$$

    SELECT$*$FROM$INFORMATION_SCHEMA.COLUMNS$$WHERE$`TABLE_NAME`$=$'[ma_table]'$

    $

    66

    SHOW$$COLUMNS$FROM$[ma_table]$versus$$$$$$$$$$$$$$$$$$$$$$$$$$

    SELECT$`COLUMN_TYPE`$FROM$INFORMATION_SCHEMA.COLUMNS$$

    WHERE$`TABLE_NAME`$=$'[ma_table]’$AND$`COLUMN_TYPE`$LIKE$'enum%'$$

    $

  • 67

    Branchement d’ACCESS sur MySQL

    68

    Branchement!d’ACCESS!à!MySQL!via!un!connecteur!

    $hKp://ledzeppii.developpez.com/odbc?access/$$$

  • 69

    Références

    70

    Liens!pra8ques!

    •  hKp://chamilo2.grenet.fr/inp/courses/PAGORALP1FM00105/index.php$$•  hKp://;prof.fr/SGBasesDonnees/$$•  hKp://;prof.fr/SGBasesDonnees/APP?BDprodfourn/$$•  hKp://cyberzoide.developpez.com/php4/mysql/$ $$

    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$cours$en$français$sur$mySQL$par$Hugo$ETIEVANT$•  hKp://dev.mysql.com/doc/refman/5.6/en/index.html$$•  hKp://dev.mysql.com/doc/refman/5.7/en/create?table.html$$•  hKp://localhost:8888/phpMyAdmin/index.php$•  hKp://;prof.fr/SitesWebDynamic/Techniques?swd/07_MySQL?et?

    connectPhp/ImportExport?MySQL.html$•  hKp://www.convert?in.com/access?to?mysql?tutorial.htm$•  hKp://ledzeppii.developpez.com/odbc?access/$