Cours MySQL pas a pas avec travaux pratiques pur reviser ensemble


Télécharger Cours MySQL pas a pas avec travaux pratiques pur reviser ensemble

★★★★★★★★★★1 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Cours  MySQL pas à pas avec travaux pratiques pur réviser ensemble

  • MySQL est un système de gestion de base de données (SGBD) apparu en1995 sa licence est libre ou propriétaire. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web notamment) que par des professionnels, en concurrence avec Oracle et Microsoft SQL Server
  •  Le serveur MySQL est très souvent utilisé avec le langage de création de pages web dynamiques : PHP comme des commandes MySQL utilisables via PHP.
  • Les bases de données MySQL sont accessibles en utilisant les langages de programmation C, C++, Eiffel, Java, Perl, PHP, Python, et Tcl ; une API spécifique est disponible pour chacun d'entre eux. Une interface ODBC appelée MyODBC est aussi disponible.

Définition

  • MySQL MySQL (SQL veut dire Structured Query Language en anglais) est un serveur de bases de données relationnelles SQL très rapide, multithread et multi-utilisateurs.
  • MySQLest un logiciel libre développé sous licence GNU General Public License. Il a été conçu et maintenu par une société suédoise, MySQL AB, fondée par deux Suédois et un Finlandais : David Axmark, Allan Larsson et Michael « Monty » Widenius.
  •  MySql est une base de données relationnelle libre qui a vu le jour en 1995 et très employée sur le Web, souvent en association avec PHP et Apache.
  • MySQL fonctionne sur beaucoup de plates-formes différentes, incluant AIX, BSDi,FreeBSD, HP-UX, Linux, Mac OS X, NetBSD, OpenBSD, OS/2 Warp, SGI Irix, Solaris,SunOS, SCO OpenServer, SCO UnixWare, Tru64 Unix, Windows 95, 98, NT, 2000 et XP.
  • Le principe d'une base de données relationnelle est d'enregistrer les informations dans des tables, qui représentent des regroupements de données par sujets (table des clients, table des fournisseurs, table des produits, par exemple). Les tables sont reliées entre elles par des relations.
  • Le langage SQL (acronyme de Structured Query Language) est un langage universellement reconnu par MySQL et les autres bases de données et permettant d'interroger et de modifier le contenu d'une base de données comme Microsoft SQL Server et Oracle.          
  • Vois un exemple de table crées et manipulés par MySql                                                                                                                                                                         

Historique

Version 4.0   première version en octobre 2001, stable depuis mars 2003

Version 4.1  première version en avril 2003, stable depuis octobre 2004

Version 5.0  première version en décembre 2003, stable depuis octobre 2005

Version 5.1  première version en novembre 2005, Release Candidate distribuée depuis sepembre 200

Version 5.2  distribuée en avant-première (ajout du nouveau moteur de stockage Falcon)

en février 2007, cette ligne a ensuite été renommée 6.0

Version 5.5   Version stable et depuis octobre 2010

Version 5.6  Version en cours de développement

Version 6.0  première version alpha en avril 2007, abandonnée depuis le rachat de Mysql  par oracle en décembre 2010

Téléchargements de MySQL

  • Avant l'installation, on doit tout d'abord récupérer l'archive contenant notre futur serveur mysql.Le site mysql.com ou sur fr.mysql.com.
  • De là,il faut récupérer la version 5.0.XX de MySQL pour environnement Windows.
  • Attention, il y a 3 versions différentes de l'archive :
  • Windows Essentials
  • Windows
  • Without installer (unzip in C:\)
  • Dans le cas présent, nous allons baser notre installation sur MySQL version 5.0.15 en essentials
  • Nom du fichier téléchargé : mysql-essential-5.0.15-win32.msi
  • Vous pouvez effectuer le téléchargement de l'application à cette url :

Installation

Localiser l'archive que vous avez téléchargée, par défaut sur le bureau si vous avez téléchargé avec firefox sinon une petite recherche (sur votre disque  dur) vous permettra de localiser le programme d'installation de MySQL.

Un double-clique lancera le programme d'installation... On clique sur Next.

 On choisi le type d'installation, par défaut, c'est une installation Typical. Dans le cas présent, je vais faire une installation personnalisée (Custo

On coche Custom puis on clique sur Next.

 Je détermine les composants que je souhaite installer, par ailleurs, je peux changer le répertoire où sera installé mon serveur MySQL. Par défaut :

On clique sur le bouton Change si l'on souhaite changer le répertoire d'installation. Dans le cas présent mon serveur sera dans E:\Projet\MySQL    Server 5.0\ Je peux cliquer sur bouton Install.



 L'installation est en cours, si je souhaite l'interrompre je clique sur le bouton Cancel.

Une fois la copie des fichiers terminée, nous passons à la configuration de notre serveur MySQL.

Cet écran (ci-dessus), vous demande si vous souhaitez créer un compte ou si vous en disposez un sur le site officiel mysql.com. Dans le cas présent, je ne souhaite ni créer un compte ni m'authentifier sur le site. Donc, je coche Skip Sign-Up (ci-dessous).

Dans le cas présent, je souhaite procéder à la configuration de mon serveur.

Donc je coche l'option Configure the MySQL Server Now.

Configuration

Nous avons choisi précédemment l'option Configure the MySQL Server now, ceci va nous permettre de configurer le serveur mysql dès à présent.

Dans le cas présent, on choisit une configuration de type Standard, donc on coche l'option Standard Configuration.

Choisir votre version favorable de MySQL

 Ici, nous pouvons choisir le nom du service (Service Name) qui va être installé, dans le cas présent, MySQL5. Par ailleurs, on peut ajouter une variable Path dans la configuration de Windows ce qui aura pour effet de rendre disponibles les commandes mysql depuis n'importe quel répertoire dans une invite de commandes.

Ici, on a choisi le service MySQL5 et le lancement automatique du serveur MySQL.

 Nous devons déterminer le mot de passe du compte administrateur (root) du serveur. Par ailleurs, nous pouvons procéder à la création d'un utilisateur anonyme sur le serveur. Ceci étant, dans le cas présent, nous définissons le mot de passe root mais nous ne créons pasd'utilisateur anonyme qui comme on peut le voir n'est pas des plus prudent (insecure) pour le serveur.

 Nos options de configuration définies, MySQL va procéder à son exécution.

La configuration se passe sans soucis dans le cas présent : on coche ces deux

 On clique sur le bouton Finish. L'installation et la configuration du serveur sont à présent terminées.

Moteurs de base de donner inclus

L'une des spécificités de MySQL est de pouvoir gérer plusieurs moteurs au sein d'une seule base. Chaque table peut utiliser un moteur différent au sein d'une base. Ceci afin d'optimiser l'utilisation de chaque table.

Voici les différents moteurs historiques de MySQL :

 MyISAM : Il est le plus simple à utiliser et à mettre en œuvre. Il utilise plusieurs fichiers qui grandissent au fur et à mesure que la base grossit. Il ne supporte pas les transactions, ni les clefs étrangères ;

 InnoDB : moteur créé et maintenu par InnoBase (racheté par Oracle le 7 octobre 2005). Il gère les transactions et les clefs étrangères (et donc l'intégrité de ses tables).

 BerkeleyDB (BDB) : moteur fourni par Sleepycat Software qui gère les transactions ;

 MERGE : moteur fait pour fusionner plusieurs tables qui doivent être identiques ;

 ARCHIVE : moteur adapté à l'archivage de données. Les lignes sont compressées au fur et à mesure de leur insertion. Les requêtes de recherches sont alors sensiblement plus lentes ;

 MEMORY (HEAP) : moteur où les tables sont stockées uniquement en mémoire. La structure de la base est stockée sur le disque dur mais les données sont stockées dans la RAM, si la machine serveur redémarre, les données seront perdues. Cependant, étant donné qu'il n'y a plus d'accès disque, une requête de modification (UPDATE, INSERT…) s'exécutera bien plus rapidement et sans charger les bras d'accès ; convient pour les mémorisations temporaires,

 CSV : moteur utilisant des fichiers textes (au format CSV) comme stockage ;

 BLACKHOLE : moteur réceptionnant les données, les transférant mais ne les stockant pas

 ISAM : moteur d'origine de MySQL, maintenant obsolète et remplacé par MyISAM. Il est resté pour des raisons de compatibilité ;

 NDB (uniquement dans la version MaxDB) : moteur de base de données réseau gérant les grappes de serveurs ;

 FEDERATED : moteur permettant d'accéder à des tables d'une base de données distantes plutôt que dans les fichiers locaux ;

 EXEMPLE : moteur fictif et inutilisable, mis à disposition pour les développeurs ;

 FALCON : ce nouveau moteur devait faire son apparition avec MySQL 6. À l'époque MySQL AB avait voulu créer un nouveau moteur transactionnel pour ne plus dépendre d'Oracle qui venait de racheter InnoBase, créateurs du moteur de stockage InnoDB. Ce moteur de stockage a été abandonné depuis le rachat de Mysql par Oracle.

 MARIA : evolution ACID de MyISAM.

Des moteurs de stockages OPEN Source :

 Infobright : moteur VLDB, orienté vers les applications décisionnelles ;

 Sphinx : moteur orienté recherche full text ;

 PBXT : moteur transactionnel proche des performances d'InnoDB ;

 Memcached : moteur orienté table de hash en mémoire ;

 M4q : moteur orienté gestion de file d'attente.

Des moteurs de stockages commerciaux :

 DB2 Moteur transactionnel copyright IBM ;



 SolidDB Moteur transactionnel copyright IBM ;

 NitroEDB Moteur VLDB copyright BrightHouse ;

 Tokutek Moteur VLDB.

Lorsque les clients ont envie d’avoir une BDD open source, 3 bases de données sone proposées : MySQL, PostgreSQL, Ingres.

MySQL propose deux moteurs de stockage : MyISAM et InnoDB.

Avantages et inconvénients

  • Avantage:
  • Une base de données open source standard, qui permet aux éditeurs et aux utilisateurs de solutions de gestion des données d’abonnés d’intégrer facilement leurs applications à MySQL Carrier Grade Edition par le biais de leur API favorite, par exemple LDAP, SQL, C++, Java, HTTP, etc.
  • Des performances élevées avec une base de données distribuée de type « shared-nothing », qui offre un accès en temps réel aux données utilisateur en mémoire, avec à peine quelques millisecondes de latence en lecture et en écriture, et qui peut être élargie par l’ajout de ressources supplémentaires ou l’enregistrement de données sur disque.
  • Une disponibilité à 99,999 % grâce à la réplication synchrone des données en mémoire sur les différents nœuds actifs du cluster (les données de reprise étant écrites sur disque en mode asynchrone) et grâce, en option, à la réplication « géographique », hors site, des données sur un cluster distant actif ou en veille.
  • Solution très courante en hébergement public
  • Très bonne intégration dans l’environnement Apache/PHP
  • OpenSource,bien que les critères de licence soient de plus en plus difficiles a supporter.
  • Facilité de déploiement et de prise en main.
  • Plusieurs moteurs de stockage.
  • Faible coût total de possession
  • Simplicité d’utilisation
  • Fiabilité
  • Performances
  • Inconvénients:
  • Il ne supporte pas les transactions et les clés étrangères
  • Nombre de connexions simultanées limitées.

Exercice 1 : Création du schéma (premiers éléments)

Se positionner sur votre base de données et utiliser l’interface proposée pour créer vos tables (c’est assez intuitif). Attention  : il faut créer les tables en leur donnant le type InnoDB.

Créer les relations Etudiant, UE, EtudiantUE, Adresse, Enseignant de telle manière à ce qu’elles contiennent les attributs suivants. Choisir les types de données qui vous semblent les plus appropriés (se référer au cours) et spécifier si la saisie de donnée est obligatoire ou non pour un attribut (NULL/NOT NULL):

Etudiant : numéro (clé primaire), nom, prénom.

UE : code, libellé, nombre d’heures associées (cours, TP, TD confondus). Le code est la clé primaire de la relation. Attention au type de données du code d’UE (voir les enregistrements plus loin)

Adresse : numéro et nom de rue, nom de la ville, code postal, caractère (‘t’ pour Ter, ‘b’ pour Bis, et ‘ ‘ si aucun des deux). On pourra pour simplifier donner un « numéro généré automatiquement » à chaque adresse qui servira de clé primaire.

Enseignant : numéro (clé primaire), nom, prénom, âge, ville où il habite, nombre d’heures enseignées. EtudiantUE : la note de CC obtenue, la note d’examen obtenue.

Exercice 2 : Création du schéma (compléments)

On veut maintenant compléter la description de ces relations en introduisant les informations qui nécessitent de lier ces relations entre-elles (définir les clés étrangères). Pour cela il faudra rajouter des attributs (avec index) à certaines relations et utiliser le lien « gestion des relations ». Attention choisir l’option SET NULL  (si l’attribut l’autorise) ou CASCADE (sinon).

1.Etudiant. Il faut i) lier la relation Etudiant avec la relation Adresse afin d’exprimer le fait que tout étudiant a une adresse et ii) lier la relation Etudiant et la relation EtudiantUE afin de préciser les UEs avec leurs notes2 qui sont suivies par les étudiants. Eventuellement, un étudiant peut ne suivre aucune UE. Avant de créer une clé étrangère dans une relation il faut qu’elle ait sa clé primaire définie.

  1. Enseignant. Il faut lier la relation Enseignant avec la relation UE afin d’exprimer le fait que chaque enseignant peut être responsable d’UEs (éventuellement, un enseignant peut être responsable d’aucune UE)3.
  2. UE. A propos de la liaison de la relation UE avec la relation Enseignant afin d’exprimer le fait que chaque UE a un enseignant responsable. Que pouvez-vous dire ?
  3. EtudiantUE. Il faut lier la relation EtudiantUE avec la relation UE afin de pouvoir faire le lien entre les notes et l’UE concernée. Avant de créer une clé étrangère dans une relation il faut qu’elle ait sa clé primaire définie. Définir la clé primaire qui vous semble raisonnable (vous ne choisirez pas ici de numéroter les tuples comme on a pu le faire plus haut). A propos de la liaison de la relation EtudiantUE avec la relation Etudiant afin d’exprimer le fait que les notes sont obtenues par un certain étudiant. Que pouvez-vous dire ?

Exercice 3 : Insertion de données

Pour chaque table vous cliquerez sur le bouton ou l’onglet « insérer » selon que vous soyez au niveau de la base de données ou à celui de la table concernée. L’objectif est de créer les tuples. A priori il faut opérer dans un ordre logique : Adresse, Etudiant, Enseignant, UE, EtudiantUE4. Saisir les tuples suivants :



Adresse(1, 3, 'b', "Jean médecin", "O6000", "Nice")

Adresse(2, 10, ' ', "Barla", "O6000", "Nice")

Adresse(3, 10, ' ', "Jean Jaures", "O6200", "Cagnes")

Etudiant(1001, "Nom1", "prenom1", 1)

Etudiant(1002, "Nom2", "prenom2", 2)

Etudiant(1003, "Nom3", "prenom3", 3)

Enseignant(1, "Menez", "Gilles", 25, 35, "Antibes")

Enseignant(2, "Lahire", "Philippe", 26, 30, "Nice")

Enseignant(3, "Kounalis", "Emanuel", 27 , 28, "Nice")

Enseignant(4, "Renevier", "Philippe", 21, 28, "Nice")

UE("SL2IBD", "Base de Données", 24, 2)

UE("SL2IPI", "Programmation impérative", 36, 1)

UE("SL2IAL", "Algorithmique", 32, 3)

UE("SL2IPW", "Programmation WEB", 26, 4)

EtudiantUE(1001, "SL2IBD", 10, 11)

EtudiantUE(1001, "SL2IPI", 8, 10)

EtudiantUE(1002, "SL2IBD", 10, 11)

EtudiantUE(1002, "SL2IPI", 8, 10)

EtudiantUE(1003, "SL2IBD", 10, 11)

EtudiantUE(1003, "SL2IPI", 8, 10);

EtudiantUE(1003, "SL2IAL", 12, 13);

2 à priori il n’y en aura pas plus de 5 mais pour l’instant on ne s’en préoccupe pas.

3 Même remarque concernant le nombre que pour la relation Etudiant.

4 Dire pourquoi cet ordre est logique.

 Exercice 4 : Consultation et sélection simple de données

Utiliser le bouton « afficher » pour voir l’ensemble des informations contenues dans chacune des tables.

Utiliser ensuite successivement le bouton « chercher » et l’onglet « Requête » 5 pour afficher les

informations suivantes (dans les deux cas utiliser les différentes possibilités offertes):

1.Numéro et nom de la rue et ville, pour toutes les adresses

2.Nom et prénom de tous les étudiants

3.Le libellé de l’UE et le numéro de l’enseignant responsable pour toutes les UEs

4.code postal et ville, pour toutes les adresses (avec ou sans suppression des doublons)

Premières sélections :

1.Affichage de tous les étudiants dont le nom est « Nom1 » (toutes les informations) 2.Affichage de tous les numéros d’étudiants qui suivent l’UE « SL2IBD »

3.Afficher tous les enseignants dont le prénom est « Philippe ».

4.Afficher tous les noms de rues de la ville « Nice ».

Exercice 5 : Sélection plus complexes

C’est le moment d’utiliser de manière plus fine les possibilités de MySQL pour réaliser des requêtes impliquant plusieurs tables. Pour cela, se placer au niveau de la base de données et cliquer sur l’onglet « Requête »

1.Afficher tous les noms et prénoms d’étudiants qui suivent l’UE « SL2IBD » ou l’UE « SL2IPI » 2.Afficher tous les noms et prénoms d’étudiants ainsi que le libellé des UEs toujours pour ceux qui suivent l’UE « SL2IBD » ou l’UE « SL2IPI »

3.Afficher tous les étudiants dont le nom est « Nom1 », mais en affichant que le prénom de l’étudiant et le nom de la rue où il habite.

4.Afficher le nom du responsable de chacune des UEs « SL2IBD » et « SL2IPI »

5.Afficher le nom de l’étudiant, le libellé de l’UE et la note de CC de chacun des étudiants. 6.Afficher le nom de l’étudiant, le libellé de l’UE et la note de CC de chacun des étudiants dont le nom commence par « Nom »

Exercice 6 : Modification de données

Afficher le contenu d’une table en utilisant le bouton « afficher » présent pour chaque table, puis pour chacun des champs utiliser le bouton « modifier » afin de réaliser les opérations suivantes (tuple par tuple 6) :

1.Augmenter toutes les notes d’examen de 1 point pour tous les étudiants et toutes les UEs.

2.Pour les étudiants qui suivent l’UE « SL2IBD », augmenter la note de contrôle continu de 1 point.


337