Vous êtes sur la page 1sur 5

BTS IRIS 1 Anne Lyce Diderot, Paris

TP Base de donnes
Installation d'un serveur MySQL et initiation au langage SQL
Gilles Dalles

TP Base de donnes
Installation d'un serveur MySQL et initiation au langage SQL Gilles Dalles

1. I NTRODUCTION
Le but aujourd'hui est de se familiariser avec le langage SQL (Structured Query Language, .langage de requte structure pour les anglophobes). Pour cela, il va vous falloir installer un SGBD, crer un utilisateur, grer des droits, crer une base et ses tables, remplir ces tables de donnes, exploiter ces donnes, faire des sauvegardes de cette base et bien d'autres joyeusets encore.

2. I NSTALLATION D ' UN SGBD


Pour rappel, un SGBD est un Systme de Gestion de Base de Donnes. Nous allons utiliser MySQL pour ce TP pour quelques raisons simples: Il est gratuit Il s'installe facilement Il respecte en grande partie la norme SQL C'est un paquet disponible pour Ubuntu L'installation ne devrait pas vous poser trop de problmes, il s'agit d'installer le paquet mysql-server. A priori, on devrait vous demander l'installation un mot de passe pour l'utilisateur root: il s'agit de l'utilisateur administrateur du serveur de base de donnes. Je vous suggre fortement d'utiliser iris_1 comme mot de passe. Pour vrifier que le serveur tourne bien sur votre machine une fois l'installation termine, une commande s'impose: ps. Combine avec une autre, grep, et vous devriez faire des merveilles et vrifier trs simplement si le serveur est bien prsent.

3. C REATION

DE BASE , D ' UTILISATEUR ET PERMI SSIONS


Si on a un serveur, priori il nous faut un client pour avoir accs ses ressources. Le client MySQL est priori install par dfaut avec Ubuntu. Si ce n'est pas le cas chez vous, vous savez ce qu'il vous reste faire. QUELLE EST LA SYNTAXE DE LA COMMANDE MYSQL POUR SE CONNECTER AU SERVEUR? (INDICE: IL VOUS FAUT LE LOGI N, L'HOTE ET BIEN SUR LE MOT DE PASSE) Une fois connect, il vous faut crer votre base de donnes. Tout d'abord, vous pouvez vrifier si des bases existent dj. Pour cela, tapez simplement la requte suivante: SHOW DATABASES; (le ; n'est pas facultatif, il marque la fin de la requte) EXISTE-T-IL DES BASES? SI OUI, LESQUELLES?

3.1.

C R E AT I O N D ' U N E

B AS E D E DO N N E E S

Vous allez dsormais crer la base de donnes bibliotheque (oui, sans accent, sans majuscule). Si vous tapez help l'invite de mysql, vous obtiendrez 3 liens internet. Celui qui nous intresse est celui ddi au dveloppement. Dans l'onglet Documentation du site, vous trouverez plusieurs liens vers la documentation en fonction de la version de MySQL utilise. Trouvez la votre.

TP Base de donnes
Installation d'un serveur MySQL et initiation au langage SQL Gilles Dalles La requte qui permet de crer une base s'appelle CREATE. Vous la trouverez dans le manuel au chapitre SQL Statement Syntax. On souhaite que la base bibliotheque ait pour jeu de caractres par dfaut latin1 et pour collation latin1_swedish_ci. Pour information, une collation (COLLATE) dtermine les caractres qui doivent tre regroups et considrs comme quivalents (ex: les caractres accentus '' et '' faisant partie du groupe 'a', ou encore les caractres 'A' et 'a'.) Cela permet d'assouplir les recherches d'informations dans une table. QUELLE EST LA SYNTAXE DE LA REQUETE PERMET TANT DE CREER LA BAS E BIBLIOTHEQUE AVEC CE S CARACTERISTIQUES? Vrifiez que votre base existe bien. Si vous vous trompez, c'est mal, mais on peut rparer a grce la requte DROP. QUE FAIT LA REQUETE DROP?

3.2.

C R E AT I O N D ' U N

UT I LI S AT EU R

Un des aspects d'un SGBD est de pouvoir grer plusieurs bases de donnes, et bien sur de crer les utilisateurs qui auront des droits sur ces bases. On peut cloisonner tout cela. Par exemple, l'utilisateur dalles pourra administrer la BDD bibliotheque mais n'aura aucun accs la BDD service_financier. De mme, l'utilisateur j_loquet ne pourra que consulter la BDD bibliotheque. Vous allez donc crer un administrateur de votre base du nom de a_france (rfrence Anatole France). Dans un premier temps, on ne s'occupera pas des privilges de cet utilisateur. La requte ressemble trangement celle vue en 3.1. QUELLE EST LA SYNTAXE DE LA REQUETE PERMETTANT DE CREER UN UTILISATEUR EN SPECIFIANT SON MOT DE PASSE ET L'HOTE (LOCALHOST DANS NOTRE CAS)? Pour vrifier que votre utilisateur a bien t cr, vous pouvez consulter la table user de la base mysql. Pour cela, slectionnez la base mysql avec la commande use (vue dans l'aide prcdemment). Ensuite, vrifiez qu'il existe bien une table user grce la requte SHOW (indice: vous voulez que la requte vous montre des tables). Toujours grce SHOW, vous pouvez aussi voir les champs qui composent la table user. (indice: vous dsirez voir des champs cette fois-ci, pensez la traduction anglaise de ce mot)

TP Base de donnes
Installation d'un serveur MySQL et initiation au langage SQL Gilles Dalles La requte SELECT vous permettra de visualiser le contenu de la table user. Q U E L L E E S T L A S Y N T A X E D E L A R E Q U E T E SE LEC T V O U S P E R M E T T A N T D E N'AFFICHER QUE L'HOTE, LE NOM D'UTILISATEUR ET SON MOT DE PASSE?

3.3.

P R I V I LE G E S
Votre utilisateur a_france peut dsormais se connecter au serveur et c'est peu prs tout. Il n'a aucun droit sur le serveur. Vous allez donc lui attribuer les droits d'administrer la base bibliotheque. Pour a, il existe la requte GRANT. Q U E L L E E S T L A S Y N T A X E D E L A R E Q U E T E G RA NT P E R M E T T A N T D ' A C C O R D E R TOUS LES PRIVILEGES A L'UTILISATEUR A _FRANCE SUR LA BASE BIBLIOTHEQUE ? Une fois votre utilisateur cr, dconnectez vous et reconnectez vous en tant que a_france.

4. C REATION

DE TABLES
Par rapport l'activit que nous avons eue prcdemment, vous devez tre en mesure de crer les tables de la base bibliotheque. Il faut toutefois se pencher sur le type de chaque champs, le moteur utiliser (InnoDB pour nous, nous simplifiera la vie sur la suppression de certains enregistrements), dfinir les cls primaires, tablir les relations entre tables, etc Dans un premier temps, ne vous proccupez pas d'tablir les cls primaires, trangres et tutti quanti. Faites vos tables le plus simplement possible. Ceci tant dit, il est plus simple de tout faire d'un coup, si vous vous sentez l'me aventureuse, je ne vous empcherais pas de procder ainsi. QUELLE REQUETE PERMET DE CREER UNE TABLE ? On a le droit de se tromper: oublier un champ, se tromper de type de variable, avoir un champ en trop, etc Du coup, videmment, on peut tout effacer et recommencer (DROP) ou modifier l'existant: ALTER TABLE est l pour a. Pour les moins aventureux, donc, c'est par cette requte qu'il vous faudra dfinir vos cls primaires. Attention, le fait de rendre un champ auto incrment ncessite qu'il soit dfini galement comme index, dans notre cas, une cl primaire. Les cls trangres (foreign keys) sont aussi spcifier. InnoDB vous permet de slectionner les actions raliser en cas de: Suppression de la cl primaire (de l'enregistrement qu'elle identifie) rfrence (ON DELETE) Modification de l'enregistrement rfrenc par la cl primaire rfrence (ON UPDATE)

TP Base de donnes
Installation d'un serveur MySQL et initiation au langage SQL Gilles Dalles Ces actions sont au nombre de 3 (enfin 4 mais bon): CASCADE: modifie ou supprime en cascade. Par exemple, une cl primaire est supprime, sa rfrence dans les autres tables via les cls trangres est galement supprime SET NULL: les cls trangres sont mises zro. Les enregistrements dont elles font partie sont alors conservs RESTRICT ou NO ACTION: aucune rpercussion sur les cls trangres. On choisira de base CASCADE pour ON DELETE et RESTRICT pour ON UPDATE. Petit conseil, il ne serait peut tre pas idiot d'crire et de regrouper vos requtes de cration de table sur un fichier texte. La correction sera bien plus simple en cas d'erreur.

5. I NSERTION

ET SELECTION DE DONNEES
Une fois les tables faites, il faut les remplir. Et donc, il va vous falloir faire preuve d'imagination. Pour rappel, nous laborons une base de donnes pour une bibliothque. Il vous faut comme informations: Des titres de livres Des auteurs Des diteurs Des genres Des clients de la bibliothque La requte INSERT INTO vous permettra d'ajouter des enregistrements vos tables. Evidemment, vous pouvez aussi mettre jour vous enregistrements, la requte UPDATE est l pour a. Et enfin, si vous souhaitez supprimer un enregistrement, DELETE vous y aidera simplement.

5.1.

S O US - R EQ U ET ES
Les cls trangres posent (encore) des problmes: en effet, comment insrer un enregistrement dont la valeur de l'un des champs nous est inconnue? L'un des moyens d'y parvenir est d'utiliser la requte INSERT INTO avec en guise de valeur insrer une sous-requte SELECT. Attention, vous devez tre certain que la sous-requte ne retournera qu'un seul rsultat. C'est un bon moyen de remplir les tables qui n'tablissent que des relations entre cls trangres.