Lolokai – Supervision, systèmes, réseaux, base de données…

0

Gérer vos objets en MySQL

olivier.cadet 9 mai 2012

Introduction

Vous possédez des tables et vous souhaitez les gérer au mieux ? Vous souhaitez pouvoir modifier en profondeur la structure de vos tables ou optimiser le temps d’accès à celle-ci ?
Ce billet pourra vous être utile.

Quelques pré-requis :

  • Posséder quelques bases en langage SQL;
  • Posséder une machine configurée avec WAMP (installation disponible ici)

Ajout et Suppression de tables

Après avoir créer vos bases de données, vous avez la possibilités d’ajouter des tables : tables qui stockeront toutes les données de nos bases.

La création de tables a déjà était traité dans un article. C’est pour cela que nous allons passé directement à la suppression de tables, que ce soit soit avec la console MySQL de Wamp ou phpMyAdmin.

La suppression de tables, que ce soit en utilisant la console MySQL de Wamp ou l’interface graphique de phpMyAdmin, est très simple d’accès.

Sous phpMyAdmin, il vous suffit de vous rendre dans la base de données qui contient la table à supprimer. Dans le menu de gauche, vous cliquez sur la table à supprimer puis, lorsqu’elle est sélectionnée, rendez-vous dans l’onglet Opérations. Dans la sous-partie « Supprimer les données ou la table », cliquez sur « Supprimez la table(DROP) ». Un pop-up de confirmation apparaitra, il vous suffit maintenant de l’accepter.

Sous la console MySQL de Wamp, il vous suffit de vous connecter à la base de données contenant la table à supprimer (voir cet article) puis d’utiliser la syntaxe suivante :

DROP TABLE nom_de_la_table_a_supprimer;

Modification de vos tables

Plusieurs modifications peuvent être apportées à vos tables. En effet, vous avez la possibilité :

  • Ajouter/Supprimer/Modifier une colonne d’une table,
  • Ajouter/Supprimer/Modifier des contraintes à une colonne d’une table,
  • Ajouter/Supprimer des index.

Ajouter/Supprimer/Modifier une colonne d’une table

Pour ajouter une colonne à une table, il faut utiliser la clause ADD dont la syntaxe principal est :

ALTER TABLE nom_de_la_table_à_utiliser
ADD (nom_de_la_colonne_à_ajouter type_de_la_colonne);

Attention, lors de la création d’une colonne en Oracle vous ne pouvez pas préciser la place de cette colonne. En effet, elle sera ajoutée en tant que dernière colonne de la table cible. Par contre en MySQL, il est possible de préciser après quelle colonne l’on veut placer notre nouvelle colonne. Pour cela, il vous suffit d’utiliser le mot clé AFTER.

Par exemple, si vous voulez ajouter la colonne « date_birth » à votre table « student », voila la syntaxe à utiliser :

ALTER TABLE student
ADD (date_birth DATE);

Pour modifier une colonne déjà existante, il vous faut utiliser la clause MODIFY.

ALTER TABLE nom_de_la_table_à_utiliser
MODIFIY (nom_de_la_colonne_à_modifier type_de_la_colonne);

Imaginons que vous vouliez modifier le type de la colonne « last_name » de notre table « student » de VARCHAR(30) à VARCHAR(255), voila la syntaxe adéquate :

ALTER TABLE student
ADD (last_name VARCHAR(255));

Voila une autre modification qui peut vous être utile :

ALTER TABLE nom_de_la_table_à_utiliser
CHANGE (Ancien_nom_de_la_colonne Nouveau_nom_de_la_colonne type_de_la_colonne);

Cette ligne de commande permet de modifier le nom d’une colonne de notre table.

La syntaxe de base pour supprimer une colonne est extrêmement simple. En effet, il vous suffit juste d’utiliser la clause « DROP » :

ALTER TABLE nom_de_la_table_à_utiliser
DROP (nom_de_la_colonne_à_supprimer);

Donc, dans le cas où vous voudriez supprimer la colonne « age » de votre table « student », il vous suffit de faire :

ALTER TABLE student
DROP (age);

Ajouter/Supprimer/Modifier des contraintes à une colonne d’une table

Une contrainte est une sorte de règle de sécurité qui est posée par le concepteur de la base de données et qui permet de gérer la conformité des données de nos tables.

La syntaxe de base pour l’ajout d’une contrainte est la suivante :

ALTER TABLE nom_de_la_table_à_utiliser
ADD CONSTRAINT nom_de_la_contrainte
type_de_contrainte (nom_de_la_colonne_ciblée_par_la_contrainte);

Voici une liste (non-exhaustive) des principales contraintes disponibles pour nos tables :

  • NOT NULL : Une valeur, même non unique, doit être obligatoirement attribuée à chaque champ. Une valeur nulle signifie que le champ est vide, il y a donc une absence de valeur.
  • UNIQUE KEY : Chaque valeur de chaque champ doit être unique. Cependant, la valeur nulle est acceptée.
  • PRIMARY KEY : Chaque valeur de chaque champ doit être unique et non-nulle.
  • FOREIGN KEY : Chaque valeur de chaque champ est liée à une même colonne de cette même table ou d’une table différente. Cependant, la valeur nulle est acceptée.

Prenons pour exemple le fait que vous vouliez que, dans la table « student », la colonne « student_id » fasse référence à la colonne « teacher_id ». Pour cela, vous devez tout d’abord mettre la colonne « teacher_id » en tant que PRIMARY KEY, puis vous passez la colonne ‘student_id » en FOREIGN KEY. Voila la syntaxe à utiliser :

Étape 1 :

ALTER TABLE student
MODIFY (teacher_id PRIMARY KEY);

Étape 2 :

ALTER TABLE student
ADD CONSTRAINT contrainte_1
FOREIGN KEY (student_id)
REFERENCES student (teacher_id);

Vous avez aussi la possibilité d’activer ou de désactiver une contrainte que vous avez appliqué à une de vos tables. Il vous suffit d’utiliser les clauses ENABLE ou DISABLE, tout dépend de ce que vous voulez faire.
Voici donc la syntaxe pour activer ou, au contraire, désactiver une contrainte :

ALTER TABLE nom_de_la_table_à_utiliser
ENABLE/DISABLE CONSTRAINT nom_de_la_contrainte;

Pour finir, du fait que vous pouvez créer des contraintes, vous pouvez logiquement supprimer les contraintes que vous avez auparavant ajouter.

ALTER TABLE nom_de_la_table_à_utiliser
DROP CONSTRAINT nom_de_la_contrainte;

Cette ligne de commande vous permet de supprimer une contrainte en utilisant la clause DROP CONSTRAINT. Pour supprimer toutes les contraintes reliées à une clé primaire ou à une clé unique, il vous suffit d’utiliser la clause CASCADE CONSTRAINTS de la façon suivante :

ALTER TABLE nom_de_la_table_à_utiliser
DROP COLUMN nom_de_la_colonne_à_supprimer
CASCADE CONSTRAINTS;

Reprenons notre exemple précédent. Imaginons que l’on voudrait supprimer la colonne « student_id » ainsi que toutes les contraintes qui lui sont attribuées, voila la syntaxe a utilisée :

ALTER TABLE student
DROP COLUMN student_id
CASCADE CONSTRAINTS;

Ajouter/Supprimer des index

Un index est un objet qui permet d’indexer des colonnes afin de pouvoir optimiser de façon importante le temps d’accès à celle-ci lors de l’utilisation d’une requête. Globalement, un index d’une table peut être représenté comme étant similaire au sommaire d’un livre : il n’est pas indispensable mais permet d’accéder à une partie précise sans perdre de temps lors des recherches. Cependant, l’utilisation d’index doit être utiliser avec parcimonie et le choix des colonnes à indexer doit être pertinent et murement réfléchi. En effet, les index utilisent la mémoire de la base de données et peut donc ralentir celle-ci lors d’une saisie de données.

La syntaxe pour créer un index est la suivante :

CREATE [UNIQUE] INDEX nom_de_l_index
ON nom_de_la_table_cible (nom_des_colonnes_cibles [ASC/DESC]);

Pour créer un index, il faut donc utiliser la clause CREATE INDEX. Le mot clé UNIQUE permet de définir l’unicité des données de la colonne (si il y a présence de doublons ou pas). Quant aux mots clés ASC et DESC, ils permettent de définir l’ordre de classement des données de la colonne (un ordre ascendant/croissant ou un ordre descendant/décroissant).

Dans le cas contraire, si vous souhaitez supprimer un index, il vous faut utiliser la clause DROP INDEX :

DROP INDEX nom_de_l_index;

Conclusion

Ce billet est maintenant terminé. Nous avons vu comment gérer nos tables en MySQL. Pour cela, nous avons la possibilité de manager nos tables, d’ajouter/supprimer/modifier des contraintes à certaines colonnes et d’ajouter/Supprimer des index. Si vous avez la moindre question ou remarque, n’hésiter pas. Je serai ravi d’y répondre.olivier.cadet

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!