วิธีการวางที่ไม่ซ้ำกันใน 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

ฉันต้องการวางกุญแจที่ไม่ซ้ำกันได้emailอย่างไร

คำตอบ:


278

เพียงคุณสามารถใช้สคริปต์ SQL ต่อไปนี้เพื่อลบดัชนีใน MySQL:

alter table fuinfo drop index email;

26
โปรดทราบว่าคุณอาจไม่สามารถวางคีย์เช่นนี้หากมีคีย์ต่างประเทศในemailคอลัมน์อยู่ (ข้อผิดพลาด 150) ในการทำให้สิ่งนี้ใช้งานได้ให้วาง foreign key ก่อนจากนั้นจึงวางดัชนีและสร้าง foreign key ขึ้นมาใหม่ เช่น ALTER TABLE fuinfo DROP foreign key fk_name_for_email;
Brad Parks

61

มีวิธีที่ดีกว่าที่ไม่ต้องการให้คุณเปลี่ยนแปลงตาราง:

mysql> DROP INDEX email ON fuinfo;

โดยที่ email คือชื่อของคีย์เฉพาะ (ดัชนี)

คุณสามารถนำมันกลับมาได้เช่น:

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

อีเมลที่อยู่หลัง IDEX คือชื่อของดัชนีและไม่ใช่ตัวเลือก คุณสามารถใช้ KEY แทน INDEX

นอกจากนี้ยังเป็นไปได้ที่จะสร้าง (ลบ) หลาย ๆ อินเทอร์เฟซที่ไม่ซ้ำกันเช่น:

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

หากคุณไม่ได้ระบุชื่อของดัชนีหลายคอลัมน์คุณสามารถลบออกได้เช่น:

mysql> DROP INDEX email ON fuinfo;

โดยที่ email คือชื่อคอลัมน์


5
สิ่งเหล่านี้ทั้งหมดจะทำ ALTER TABLE ต่อไปดังนั้นจึงไม่เหมือนกับที่คุณหลีกเลี่ยง มันเป็นเพียงไวยากรณ์ที่แตกต่างกันสำหรับสิ่งเดียวกัน
mpeters

9

mysql> ส่งอีเมล DROP INDEX บน fuinfo;

โดยที่อีเมลเป็นรหัสเฉพาะ (แทนที่จะเป็นชื่อคอลัมน์) คุณค้นหาชื่อของคีย์เฉพาะโดย

mysql> SHOW CREATE TABLE fuinfo;

คุณจะเห็นชื่อของคีย์ที่ไม่ซ้ำกันซึ่งอาจเป็น email_2 ดังนั้น...

mysql> DROP INDEX email_2 ON fuinfo;

mysql> DESCRIBE fuinfo;

นี่ควรแสดงว่าดัชนีถูกลบ


5

ใช้แบบสอบถามด้านล่าง:

ALTER TABLE `table_name` DROP INDEX key_name;

หากคุณไม่ทราบ key_name จากนั้นให้ลองค้นหาด้านล่างก่อนคุณจะได้รับ key_name

SHOW CREATE TABLE table_name

หรือ

SHOW INDEX FROM table_name;

หากคุณต้องการลบ / วางคีย์หลักจากตาราง mysql ให้ใช้แบบสอบถามด้านล่าง

ALTER TABLE `products` DROP INDEX `PRIMARY`;

รหัสที่นำมาจาก: http://chandreshrana.blogspot.in/2015/10/how-to-remove-unique-key-from-mysql.html


4

DROP INDEX column_nameON table_name

เลือกฐานข้อมูลและแบบสอบถามจากแท็บ sql ซึ่งจะลบดัชนีของคอลัมน์นั้น ๆ มันทำงานให้ฉันใน PHP MyADMIN



2

สำหรับ MySQL 5.7.11

ขั้นตอนที่ 1: ขั้นแรกรับรหัสเฉพาะ

ใช้แบบสอบถามนี้เพื่อรับ:

1.1) แสดงผู้ใช้สร้างตาราง;

ในที่สุดมันจะเป็นเช่นนี้:

.....

.....

UNIQUE KEY UK_8bv559q1gobqoulqpitq0gvr6( phoneNum)

.....

....

ขั้นตอนที่ 2: ลบคีย์เฉพาะโดยแบบสอบถามนี้

เปลี่ยนแปลงตารางผู้ใช้ DROP INDEX UK_8bv559q1gobqoulqpitq0gvr6;

ขั้นตอนที่ 3: ตรวจสอบข้อมูลตารางโดยแบบสอบถามนี้:

ผู้ใช้ DESC;

นี่ควรแสดงว่าดัชนีถูกลบ

นั่นคือทั้งหมด



1

ลองใช้เพื่อลบ uique ของคอลัมน์:

ALTER TABLE  `0_ms_labdip_details` DROP INDEX column_tcx

เรียกใช้รหัสนี้ใน phpmyadmin และลบคอลัมน์ที่ไม่ซ้ำกัน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.