Làm thế nào để thả duy nhất trong 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

Tôi muốn thả chìa khóa duy nhất vào email, làm thế nào?

Câu trả lời:


278

Đơn giản là bạn có thể sử dụng SQL Script sau để xóa chỉ mục trong MySQL:

alter table fuinfo drop index email;

26
Lưu ý rằng bạn không thể bỏ khóa như thế này nếu emailtồn tại khóa ngoại đối với cột (lỗi 150). Để làm việc này, trước tiên hãy bỏ khóa ngoại, sau đó thả chỉ mục và tạo lại khóa ngoại sau đó. ví dụ: ALTER TABLE fuinfo DROP khóa ngoại fk_name_for_email;
Brad Parks

61

Có một cách tốt hơn mà bạn không cần phải thay đổi bảng:

mysql> DROP INDEX email ON fuinfo;

trong đó email là tên của khóa duy nhất (chỉ mục).

Bạn cũng có thể mang nó trở lại như thế:

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

trong đó email sau IDEX là tên của chỉ mục và nó không phải là tùy chọn. Bạn có thể sử dụng KEY thay vì INDEX.

Ngoài ra, có thể tạo (loại bỏ) các phần tử độc nhất nhiều màu như thế:

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

Nếu bạn không chỉ định tên của chỉ mục nhiều màu, bạn có thể xóa nó như thế:

mysql> DROP INDEX email ON fuinfo;

trong đó email là tên cột.


5
tất cả những thứ này thực sự sẽ làm BẤT CỨ LÚC NÀO, vì vậy nó không giống như bạn thực sự tránh điều đó. Nó chỉ là một cú pháp khác nhau cho cùng một điều.
mpeter

9

mysql email DROP INDEX TRÊN fuinfo;

trong đó email là khóa duy nhất (thay vì tên cột). Bạn tìm tên của khóa duy nhất bằng cách

mysql> SHOW CREATE TABLE fuinfo;

ở đây bạn thấy tên của khóa duy nhất, có thể là email_2, chẳng hạn. Vì thế...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

Điều này sẽ cho thấy rằng chỉ mục được loại bỏ


5

Sử dụng truy vấn dưới đây:

ALTER TABLE `table_name` DROP INDEX key_name;

Nếu bạn không biết key_name thì trước tiên hãy thử truy vấn bên dưới, bạn có thể nhận key_name.

SHOW CREATE TABLE table_name

HOẶC LÀ

SHOW INDEX FROM table_name;

Nếu bạn muốn xóa / thả khóa chính khỏi bảng mysql, hãy sử dụng truy vấn bên dưới cho điều đó

ALTER TABLE `products` DROP INDEX `PRIMARY`;

Mã được lấy từ: http://framreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html


4

INDOP DROP column_nameTRÊN tên_bảng

Chọn cơ sở dữ liệu và mẫu truy vấn tab sql. Điều này loại bỏ chỉ mục của cột cụ thể. Nó hoạt động với tôi trong PHP MyADMIN



2

Đối với MySQL 5.7.11

Bước 1: Đầu tiên nhận Khóa duy nhất

Sử dụng truy vấn này để có được nó:

1.1) HIỂN THỊ TẠO BẢNG Người dùng;

Cuối cùng, nó sẽ như thế này:

.....

.....

KHÓA ĐỘC ĐÁO UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

Bước 2: Xóa khóa Unique bằng truy vấn này.

ALTER TABLE Người dùng DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

Bước 3: Kiểm tra thông tin bảng, bằng truy vấn này:

Người dùng DESC;

Điều này sẽ cho thấy rằng chỉ mục được loại bỏ

Đó là tất cả.



1

Hãy thử nó để loại bỏ uique của một cột:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

Chạy mã này trong phpmyadmin và xóa duy nhất cột


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

điều này sẽ làm việc

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.