การปล่อยข้อ จำกัด ที่ไม่ซ้ำจากตาราง MySQL


คำตอบ:


348

ข้อ จำกัด ที่ไม่เหมือนใครยังเป็นดัชนี

ใช้งานครั้งแรกSHOW INDEX FROM tbl_nameเพื่อค้นหาชื่อของดัชนี ชื่อของดัชนีจะถูกเก็บไว้ในคอลัมน์ที่เรียกว่าkey_nameในผลลัพธ์ของแบบสอบถามนั้น

จากนั้นคุณสามารถใช้DROP INDEX :

DROP INDEX index_name ON tbl_name

หรือไวยากรณ์ALTER TABLE :

ALTER TABLE tbl_name DROP INDEX index_name

1
ขออภัยที่ฉันฉันได้ลองมันก่อนที่จะตั้งคำถาม แต่มันไม่ทำงาน
Ankur Mukherjee

@Ankur Mukherjee: ฉันลืมพูดถึง: คุณต้องเปลี่ยน tbl_name และ index_name เป็นชื่อของตารางจริงของคุณและชื่อของดัชนีจริงตามลำดับ คุณสามารถดูชื่อใน MySQL Query Browser SHOW CREATE TABLE tbl_nameนอกจากนี้คุณยังสามารถทำ
Mark Byers

ข้อความแสดงข้อผิดพลาด: "คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณตรวจสอบคู่มือที่สอดคล้องกับรุ่นเซิร์ฟเวอร์ MySQL ของคุณสำหรับไวยากรณ์ที่ถูกต้องเพื่อใช้ใกล้ '(player_id, ปี, ทัวร์นาเมนต์)' ที่บรรทัด 1"
Ankur Mukherjee

1
@ Ankur Mukherjee: วิธีที่ฉันแนะนำคือในความคิดของฉันเป็นวิธีที่ดีที่สุดที่จะทำ
Mark Byers

1
ฉันอ่านบางคำถามโดยใช้ phpMyAdmin ... คำตอบที่ @systemovich ควรทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับได้
Pere

123

คุณสามารถDROPมีข้อ จำกัด ที่ไม่ซ้ำกันจากตารางโดยใช้ phpMyAdmin ตามที่ร้องขอดังแสดงในตารางด้านล่าง มีการวางข้อ จำกัด ที่ไม่ซ้ำกันในฟิลด์ Wingspan ชื่อของข้อ จำกัด เหมือนกับชื่อฟิลด์ในอินสแตนซ์นี้

ข้อความแสดงแทน


34
มันเป็นสิ่งสำคัญที่จะต้องทราบว่าส่วนดัชนีจะถูกยุบตามค่าเริ่มต้นและจะถูกขยายโดยลิงก์ขนาดเล็กที่ละเอียดอ่อนในแบบอักษร 12px ที่ส่วนนั้นอยู่ในภาพหน้าจอ แต่ขอบคุณที่ฉันพบมัน อวยพรใบหน้าของคุณ +1
แจ็ค

11

ดัชนีที่มีความสามารถในการวางข้อ จำกัด คีย์ที่ไม่ซ้ำกันบนตารางคือPRIMARYและUNIQUEดัชนี

หากต้องการลบข้อ จำกัด ที่สำคัญไม่ซ้ำกันในคอลัมน์ INDEXแต่ให้ดัชนีคุณสามารถลบและสร้างดัชนีที่มีประเภท

PRIMARYโปรดทราบว่ามันเป็นความคิดที่ดีสำหรับทุกโต๊ะจะมีดัชนีการทำเครื่องหมาย


2
upvoted เพราะ @thomasrutter ได้สัมผัสกับความจริงที่ว่าการลบข้อ จำกัด ที่ไม่ซ้ำกันอาจส่งผลกระทบประสิทธิภาพการค้นหา - และนี้สามารถลดลงได้โดยการเปลี่ยนดัชนีปกติUNIQUE INDEX
อเล็กซ์

4

ในการเพิ่มข้อ จำกัด UNIQUE โดยใช้ phpmyadmin ให้ไปที่โครงสร้างของตารางและค้นหาด้านล่างแล้วคลิกที่

ป้อนคำอธิบายรูปภาพที่นี่

หากต้องการลบข้อ จำกัด UNIQUE ในลักษณะเดียวกันให้ไปที่โครงสร้างและเลื่อนลงไปจนถึงแท็บดัชนีแล้วค้นหาด้านล่างแล้วคลิกดร็อป ป้อนคำอธิบายรูปภาพที่นี่

หวังว่างานนี้

สนุก ;)


วิธีนี้เป็นสิ่งที่ฉันกำลังมองหา
Aryeh Beitz

2

สำหรับ WAMP 3.0: คลิกโครงสร้างด้านล่างเพิ่ม 1 คอลัมน์คุณจะเห็น '- ดัชนี' คลิก -Indexes และวางดัชนีใด ๆ ที่คุณต้องการ


2

หากคุณต้องการลบข้อ จำกัด ที่ไม่ซ้ำกันออกจากตารางฐานข้อมูล mysql ให้ใช้ตารางแก้ไขด้วยดัชนีแบบเลื่อน

ตัวอย่าง:

สร้างตาราง unique_constraints (unid int, activity_name varchar (100), CONSTRAINT activty_uqniue UNIQUE UNIQUE (activity_name), คีย์หลัก (unid))

alter table unique_constraints drop index activty_uqniue;

โดยที่activty_uqniueเป็นข้อ จำกัด UNIQUE สำหรับคอลัมน์activity_name



0

ข้อ จำกัด สามารถลบได้ด้วยไวยากรณ์:

แก้ไขตาราง

ในฐานะของ MySQL 8.0.19, ALTER TABLE อนุญาตให้ใช้ไวยากรณ์ (และมาตรฐาน SQL) ทั่วไปมากขึ้นสำหรับการปล่อยและการแก้ไขข้อ จำกัด ที่มีอยู่ประเภทใดประเภทหนึ่งโดยที่ประเภทข้อ จำกัด จะถูกกำหนดจากชื่อข้อ จำกัด : ALTER TABLE tbl_name DROP CONSTRAINT symbol;

ตัวอย่าง:

CREATE TABLE tab(id INT, CONSTRAINT unq_tab_id UNIQUE(id));

-- checking constraint name if autogenerated
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'tab';

-- dropping constraint
ALTER TABLE tab DROP CONSTRAINT unq_tab_id;

db <> การสาธิตซอ


-3

ชื่อตารางของฉันคือผู้ซื้อที่มีคอลัมน์ข้อ จำกัด ที่ไม่ซ้ำกันตอนนี้ฉันจะทิ้ง emp_id

ขั้นตอนที่ 1: ดำเนินการผู้ซื้อ sp_helpindex ดูไฟล์ภาพ

ขั้นตอนที่ 2: คัดลอกที่อยู่ดัชนี

ป้อนคำอธิบายรูปภาพที่นี่

ขั้นตอนที่ 3: แก้ไขข้อ จำกัด การตกของผู้ซื้อตาราง [UQ__buyers__1299A860D9793F2E] เปลี่ยนผู้ซื้อตารางการวางคอลัมน์ emp_id

บันทึก:

blockquote

แทนผู้ซื้อเปลี่ยนเป็นชื่อตารางของคุณ :)

blockquote

นั่นคือชื่อคอลัมน์ทั้งหมด emp_id ที่มีข้อ จำกัด หลุดไป


-5
  1. ลบตารางแรก

  2. ไปที่ SQL

ใช้รหัสนี้:

CREATE  TABLE service( --tablename 
  `serviceid` int(11) NOT NULL,--columns
  `customerid` varchar(20) DEFAULT NULL,--columns
  `dos` varchar(30) NOT NULL,--columns
  `productname` varchar(150) NOT NULL,--columns
  `modelnumber` bigint(12) NOT NULL,--columns
  `serialnumber` bigint(20) NOT NULL,--columns
  `serviceby` varchar(20) DEFAULT NULL--columns
)
--INSERT VALUES
INSERT INTO `service` (`serviceid`, `customerid`, `dos`, `productname`, `modelnumber`, `serialnumber`, `serviceby`) VALUES
(1, '1', '12/10/2018', 'mouse', 1234555, 234234324, '9999'),
(2, '09', '12/10/2018', 'vhbgj', 79746385, 18923984, '9999'),
(3, '23', '12/10/2018', 'mouse', 123455534, 11111123, '9999'),
(4, '23', '12/10/2018', 'mouse', 12345, 84848, '9999'),
(5, '546456', '12/10/2018', 'ughg', 772882, 457283, '9999'),
(6, '23', '12/10/2018', 'keyboard', 7878787878, 22222, '1'),
(7, '23', '12/10/2018', 'java', 11, 98908, '9999'),
(8, '128', '12/10/2018', 'mouse', 9912280626, 111111, '9999'),
(9, '23', '15/10/2018', 'hg', 29829354, 4564564646, '9999'),
(10, '12', '15/10/2018', '2', 5256, 888888, '9999');
--before droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  unique`modelnumber` (`modelnumber`),
  ADD  unique`serialnumber` (`serialnumber`),
  ADD unique`modelnumber_2` (`modelnumber`);
--after droping table
ALTER TABLE `service`
  ADD PRIMARY KEY (`serviceid`),
  ADD  modelnumber` (`modelnumber`),
  ADD  serialnumber` (`serialnumber`),
  ADD modelnumber_2` (`modelnumber`);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.