Suppression d’une base de données en SQL

 

Pour supprimer une base de données, on utilise la commande DROP TDATABASE suivi du nom de la base de données. Elle a pour syntaxe :

DROP DATABASE nom_BDD ;

Soit une base de données nommée customers. Pour supprimer customers on utilise la commande suivante :

DROP DATABASE customers ;

La commande DROP supprime la base de données et tout son contenu (les tables avec leurs colonnes et lignes).

Dans le cadre d’un projet, il serait mieux de sauvegarder la base de données avant de la supprimer car après l’usage de cette dangereuse commande, l’action est irréversible. On ne peut plus faire la récupération.

Comment accéder à une base de données et la supprimer ?

Il existe  plusieurs façons pour accéder aux bases de données si on a les droits d’accès.

Pour MySQL, on peut :

Soit passé par la page d’administration web phpmyadmin et là on peut aller sur l’onglet Base de données puis sélection le nom de base de données concerné et cliquer sur Supprimer ou on peut aller dans l’onglet suivant SQL et utiliser la dangereuse DROP (DROP DATABASE nom_BDD 😉 ;

Soit passé par la console MySQL depuis Wamp ou Xamp Sever et une fois ouvert la console, on peut  utiliser  show databases pour connaître le nom et utiliser DROP ;

Soit repérer le fichier mysql.exe du dossier d’installation de mysql qui pourait être sous Windows comme C:\wamp\bin\mysql\mysqlX.X.X\bin>mysql.exe. Lorsqu’on arrive à ce niveau, accède à MySQL en saisissant la commande –u user –p. user est votre nom d’utilisateur. Le système va ensuite demander le mot de passe de l’utilisateur user.

 

Suppression d’une table en SQL

Pour supprimer une table en SQL, on utilise la commande DROP TABLE suivi de nom de la table. L’exécution de cette commande sur une table supprime entièrement la table avec ses lignes et colonnes y compris les index et les contraintes associées. Il est toujours conseillé de sauvegarder la base de données avant d’utiliser la commande DROP dont l’action n’est pas réversible. La syntaxe donne

DROP TABLE nom_table ;

Limites de la commande DROP TABLE sur une table

Les bases de données relationnelles ont parfois des restrictions sur certaines commandes SQL comme DELETE, TRUNCATE et DROP. Ces restrictions permettent d’obéir aux contraintes d’intégrité référentielle des données. Imaginer que l’on puisse utiliser l’une de ces trois commandes surtout la commande DROP sur une table référencée (table dont la clé primaire est clé étrangère dans d’autres tables) d’une base de données importante. Une telle requête va également supprimer toutes les données correspondantes dans toutes les tables de référence et cela montre qu’il y aura des conséquences dévastatrices sur cette base de données si l’on ne l’avait pas sauvegardée avant.

Donc pour des raisons de respect d’intégrité (intégrité référentielle) des données, la commande DROP TABLE ne peut pas supprimer une table référencée par une contrainte FOREIGN KEY.

Exemple notre base de données contient la table student et la table subject. La table student contient la clé primaire (id_activity) de la table subject, donc dans la table student id_activity est une clé étrangère.

CREATE TABLE subject(

id_activity INT(10) AUTO_INCREMENT,

name VARCHAR(30),

cost VARCHAR(40),

PRIMARY KEY(id_activity)

);

 

CREATE TABLE student (

id_student INT(10)AUTO_INCREMENT,

last_name VARCHAR(40),

first_name VARCHAR(40),

average FLOAT NOT NULL,

id_activity INT(10),

address VARCHAR(30),

FOREIGN KEY(id_activity) REFERENCES subjects(id_activity),

PRIMARY KEY(id_student)

);

Si on exécute la commande DROP TABLE sur la table subject (DROP TABLE subject ;), cela ne marchera pas parce que c’est une table référencée par une contrainte FOREIGN KEY. Soit on supprime la table student avant de la supprimer, soit on supprime les deux à la fois dans une seule requête.

Une table initialement contient une ou plusieurs colonnes.

Comment supprimer en SQL une colonne d’une table ?

Pour supprimer la colonne d’une table, on utilise ALTER TABLE suivi du nom de la table suivi de DROP suivi du nom de la colonne. La syntaxe donne :

ALTER TABLE nom_table DROP nom_colonne ;

Par exemple on veut supprimer la colonne first_name de la table student.

ALTER TABLE student DROP first_name ;

Comment modifier en SQL une colonne à une table ?

Pour modifier le nom d’une colonne de la table on utilise ALTER TABLE suivi du nom de la table suivi de CHANGE suivi du nom de l’encienne colonne puis du nom de la nouvelle colonne. La syntaxe :

ALTER TABLE nom_table CHANGE ancien_nom_colonne  nouveau_nom_colonne ;

Exemple on change le nom de la colonne cost en price de la table subject.

ALTER TABLE subject CHANGE cost price VARCHAR (30);

Comment ajouter en SQL une colonne à une table ?

Pour ajouter une colonne à une table, on utilise ALTER TABLE suivi du nom de la table suivi de ADD suivi du nom de la colonne. La syntaxe donne :

ALTER TABLE nom_table ADD nom_colonne ;

Le nom_colonne ici peut être composé du nom, de type et d’autres contraintes.

Par exemple ajoute une colonne nommée city à la table subject.

ALTER TABLE subject ADD city VARCHAR(20) NOT NULL ;

Comment changer le type de données SQL d’une colonne d’une table ?

La syntaxe est presque la même que celle de modifier le nom d’une colonne sauf qu’ici on ajoute les types.

ALTER TABLE nom_table CHANGE ancien_nom_colonne   nouveau_nom_colonne + nouveau_type ;

Exemple on change la colonne cost de type VARCHAR en price de type INT de la table subject.

ALTER TABLE subject CHANGE cost  price INT(10);

Remarque : En ce qui concerne les modifications, certaines requêtes peuvent ne pas passer si les tables contiennent des lignes (enregistrements).