MySQL'de benzersiz nasıl bırakılır?


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

Eşsiz anahtarı bırakmak istiyorum email, nasıl?

Yanıtlar:


278

MySQL içindeki dizini silmek için aşağıdaki SQL Script'i kullanabilirsiniz:

alter table fuinfo drop index email;

26
emailSütuna yabancı bir anahtar varsa, böyle bir anahtarı bırakamayabileceğinizi unutmayın (hata 150). Bunun işe yaraması için önce yabancı anahtarı bırakın, ardından dizini bırakın ve daha sonra yabancı anahtarı yeniden oluşturun. örneğin ALTER TABLE fuinfo DROP yabancı anahtar fk_name_for_email;
Brad Parks

61

Masayı değiştirmeniz gerekmeyen daha iyi bir yol var:

mysql> DROP INDEX email ON fuinfo;

burada e-posta benzersiz anahtarın (dizin) adıdır.

Ayrıca şu şekilde geri getirebilirsiniz:

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

burada IDEX'ten sonraki e-posta dizinin adıdır ve isteğe bağlı değildir. INDEX yerine KEY kullanabilirsiniz.

Ayrıca böyle çok sütunlu benzersiz dizinler oluşturmak (kaldırmak) mümkündür:

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

Çok sütunlu dizinin adını belirtmediyseniz, aşağıdaki gibi kaldırabilirsiniz:

mysql> DROP INDEX email ON fuinfo;

burada e-posta sütun adıdır.


5
bunların hepsi aslında zaten bir ALTER TABLE yapacak, bu yüzden gerçekten bundan kaçındığınız gibi değil. Aynı şey için sadece farklı bir sözdizimi.
mpeters

9

mysql> DROP INDEX e-posta AÇIK fuinfo;

burada e-posta benzersiz bir anahtardır (sütun adı yerine). Benzersiz anahtarın adını şu şekilde bulabilirsiniz:

mysql> SHOW CREATE TABLE fuinfo;

burada, örneğin e-posta_2 olabilecek benzersiz anahtarın adını görürsünüz. Yani...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Bu, dizinin kaldırıldığını göstermelidir


5

Aşağıdaki sorguyu kullanın:

ALTER TABLE `table_name` DROP INDEX key_name;

Anahtar_adı bilmiyorsanız, önce aşağıdaki sorguyu deneyin, anahtar_adı alabilirsiniz.

SHOW CREATE TABLE table_name

VEYA

SHOW INDEX FROM table_name;

Birincil anahtarı mysql tablosundan kaldırmak / bırakmak istiyorsanız, bunun için aşağıdaki sorguyu kullanın

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Alınan Kod: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html


4

Drop INDEX column_nameON tablo_ismi

Sql sekmesinden veritabanını ve sorguyu seçin.Bu, belirli bir sütunun dizinini kaldırır. PHP MyADMIN'de benim için çalıştı



2

MySQL 5.7.11 için

Adım-1: Önce Benzersiz Anahtarı edinin

Almak için bu sorguyu kullanın:

1.1) TABLO NASIL OLUŞTURUN Kullanıcı;

Sonunda, böyle olacak:

.....

.....

EŞSİZ ANAHTAR UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Adım-2: Benzersiz sorgu bu sorgu ile kaldırın.

ALTER TABLE Kullanıcı DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

3. Adım: Bu sorgu ile tablo bilgilerini kontrol edin:

DESC Kullanıcısı;

Bu, dizinin kaldırıldığını göstermelidir

Bu kadar.



1

Bir sütunun benzerini kaldırmak için deneyin:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Bu kodu phpmyadmin'de çalıştırın ve benzersiz sütunu kaldırın


0
 ALTER TABLE [table name] DROP KEY [key name];

bu çalışacak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.