Comment déposer unique dans MySQL?

139
Create Table: CREATE TABLE `fuinfo` (
  `fid` int(10) unsigned NOT NULL,
  `name` varchar(40) NOT NULL,
  `email` varchar(128) NOT NULL,
  UNIQUE KEY `email` (`email`),
  UNIQUE KEY `fid` (`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Je souhaite supprimer la clé unique email, comment?

Masque
la source

Réponses:

278

Vous pouvez simplement utiliser le script SQL suivant pour supprimer l'index dans MySQL:

alter table fuinfo drop index email;
Wael Dalloul
la source
26
Notez que vous ne pourrez peut-être pas supprimer une clé comme celle-ci s'il emailexiste une clé étrangère dans la colonne (erreur 150). Pour que cela fonctionne, supprimez d'abord la clé étrangère, puis supprimez l'index et recréez la clé étrangère par la suite. par exemple ALTER TABLE fuinfo DROP clé étrangère fk_name_for_email;
Brad Parks
61

Il existe une meilleure façon de ne pas avoir besoin de modifier la table:

mysql> DROP INDEX email ON fuinfo;

où email est le nom de la clé unique (index).

Vous pouvez également le ramener comme ça:

mysql> CREATE UNIQUE INDEX email ON fuinfo(email);

où l'email après IDEX est le nom de l'index et n'est pas facultatif. Vous pouvez utiliser KEY au lieu d'INDEX.

Il est également possible de créer (supprimer) des indécies uniques multicolonnes comme ça:

mysql> CREATE UNIQUE INDEX email_fid ON fuinfo(email, fid);
mysql> DROP INDEX email_fid ON fuinfo;

Si vous n'avez pas spécifié le nom de l'index multicolonne, vous pouvez le supprimer comme ça:

mysql> DROP INDEX email ON fuinfo;

où email est le nom de la colonne.

arty
la source
5
tout cela fera de toute façon un ALTER TABLE, donc ce n'est pas comme si vous évitiez vraiment cela. C'est juste une syntaxe différente pour la même chose.
mpeters le
9

mysql> DROP INDEX email ON fuinfo;

où l' email est la clé unique (plutôt que le nom de la colonne). Vous trouvez le nom de la clé unique par

mysql> SHOW CREATE TABLE fuinfo;

ici vous voyez le nom de la clé unique, qui pourrait être email_2, par exemple. Alors...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Cela devrait montrer que l'index est supprimé

Gavin
la source
5

Utilisez la requête ci-dessous:

ALTER TABLE `table_name` DROP INDEX key_name;

Si vous ne connaissez pas le nom_clé, essayez d'abord la requête ci-dessous, vous pouvez obtenir le nom_clé.

SHOW CREATE TABLE table_name

OU

SHOW INDEX FROM table_name;

Si vous souhaitez supprimer / supprimer la clé primaire de la table mysql, utilisez la requête ci-dessous pour cela

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Code extrait de: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html

Chandresh
la source
4

DROP INDEX column_nameON nom_table

Sélectionnez la base de données et interrogez sous l'onglet sql, ce qui supprime l'index de la colonne particulière. Cela a fonctionné pour moi dans PHP MyADMIN

Lina Gom
la source
3

Cela peut aider les autres

alter table fuinfo drop index fuinfo_email_unique
Md Rashedul Hoque Bhuiyan
la source
2

Pour MySQL 5.7.11

Étape 1: Obtenez d'abord la clé unique

Utilisez cette requête pour l'obtenir:

1.1) SHOW CREATE TABLE User;

Dans le dernier, ce sera comme ceci:

.....

.....

CLÉ UNIQUE UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Étape 2: supprimez la clé unique par cette requête.

ALTER TABLE Utilisateur DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Étape 3: Vérifiez les informations de la table, par cette requête:

Utilisateur DESC;

Cela devrait montrer que l'index est supprimé

C'est tout.

ArunDhwaj IIITH
la source
1

ALTER TABLE 0_value_addition_setup  DROP  INDEX   value_code
puissance radhason
la source
1

Essayez-le pour supprimer l'uique d'une colonne:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Exécutez ce code dans phpmyadmin et supprimez l'unique de la colonne

Radhason
la source
0
 ALTER TABLE [table name] DROP KEY [key name];

cela fonctionnera.

Curtis H
la source