CHAPITRE 2 : LE LANGAGE SQL
Le SQL (Structured Query Language) est un langage permettant de communiquer
avec une base de données. Ce langage informatique est notamment très utilisé par les
développeurs web pour communiquer avec les données d’un site web.
Il permet, d’insérer, modifier et supprimer des données dans une base.
SQL CREATE DATABASE
La création d’une base de données en SQL est possible en ligne de commande.
Même si les systèmes de gestion de base de données (SGBD) sont souvent utilisés
pour créer une base, il convient de connaître la commande à utiliser, qui est très
simple.
Syntaxe
Pour créer une base de données qui sera appelé “ma_base” il suffit d’utiliser la
requête suivante qui est très simple :
CREATE DATABASE ma_base
Base du même nom qui existe déjà
Avec MySQL, si une base de données porte déjà ce nom, la requête retournera une
erreur. Pour éviter d’avoir cette erreur, il convient d’utiliser la requête suivante pour
MySQL:
CREATE DATABASE IF NOT EXISTS ma_base
L’option IF NOT EXISTS permet juste de ne pas retourner d’erreur si une base du
même nom existe déjà. La base de données ne sera pas écrasée.
Options
Dans le standard SQL la commande CREATE DATABASE n’existe normalement pas.
En conséquent il revient de vérifier la documentation des différents SGBD pour
vérifier les syntaxes possibles pour définir des options. Ces options permettent selon
les cas, de définir les jeux de caractères, le propriétaire de la base ou même les
limites de connexion.
SQL CREATE TABLE
La commande CREATE TABLE permet de créer une table en SQL. Un tableau est une
entité qui est contenu dans une base de données pour stocker des données ordonnées
dans des colonnes. La création d’une table sert à définir les colonnes et le type de
données qui seront contenus dans chacun des colonne (entier, chaîne de caractères,
date, valeur binaire …).
Syntaxe
La syntaxe générale pour créer une table est la suivante :
CREATE TABLE nom_de_la_table
colonne1 type_donnees,
colonne2 type_donnees, colonne3
type_donnees, colonne4
type_donnees
Dans cette requête, 4 colonnes ont été définies. Le mot-clé “type_donnees” sera à
remplacer par un mot-clé pour définir le type de données (INT, DATE, TEXT …). Pour
chaque colonne, il est également possible de définir des options telles que (liste non-
exhaustive):
▪ NOT NULL : empêche d’enregistrer une valeur nulle pour une colonne.
▪ DEFAULT : attribuer une valeur par défaut si aucune données n’est indiquée
pour cette colonne lors de l’ajout d’une ligne dans la table.
▪ PRIMARY KEY : indiquer si cette colonne est considérée comme clé primaire
pour un index.
Exemple Imaginons que l’ont souhaite créer une table utilisateur, dans laquelle
chaque ligne correspond à un utilisateur inscrit sur un site web. La requête pour
créer cette table peut ressembler à ceci:
CREATE TABLE utilisateur
id INT PRIMARY KEY NOT NULL,
nom VARCHAR(100), prenom
VARCHAR(100), email
VARCHAR(255), date_naissance
DATE, pays VARCHAR(255),
ville VARCHAR(255), code_postal
VARCHAR(5), nombre_achat INT
Voici des explications sur les colonnes créées :
▪ id : identifiant unique qui est utilisé comme clé primaire et qui n’est pas nulle
▪ nom : nom de l’utilisateur dans une colonne de type VARCHAR avec un
maximum de 100 caractères au maximum
▪ prenom : idem mais pour le prénom
▪ email : adresse email enregistré sous 255 caractères au maximum
▪ date_naissance : date de naissance enregistré au format AAAA-MM-JJ
(exemple : 1973-11-17)
▪ pays : nom du pays de l’utilisateur sous 255 caractères au maximum
▪ ville : idem pour la ville
▪ code_postal : 5 caractères du code postal
SQL INSERT INTO
L’insertion de données dans une table s’effectue à l’aide de la commande INSERT
INTO. Cette commande permet au choix d’inclure une seule ligne à la base existante
ou plusieurs lignes d’un coup.
Insertion d’une ligne à la fois
Pour insérer des données dans une base, il y a 2 syntaxes principales :
▪ Insérer une ligne en indiquant les informations pour chaque colonne existante
(en respectant l’ordre)
▪ Insérer une ligne en spécifiant les colonnes que vous souhaiter compléter. Il est
possible d’insérer une ligne renseignant seulement une partie des colonnes
Insérer une ligne en spécifiant toutes les colonnes
La syntaxe pour remplir une ligne avec cette méthode est la suivante :
INSERT INTO table VALUES ('valeur 1', 'valeur 2', ...)
Cette syntaxe possède les avantages et inconvénients suivants :
▪Obliger de remplir toutes les données, tout en respectant l’ordre des colonnes
▪ Il n’y a pas le nom de colonne, donc les fautes de frappe sont limitées. Par
ailleurs, les colonnes peuvent être renommées sans avoir à changer la requête
▪ L’ordre des colonnes doit resté identique sinon certaines valeurs prennent le
risque d’être complétée dans la mauvaise colonne
Insérer une ligne en spécifiant seulement les colonnes souhaitées
Cette deuxième solution est très similaire, excepté qu’il faut indiquer le nom des colonnes
avant “VALUES”. La syntaxe est la suivante :
INSERT INTO table (nom_colonne_1, nom_colonne_2, ...
VALUES ('valeur 1', 'valeur 2', ...)
A noter : il est possible de ne pas renseigner toutes les colonnes. De plus, l’ordre
des colonnes n’est pas important. Insertion de plusieurs lignes à la fois
Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête. Pour
ce faire, il convient d’utiliser la syntaxe suivante :
INSERT INTO client (prenom, nom, ville, age)
VALUES
('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),
('Aimée', 'Hebert', 'Marigny-le-Châtel', 36),
('Marielle', 'Ribeiro', 'Maillères', 27),
('Hilaire', 'Savary', 'Conie-Molitard', 58);
SQL SELECT
L’utilisation la plus courante de SQL consiste à lire des données issues de la base de
données et de retourner des enregistrements dans un tableau de résultat. Cette
commande peut sélectionner une ou plusieurs colonnes d’une table.
Syntaxe
SELECT colonne 1, colonne 2 …. FROM nom_table
En résumé pour l’utilisation de la commande SELECT il faut
Exemple
Soit la table CLIENT
identifient prenom nom ville
1 samuel VANE IMOUGA Libreville
2 Ronn Joxy GNOSSIGUI NGUIA Lambarene
3 Medy-yess NDONG NDOUTOUME Mouila
4 Lionel FETIO KONOU Tchibanga
5 Keny Jeffrey ESSONO ASSOUMOU Makokou
Si l’ont veut avoir la liste de toutes les villes des clients, il suffit d’effectuer la requête
SQL ci-dessous :
SELECT ville FROM client
De cette manière on obtient le résultat suivant :
Ville
Libreville
Lambarene
Mouila
Tchibanga
Makokou
Avec la même table client il est possible de lire plusieurs colonnes à la fois :
SELECT prenom, nom FROM client
De cette manière on obtient le résultat suivant :
prenom nom
samuel VANE IMOUGA
Ronn Joxy GNOSSIGUI NGUIA
Medy-yess NDONG NDOUTOUME
Lionel FETIO KONOU
Keny Jeffrey ESSONO ASSOUMOU
Il est possible de retourner automatiquement toutes les colonnes d’un tableau avec :
SELECT * FROM client
Le résultat sera donc :
identifient prenom nom ville
1 samuel VANE IMOUGA Libreville
2 Ronn Joxy GNOSSIGUI NGUIA Lambarene
3 Medy-yess NDONG NDOUTOUME Mouila
4 Lionel FETIO KONOU Tchibanga
5 Keny Jeffrey ESSONO ASSOUMOU Makokou
SQL DISTINCT
L’utilisation de la commande SELECT en SQL permet de lire toutes les données
d’une ou plusieurs colonnes. Cette commande peut potentiellement afficher des
lignes en doubles. Pour éviter des redondances dans les résultats il faut simplement
ajouter DISTINCT après le mot SELECT.
L’utilisation basique de cette commande consiste alors à effectuer la requête suivante
:
SELECT DISTINCT colonne FROM table
Requête pour Oracle
Pour le Système de Gestion de Bases de Données (SGBD) Oracle, cette requête est
remplacée par la commande “UNIQUE”:
SELECT UNIQUE colonne FROM table
Prenons le cas concret d’une table “client” qui contient des noms et prénoms :
identifient prenom nom ville
1 samuel VANE IMOUGA Libreville
2 Ronn Joxy GNOSSIGUI NGUIA Lambarene
3 Medy-yess NDONG NDOUTOUME Mouila
4 samuel FETIO KONOU Tchibanga
5 Keny Jeffrey ESSONO ASSOUMOU Makokou
En utilisant seulement SELECT tous les noms sont retournés, or la table contient plusieurs
fois le même prénom (cf. samuel). Pour sélectionner uniquement les prénoms uniques il
faut utiliser la requête suivante:
SELECT DISTINCT prenom FROM client
Cette requête va retourner les champs suivants:
prenom
samuel
Ronn Joxy
Medy-yess
Keny Jeffrey
Ce résultat affiche volontairement qu’une seule fois le prénom “samuel” grâce à
l’utilisation de la commande DISTINCT qui n’affiche que les résultats distincts.
SQL WHERE
La commande WHERE dans une requête SQL permet d’extraire les lignes d’une
base de données qui respectent une condition. Cela permet d’obtenir uniquement les
informations désirées.
Syntaxe
La commande WHERE s’utilise en complément à une requête utilisant SELECT. La
façon la plus simple de l’utiliser est la suivante:
SELECT colonne FROM table WHERE condition
Exemple
Imaginons une base de données appelée “client” qui contient le nom des clients, le
nombre de commandes qu’ils ont effectués et leur ville:
SELECTION DES DONNEES DANS PLUSIEURS TABLES
IL est possible d’associer plusieurs tables dans une même requête. Cela permet
d’exploiter la puissance des bases de données relationnelles pour obtenir des résultats
qui combinent les données de plusieurs tables de manière efficace.
Exemple
Soit la base de données Festival :
• Representation (Num_Rep , titre_Rep , lieu)
• Musicien (Num_mus , nom , #Num_Rep)
• Programmer (Date , #Num_Rep , tarif)
Affichons le nom d’un musicien et le titre de sa représentation :
SELECT titre_Rep,Nom from Representation,Musicien WHERE
Representation.Num_Rep=Musicien.Num_Rep ;
Resultat :
SQL IN
L’opérateur logique IN dans SQL s’utilise avec la commande WHERE pour vérifier si
une colonne est égale à une des valeurs comprise dans set de valeurs déterminés.
C’est une méthode simple pour vérifier si une colonne est égale à une valeur OU une
autre valeur OU une autre valeur et ainsi de suite, sans avoir à utiliser de multiple fois
l’opérateur OR. Syntaxe
Pour chercher toutes les lignes où la colonne “nom_colonne” est égale à ‘valeur 1’
OU ‘valeur 2’ ou ‘valeur 3’, il est possible d’utiliser la syntaxe suivante:
SELECT nom_colonne
FROM table
WHERE nom_colonne IN ( valeur1, valeur2, valeur3, ... )
SQL LIKE
L’opérateur LIKE est utilisé dans la clause WHERE des requêtes SQL. Ce mot-clé
permet d’effectuer une recherche sur un modèle particulier. Il est par exemple possible
de rechercher les enregistrements dont la valeur d’une colonne commence par telle ou
telle lettre. Les modèles de recherches sont multiple.
Syntaxe
La syntaxe à utiliser pour utiliser l’opérateur LIKE est la suivante :
SELECT *
FROM table
WHERE colonne LIKE modele
Dans cet exemple le “modèle” n’a pas été défini, mais il ressemble très généralement
à l’un des exemples suivants:
▪ LIKE ‘%a’ : le caractère “%” est un caractère joker qui remplace tous les autres
caractères. Ainsi, ce modèle permet de rechercher toutes les chaines de
caractère qui se termine par un “a”.
▪ LIKE ‘a%’ : ce modèle permet de rechercher toutes les lignes de “colonne” qui
commence par un “a”.
▪ LIKE ‘%a%’ : ce modèle est utilisé pour rechercher tous les enregistrement qui
utilisent le caractère “a”.
▪ LIKE ‘pa%on’ : ce modèle permet de rechercher les chaines qui commence par
“pa” et qui se terminent par “on”, comme “pantalon” ou “pardon”.
▪ LIKE ‘a_c’ : peu utilisé, le caractère “_” (underscore) peut être remplacé par
n’importe quel caractère, mais un seul caractère uniquement (alors que le
symbole pourcentage “%” peut être remplacé par un nombre incalculable de
caractères . Ainsi, ce modèle permet de retourner les lignes “aac”, “abc” ou
même “azc”.
Exemple
Imaginons une table “client” qui contient les enregistrement d’utilisateurs :
id Nom ville
1 Léon Lyon
2 Odette Nice
3 Vivien Nantes
4 Etienne Lille
Obtenir les résultats qui commencent par “N”
Si l’ont souhaite obtenir uniquement les clients des villes qui commencent par un “N”, il est
possible d’utiliser la requête suivante:
SELECT *
FROM client
WHERE ville LIKE 'N%'
Avec cette requête, seul les enregistrements suivants seront retournés :
id Nom ville
2 Odette Nice
3 Vivien Nantes
Obtenir les résultats terminent par “e”
Requête :
SELECT *
FROM client
WHERE ville LIKE '%e'
Résultat :
id Nom ville
2 Odette Nice
4 Etienne Lille
SQL HAVING
La condition HAVING en SQL est presque similaire à WHERE à la seule différence
que HAVING permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(),
AVG(), MIN() ou MAX().
Syntaxe
L’utilisation de HAVING s’utilise de la manière suivante :
SELECT colonne1, SUM(colonne2)
FROM nom_table
GROUP BY colonne1
HAVING fonction(colonne2) operateur valeur
Cela permet donc de SÉLECTIONNER les colonnes DE la table “nom_table” en
GROUPANT les lignes qui ont des valeurs identiques sur la colonne “colonne1” et
que la condition de HAVING soit respectée.
Important : HAVING est très souvent utilisé en même temps que GROUP BY bien
que ce ne soit pas obligatoire. Exemple
Pour utiliser un exemple concret, imaginons une table “achat” qui contient les achats
de différents clients avec le coût du panier pour chaque achat.
id Client tarif date_achat
1 Pierre 102 2012-10-23
2 Simon 47 2012-10-27
3 Marie 18 2012-11-05
4 Marie 20 2012-11-14
5 Pierre 160 2012-12-03
Si dans cette table on souhaite récupérer la liste des clients qui ont commandé plus
de 40€, toute commandes confondu alors il est possible d’utiliser la requête suivante
:
SELECT client, SUM(tarif)
FROM achat
GROUP BY client
HAVING SUM(tarif) > 40 Résultat
:
client SUM(tarif)
Pierre 262
Simon 47
SQL BETWEEN
L’opérateur BETWEEN est utilisé dans une requête SQL pour sélectionner un
intervalle de données dans une requête utilisant WHERE. L’intervalle peut être
constitué de chaînes de caractères, de nombres ou de dates. L’exemple le plus
concret consiste par exemple à récupérer uniquement les enregistrements entre 2
dates définies.
Syntaxe
L’utilisation de la commande BETWEEN s’effectue de la manière suivante :
SELECT *
FROM table
WHERE nom_colonne BETWEEN 'valeur1' AND 'valeur2'
La requête suivante retournera toutes les lignes dont la valeur de la colonne
“nom_colonne” sera comprise entre valeur1 et valeur2. Exemple
: filtrer entre 2 dates
Imaginons une table “utilisateur” qui contient les membres d’une application en ligne.
id Nom date_inscription
1 Maurice 2012-03-02
2 Simon 2012-03-05
3 Chloé 2012-04-14
4 Marie 2012-04-15
5 Clémentine 2012-04-26
Si l’on souhaite obtenir les membres qui se sont inscrit entre le 1 avril 2012 et le 20
avril 2012 il est possible d’effectuer la requête suivante:
SELECT *
FROM utilisateur
WHERE date_inscription BETWEEN ‘2012-04-01’ AND ‘2012-04-20’
Résultat :
id Nom date_inscription
3 Chloé 2012-04-14
4 Marie 2012-04-15
Exemple: filtrer entre 2 entiers
Si l’on souhaite obtenir tous les résultats dont l’identifiant n’est pas situé entre 4 et
10, il faudra alors utiliser la requête suivante :
SELECT *
FROM utilisateur
WHERE id NOT BETWEEN 4 AND 10
Résultat :
id Nom date_inscription
1 Maurice 2012-03-02
2 Simon 2012-03-05
3 Chloé 2012-04-14
Syntaxe
La syntaxe pour supprimer des lignes est la suivante :
DELETE FROM `table`
WHERE condition
Attention : s’il n’y a pas de condition WHERE alors toutes les lignes seront
supprimées et la table sera alors vide. Exemple
Imaginons une table “utilisateur” qui contient des informations sur les utilisateurs
d’une application.
Table “utilisateur” :
id nom prenom date_inscription
1 Bazin Daniel 2012-02-13
2 Favre Constantin 2012-04-03
3 Clerc Guillaume 2012-04-12
4 Ricard Rosemonde 2012-06-24
5 Martin Natalie 2012-07-02
Supprimer une ligne
Il est possible de supprimer une ligne en effectuant la requête SQL suivante :
DELETE FROM `utilisateur`
WHERE `id` = 1
Une fois cette requête effectuée, la table contiendra les données suivantes :
id nom prenom date_inscription
2 Favre Constantin 2012-04-03
3 Clerc Guillaume 2012-04-12
4 Ricard Rosemonde 2012-06-24
5 Martin Natalie 2012-07-02
Supprimer plusieurs lignes
Si l’on souhaite supprimer les utilisateurs qui se sont inscrit avant le 10/04/2012, il va falloir
effectuer la requête suivante :
DELETE FROM `utilisateur`
WHERE `date_inscription` < '2012-04-10'
La requête permettra alors de supprimer les utilisateurs “Daniel” et “Constantin”. La
table contiendra alors les données suivantes :
id nom prenom date_inscription
3 Clerc Guillaume 2012-04-12
4 Ricard Rosemonde 2012-06-24
5 Martin Natalie 2012-07-02
Il ne faut pas oublier qu’il est possible d’utiliser d’autres conditions pour sélectionner
les lignes à supprimer.
Supprimer toutes les données
Pour supprimer toutes les lignes d’une table il convient d’utiliser la commande
DELETE sans utiliser de clause conditionnelle.
DELETE FROM `utilisateur`
Supprimer toutes les données : DELETE ou TRUNCATE
Pour supprimer toutes les lignes d’une table, il est aussi possible d’utiliser la
commande TRUNCATE, de la façon suivante : TRUNCATE TABLE `utilisateur`
Cette requête est similaire. La différence majeure étant que la commande TRUNCATE
va ré-initialiser l’auto-incrémente s’il y en a un. Tandis que la commande DELETE ne
ré-initialise pas l’auto-incrément.
SQL UPDATE
La commande UPDATE permet d’effectuer des modifications sur des lignes
existantes. Très souvent cette commande est utilisée avec WHERE pour spécifier sur
quelles lignes doivent porter la ou les modifications.
Syntaxe
La syntaxe basique d’une requête utilisant UPDATE est la suivante :
UPDATE table
SET nom_colonne_1 = 'nouvelle valeur'
WHERE condition
Cette syntaxe permet d’attribuer une nouvelle valeur à la colonne nom_colonne_1
pour les lignes qui respectent la condition stipulé avec WHERE. Il est aussi possible
d’attribuer la même valeur à la colonne nom_colonne_1 pour toutes les lignes d’une
table si la condition WHERE n’était pas utilisée.
A noter, pour spécifier en une seule fois plusieurs modification, il faut séparer les
attributions de valeur par des virgules. Ainsi la syntaxe deviendrait la suivante :
UPDATE table
SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'
WHERE condition
Exemple
Imaginons une table “client” qui présente les coordonnées de clients.
Table “client” :
id nom rue ville code_postal pays
1 Chantal 12 Avenue du Petit Puteaux 92800 France
Trianon
2 Pierre 18 Rue de l'Allier Ponthion 51300 France
3 Romain 3 Chemin du Chiron Trévérien 35190 France
Modifier une ligne
Pour modifier l’adresse du client Pierre, il est possible d’utiliser la requête SQL suivante :
UPDATE client
SET rue = '49 Rue Ameline',
ville = 'Saint-Eustache-la-Forêt',
code_postal = '76210'
WHERE id = 2
Cette requête sert à définir la colonne rue à “49 Rue Ameline”, la ville à “SaintEustache-la-Forêt”
et le code postal à “76210” uniquement pour ligne où l’identifiant est égal à 2.
Résultats :
id nom rue ville code_postal pays
1 Chantal 12 Avenue du Puteaux 92800 France
Petit Trianon
2 Pierre 49 Rue Ameline Saint-Eustachela- 76210 France
Forêt
3 Romain 3 Chemin du Trévérien 35190 France
Chiron
Modifier toutes les lignes
Il est possible d’effectuer une modification sur toutes les lignes en omettant d’utiliser une
clause conditionnelle. Il est par exemple possible de mettre la valeur “FRANCE” dans la
colonne “pays” pour toutes les lignes de la table, grâce à la requête SQL cidessous.
UPDATE client
SET pays = 'FRANCE'
Résultats :
id nom rue ville code_postal pays
1 Chantal 12 Avenue du Puteaux 92800 FRANCE
Petit Trianon
2 Pierre 49 Rue SaintEustache- 76210 FRANCE
Ameline laForêt
3 Romain 3 Chemin du Trévérien 35190 FRANCE
Chiron
Création et manipulations des vues et des index
Les vues
En SQL, une vue est une table virtuelle qui est créée à partir d'une requête. Elle permet d'enregistrer une requête
complexe sous un nom et de l'utiliser comme une table. Voici la syntaxe de base pour créer une vue :
CREATE VIEW nom_de_la_vue AS
SELECT colonnes
FROM table(s)
WHERE conditions ;
Exemple
Supposons que vous ayez une table appelée employés avec les colonnes id, nom, salaire, et département. Si vous
souhaitez créer une vue pour afficher uniquement les employés du département "Ventes" avec un salaire supérieur
à 50 000, vous pouvez écrire :
CREATE VIEW vue_ventes AS
SELECT id, nom, salaire
FROM employes
WHERE departement = 'Ventes' AND salaire > 50000 ;
Les index
En SQL, un index est une structure de données qui améliore la vitesse d'exécution des requêtes de recherche et
de tri sur une ou plusieurs colonnes d'une table. La syntaxe de création d'un index dépend du type d'index que vous
souhaitez créer (standard, unique, etc.). Voici les formes les plus courantes :
1. Création d'un Index Standard
Pour créer un index simple sur une colonne ou un ensemble de colonnes :
CREATE INDEX nom_de_l_index ON nom_de_la_table (colonne);
Exemple
Supposons que vous ayez une table employes et que vous souhaitiez créer un index pour accélérer les recherches
basées sur la colonne nom :
CREATE INDEX idx_nom
ON employes (nom);
Autres exemples :
Exercice 1 : Création d'un Index Simple
Énoncé :
Vous avez une table clients avec les colonnes suivantes : id_client, nom, prenom, ville, email.
Créez un index sur la colonne nom pour accélérer les recherches par nom.
CREATE INDEX idx_nom ON clients (nom);
Cet index permettra d'accélérer les recherches sur la colonne nom, notamment pour les requêtes du type
SELECT * FROM clients WHERE nom = 'Dupont';
Exercice 2 : Création d'un Index Unique
Énoncé :
Vous avez une table utilisateurs avec les colonnes id, username, email.
Créez un index unique sur la colonne email pour assurer qu'aucun utilisateur n'aura la même adresse email.
CREATE UNIQUE INDEX idx_email_unique ON utilisateurs (email);
L'index unique garantit l'unicité de chaque adresse email, évitant ainsi les doublons dans cette colonne.
Exercice 3 : Création d'un Index Composé
Énoncé :
Vous avez une table commandes avec les colonnes id_commande, id_client, date_commande, montant.
Créez un index composé sur les colonnes id_client et date_commande pour optimiser les recherches des commandes
d'un client spécifique par date.
CREATE INDEX idx_client_date ON commandes (id_client, date_commande);
Cet index est particulièrement utile pour les requêtes du type
SELECT * FROM commandes WHERE id_client = 123 ORDER BY date_commande;.
Exercice 4 : Suppression d'un Index
Énoncé :
Supprimez l'index idx_nom créé précédemment sur la table clients.
DROP INDEX idx_nom;
Webographie
[Link]