Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể loại bỏ ràng buộc DUY NHẤT khỏi một bảng MySQL?

Để loại bỏ ràng buộc UNIQUE khỏi bảng MySQL, trước hết, chúng ta phải kiểm tra tên của chỉ mục được tạo bởi ràng buộc UNIQUE trên bảng. Như chúng ta biết rằng câu lệnh SHOW INDEX được sử dụng cho mục đích này. ‘ key_name 'Trong tập hợp kết quả của câu lệnh SHOW INDEX chứa tên của chỉ mục. Bây giờ với sự trợ giúp của DROP INDEX câu lệnh hoặc BẢNG ALTER , chúng ta có thể loại bỏ ràng buộc UNIQUE. Cú pháp cho cả hai câu lệnh như sau -

Cú pháp

DROP INDEX index_name ON table_name;
OR
ALTER TABLE table_name DROP INDEX index_name;

Ví dụ

Giả sử chúng ta có bảng ‘empl’ có ràng buộc DUY NHẤT trên cột ‘empno’. Tên chỉ mục có thể được kiểm tra như sau -

mysql> Show Index from empl\G
*************************** 1. row ***************************
Table: empl
Non_unique: 0
Key_name: empno
Seq_in_index: 1
Column_name: empno
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
Index_comment:
1 row in set (0.02 sec)

Bây giờ để loại bỏ ràng buộc UNIQUE, chúng ta có thể viết truy vấn sau -

mysql> ALTER TABLE empl DROP INDEX empno;
Query OK, 0 rows affected (0.26 sec)
Records: 0 Duplicates: 0 Warnings: 0

Tập hợp kết quả của truy vấn bên dưới sẽ cho thấy rằng không có ràng buộc DUY NHẤT trên cột ‘empno’ -

mysql> describe empl;

+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| empno | int(11) | YES | | NULL | |
| F_name | varchar(20) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

Ngay cả khi chúng tôi sẽ chạy SHOW INDEX từ empl thì MySQL sẽ dẫn đến một tập hợp trống như sau -

mysql> Show index from empl;
Empty set (0.00 sec)

Ràng buộc UNIQUE cũng có thể được loại bỏ khỏi bảng ‘empl’ với sự trợ giúp của câu lệnh DROP INDEX như sau -

mysql> DROP INDEX empno on empl;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0