Algunas veces tendremos la necesidad de cambiar o eliminar un �ndice. Cuando hagamos alg�n cambio en el �ndice, necesitamos eliminar primero el �ndice y entonces reconstruirlo con la nueva definici�n.
Para eliminar un �ndice de clave primaria podemos usar la siguiente sintaxis:
ALTER TABLE nombreTabla DROP PRIMARY KEY;
Para eliminar un �ndice ordinario, �nico, o de texto completo, necesitamos especificar el nombre del �ndice y usar esta sintaxis:
ALTER TABLE nombreTabla DROP INDEX nombreIndice;
Tambi�n es v�lida esta otra sintaxis:
DROP INDEX nombreIndice ON nombreTabla;
Si no estamos seguros de cu�l es el nombre del �ndice que deseamos eliminar, podemos hacer uso de la sentencia SHOW KEYS:
SHOW KEYS FROM nombreTabla;
Este es un ejemplo.
CREATE TABLE usuarios ( id INT NOT, nombre VARCHAR(50) NOT NULL, apellidos VARCHAR(70) NOT NULL, PRIMARY KEY (id), INDEX (nombre, apellidos) );
Veamos los �ndices que existen en esta tabla:
mysql> SHOW KEYS FROM usuarios; +----------+------------+----------+--------------+-------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | +----------+------------+----------+--------------+-------------+ . | usuarios | 0 | PRIMARY | 1 | id | . | usuarios | 1 | nombre | 1 | nombre | . | usuarios | 1 | nombre | 2 | apellidos | +----------+------------+----------+--------------+-------------+ 3 rows in set (0.00 sec)
La tercera columna es la que nos proporciona los nombres de los �ndices. Podemos observar que al no especificar un nombre al �ndice ordinario en (nombre, apellidos), se le ha asignado el nombre de la primera columna que forma el �ndice.
A continuaci�n vamos a eliminar los dos �ndices que existen en esta tabla:
mysql> ALTER TABLE usuarios DROP PRIMARY KEY; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> ALTER TABLE usuarios DROP INDEX nombre; Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
Por �ltimo, podemos verificar que estos �ndices ya no existen:
mysql> SHOW KEYS FROM usuarios; Empty set (0.00 sec)