s'en assurer, il suffit de créer un index unique sur les colonnes espece et nom (un seul index, sur les deux colonnes).
Contraintes
Lorsque vous mettez un index UNIQUE sur une table, vous ne mettez pas seulement un index, vous ajoutez surtout une
contrainte.
Les contraintes sont une notion importante en SQL. Sans le savoir, ou sans savoir que c'était appelé comme ça, vous en avez
déjà utilisé. En effet, lorsque vous empêchez une colonne d'accepter NULL, vous lui mettez une contrainte NOT NULL.
De même, les valeurs par défaut que vous pouvez donner aux colonnes sont des contraintes. Vous contraignez la colonne à
prendre une certaine valeur si aucune autre n'est précisée.
Index FULLTEXT
Un index FULLTEXT est utilisé pour faire des recherches de manière puissante et rapide sur un texte. Seules les tables utilisant
le moteur de stockage MyISAM peuvent avoir un index FULLTEXT, et cela uniquement sur les colonnes de type CHAR,
VARCHAR ou TEXT (ce qui est plutôt logique).
Une différence importante (très importante !!!
) entre les index FULLTEXT et les index classiques (et UNIQUE) est que l'on
ne peut plus utiliser les fameux "index par la gauche" dont je vous ai parlé précédemment. Donc, si vous voulez faire des
recherches "fulltext" sur deux colonnes (parfois l'une, parfois l'autre, parfois les deux ensemble), il vous faudra créer trois index
FULLTEXT : (colonne1), (colonne2) et (colonne1, colonne2).
Création et suppression des index
Les index sont représentés par le mot-clé INDEX (surprise !
) ou KEY et peuvent être créés de deux manières :
soit directement lors de la création de la table ;
soit en les ajoutant par la suite.
Ajout des index lors de la création de la table
Ici aussi, deux possibilités : vous pouvez préciser dans la description de la colonne qu'il s'agit d'un index, ou lister les index par la
suite.
Index dans la description de la colonne
Seuls les index "classiques" et uniques peuvent être créés de cette manière.
Je rappelle que la description de la colonne se rapporte à l'endroit où vous indiquez le type de données, si la colonne peut
contenir NULL, etc. Il est donc possible, à ce même endroit, de préciser si la colonne est un index.
Code : SQL
CREATE TABLE nom_table (
colonne1 INT KEY,
-- Crée un index simple sur
colonne1
colonne2 VARCHAR(40) UNIQUE,
-- Crée un index unique sur
colonne2
);
Quelques petites remarques ici :
Avec cette syntaxe, seul le mot KEY peut être utilisé pour définir un index simple. Ailleurs, vous pourrez utiliser KEY ou
INDEX.
Pour définir un index UNIQUE de cette manière, on n'utilise que le mot-clé UNIQUE, sans le faire précéder de INDEX ou
de KEY (comme ce sera le cas avec d'autres syntaxes).
Il n'est pas possible de définir des index composites (sur plusieurs colonnes) de cette manière.
Il n'est pas non plus possible de créer un index sur une partie de la colonne (les x premiers caractères).
Liste d'index
Partie 2 : Index, jointures et sous-requêtes
76/414
www.openclassrooms.com
Précédent

- 76/413

Suivant