You are on page 1of 29

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE

REPUBLIQUE DU SENEGAL

UN PEUBLE - UN BUT - UNE FOI

BASES DE DONNÉES AVANCÉES

Télécommunications Réseaux
Licence 2

RAPPORT DU COURS:

ELHADJI FARBA TOURE SOUS LA DIRECTION DE M. DIOKH

ANNÉE ACADÉMIQUE : 2017-2018


BASES DE DONNÉES AVANCÉS

Permettre a chaque machine d'acceder a notre base de données :

Il suffit d'editer le fichier my.cnf pour pointer bindadress : 0.0.0.0 et verifier que le port est 3306 .

Permettre a ROOT d'acceder a la base de données d'une autre machine :

Une fois ceci fait il suffira tout juste de se connecter a la base de données voulue tout en indiquant
le mot de passe que nous avons défini ci-dessus.

Pour reinstreindre l'acces de ROOT a la base de donnés de l'autre machine :

avant de quitter taper la requete sql : flush privileges ;


Sauvegarde par archivage :

Preciser la date de l'archivage :

Sauvegarde de la base EC2LT en conservant les requetes sql dans un fichier a préciser (EC2LT.sql) :

Une fois la base de données (EC2LT) sauvegardée , on peut se connecter pour supprimer une table
dans le but de pouvoir la restaurer vu qu'elle a été sauvegardée :

Restaurattion de notre table puis verification dans notre base de données :


Éxécution d 'une commande a une date voulue :
CREATION D’UN SCRIPT SHELL :

Pour créer un script , il suffit de créer un fichier , de l’éditer et d’y mettre les commandes voulues .
Ici nous avons créer le fichier script1.sh .
On édite ce fichier pour y mettre nos commandes : on tape nano script1.sh

cal est la commande qui permet de voir le calendrier .


Df -h permet de voir l’étendu de la partition .

Pour éxécuter ce fichier on tape : ./script1.sh .


Il faudra au préalable donner les droits d’éxécution de ce fichier .

A l’éxécution de ce script , ces deux commandes s’éxécuteront automatiquement :

Maintenant éssayons de mettre dans notre script la commande mysqldump qui permet de
sauvegarder une base données (dbec2lt) dans un fichier (/opt/sauve-23052018.sql) :
A l’éxécution du script , la sauvegarde de la base de données indiquée (dbec2lt) sera alors réalisée
en meme temps que l’exécution des autres commandes dans notre script .
Avant d’éxécuter ce script , il faudra d’abord supprimer le fichier contenant la sauvegarde de la base
dbec2lt qui a été généré lorsqu’on a tapé la commande mysqldump .

Éxécutons a présent le script :

Nous voulons a present éxécuter notre script (script1.sh) a une date bien précise . Pour se faire il
suffit juste de faire un nouveau cront: on tape crontab -e et faire l’ajout du cront .

Dans ce cront , nous souhaitons l’éxécution du script a 9h 25 min . Il faut nécéssairement mettre le
chemin absolue du fichier script1.sh .
Juste apres il faudra supprimer le fichier qui sauvegarde la base dbec2lt avant la date indiquée dans
le cront pour que la vérification de la sauvegarde soit fiable apres l’éxécution du script .
Avant l’heure d’éxécution , listons /opt pour s’assurer que le fichier est supprimé.
A l’heure indiquée dans le cront il faudra lister le répértoire /opt dans lequel se trouve le fichier de
sauvegarde .

NB : Dans le fichier (script1.sh) on devra mettre le mot de pass de la base de données dans la
commande mysqldump sinon la sauvegarde n’aura pas lieu .

Nous voulons maintenant faire une sauvegarde avec mysqldump sans indiquer le mot de pass sur la
meme ligne de commande car c’est pas sur .
Nous devons d’abord créer un fichier (passfarba) et y mettre le mot de pass de la base de données
ensuite dans la commande mysqldump juste apres le parametre -p on met [$(cat
/etc/phpmyadmin/passfarba)] . On y précise ainsi le chemin absolu du fichier (passfarba) contenant
le mot de pass de notre server mysql .

Méttons une erreur dans le mot de pass du fichier passfarba et voyons :

On remarque bien que la commande refuse de s’éxécuter car le mot de pass indiqué dans le fichier
passfarba n’est pas le bon .

View ou tables virtuelles

Créeons une base de données ec2lt dans laquelle on inscrit deux tables etudiants et classe :

champs etudiants (id, matricule, nom, prenom, idclass, adresse, numero, mdp ) .

champs classe (id, nom) .

Ensuite on tape : use ec2lt ;


Pour inscrire nos tables dans la base ec2lt :
Insertions dans les tables de la base ec2lt :

*etudiants :

*classe :
Sauvegardons notre base ec2lt avec MYSQLDUMP :

Lecture table etudiants :


Nous voulons maintenant lire quelques champs de étudiants et classe en un seul coup .
Pour ce faire on procéde comme suit :
La commande saisie nous a permi de lire les champs nom, prenom et numero de la table etudiants et
le champs nom de classe en un seul coup .

NB : La condition etudiants.idclass=classe.id permet de mettre sur la meme ligne le champ nom de


la table classe et le champ idclass de la classe etudiants .

La tache serait un peu fastidieuse si , pour lire les champs précédents , on devait retaper la
commande précédente ou bien taper une autre commande pour selectionner d’autres champs d’ou
l’idée de mettre en place une table virtuelle (VIEW) .

Un view ou table virtuelle permet de recuperer des champs de tables créés dans une base de
données pour une lecture selective ou bien cacher des informations .
Par exemple si l’administrateur ne souhaite pas qu ‘une secretaire ait l’acces sur certains champs ,
ces derniers peuvent etre recupérés dans un view .
Il se peut aussi que l’admin souhaite regrouper certains champs appartenant a des tables differentes
dans une table virtuelle .
Si on a plusieurs champs dans une table et que l’on souhaite lire que certains , on peut aussi créér un
view .
Exemple : Créeons un view (contacts) qui recupére seulement les champs nom, prenom et
numero de la classe etudiants .

Créeons une table virtuelle ou view (EC2LT) qui recupére les champs nom, prenom et numero de
etudiants et le champs nom de classe:
On a créée le view EC2LT .

En tapant la commande show tables , on remarquera que les view (EC2LT et contacts) seront
affichés aussi :

Maintenant on va faire une insertion dans la table etudiants et voir si on peut la lire dans la table
virtuelle contacts .
Tout d’abord nous allons lire la table etudiants afin que la vérification soit fiable :
On a inséré Penda DIAGNE dans la table etudiants et puis ensuite on le retrouve dans la table
virtuelle contacts a la lecture .
On remarque bien qu’une fois la table virtuelle créée ,elle recupére de facon dynamique les champs
nécéssaires ; c’est comme si on avait créé un lien entre les deux tables .

Pour connaître le nombre d’étudiant inscrit dans chaque classe :

Afficher les classes par ordre croissant du nombre d’inscrit :


Créeons une table virtuelle effectif qui recupére les classes et leur effectif repectifs :
LECTURES DES CHAMPS D’UNE TABLE ET CREATION ALIAS

Veuillons lire les enregistrements des champs de la table etudiants :

Maintenant on souhaite afficher seulement le nombre d’enregistrements dans notre table etudiants ;
on fera comme nous le montre la capture suivante :

A la place de count(*) qui désigne le nombre d’enregistrement sur la figure précédente , on peut
créer un ALIAS qui nous permettra de bien comprendre que le chiffre 6 signifie nombre
d’enregistrements ; on tape la commande suivante :

Ici notre ALIAS c’est nbrecords .


Pour mieux connaître les differentes lectures des champs d’une table , on va créer une nouvelle
table (notes) :

NB : Pour le champs idmatiere on a :

idmatiere matieres
1 RESEAUX
2 TELEPHONIE
3 BASES DE DONNÉES AVANCÉES

Insertions au niveau de la table notes :

On remarque bien qu’avant de faire les insertions on a lu les enregistrements des champs de
etudiants afin de voir les id des étudiants . En réalité le idetudiant de notes doit correspondre avec le
id de etudiants .

Maintenant lisons les enregistrements de notre nouvelle table (notes) :

Ici on remarque que les notes sont données par ordre des id .

Essayons de faire la lecture par ordre croissant des notes :


Lecture par ordre décroissant des notes :

Lecture de la plus petite notes :

Lecture de la plus grande note :

Lecture de la note moyenne :


Lecture de la somme des notes :

Une autre méthode pour lire la note moyenne :

Ici on voit bien pour lire la note moyenne , on a fait une requéte nous permettant d’afficher le
rapport de la somme des notes sur le nombre d’enregistrement de la table notes .

Maintenant on se propose de lire seulement les notes qui sont superieur a la moyenne :
Nous voulons a présent lire le nom , le prenom et la note des étudiants qui ont eu la moyenne ou
plus .
Il y’a probléme car les champs nom et prenom ne se trouvent pas dans la table notes mais plutot
dans celle etudiants . Pour pouvoir gerer ce cas , on va proceder comme nous le montre la capture
suivante :

On remarque bien qu’avant de saisir la requete convenante , on a lu les enregistrements de notes


puis ceux de etudiants afin de ne pas se tromper sur la condition (etudiants.id=notes.idetudiant) .
En effet cette condition permet de faire correspondre les noms et prenoms aux notes .

On peut aussi remplacer la condition : note >=13 par celle : note>=(select avg(note) from notes ) .

Regardons ce que ca donne :


On a le meme resultat .

TRANSACTIONS

Dans cette partie , nous allons voir certaines opérations que l’on rencontre dans des entreprises
comme les banques , les agences wari ….Ce sont des transactions qui sont réalisées au niveau des
comptes des clients qui souhaitent faire quelques actions .

Pour bien illustrer les transactions on va devoir créer une table appelée compte qui aura numero et
montant comme champs .

Créeons la table compte :

On vérifie alors si cette table supporte les transactions auquel cas Engine = InnoDB sur l’affichage
de la commande : show table status \G .
La condition vérifiée donc on peut passer aux insertions :

On va réaliser deux transactions avec le numéro 773368098 et regarder ce qui se passe au niveau du
compte . La premiere consiste a retiré 25000fr et la seconde a remettre la somme dans le compte .
Cela se fera comme suit :
Apres avoir réalisé cette premiere transaction , on remarque que dans dans le compte ca été
appliqué .

On va remettre la somme dans le compte :

Pour pouvoir suspendre une transaction , il faut avant tout taper : set autocommit = 0 et puis juste
apres la transaction que l’on souhaite suspendre on tape rollback .

NB : Par defaut set autocommit=1 . Cette valeur par defaut permet a toute transaction d’etre prise en
compte par le syteme c’est a dire validée aussitôt qu’elle a été réalisée . Du coup on ne pourra pas
annuler une transaction a moins de faire un update a nouveau .
Lorsque set autocommit=0 , on pourra suspendre une transaction a chaque fois qu’on le décidera en
tapant rollback mais aussi valider une opération avec la commande commit .

On se propose de mettre set autocommit=0 et d’essayer de suspendre une transaction puis ensuite
la valider .
- suspensions transaction :
-validation transaction :

On remarque bien qu’une fois la transaction validée avec commit , on ne plus la suspendre avec
rollback .

Remettons set autocommit = 1 (valeur par defaut) et faisons d’autres transactions .

Cette fois-ci , on se propose de débité le compte qui a pour numéro 773368098 une somme de
35000fr pour déposer au compte ayant le numéro 778745100 :
On remarque qu’une somme de 35000fr s’est retiré du compte de 773368098 pour s’ajouter a
l’autre compte d’ou les deux transactions ont réussi .

You might also like