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

Làm cách nào để thực thi tính duy nhất phức hợp trong MySQL?

Bạn có thể thực thi tính duy nhất phức hợp trong MySQL với sự trợ giúp của từ khóa UNIQUE. Đây là cú pháp để thêm từ khóa DUY NHẤT vào cột trong bảng của bạn.

Cú pháp như sau

CREATE TABLE yourTableName
(
   yourColumnName1 datatype,
   yourColumnName2 datatype,
   yourColumnName3 datatype,
   .
   .
   N
   UNIQUE yourConstarintName(yourColumnName2,yourColumnName3)
);

Để hiểu khái niệm trên, chúng ta hãy tạo một bảng với một số cột và thêm một ràng buộc duy nhất vào một bảng. Truy vấn để tạo bảng như sau

mysql> create table UniqueDemo
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(100),
   -> StudentAge int,
   -> StudentMarks int
   -> ,
   -> UNIQUE age_NameConstraint(StudentName,StudentAge)
   -> );
Query OK, 0 rows affected (0.76 sec)

Bạn có thể hiển thị tên ràng buộc từ một bảng với sự trợ giúp của lệnh SHOW.

Cú pháp như sau

SHOW INDEX FROM yourTableName;

Để hiển thị ràng buộc duy nhất từ ​​một bảng, hãy sử dụng cú pháp trên. Truy vấn như sau -

mysql> SHOW INDEX FROM UniqueDemo;

Sau đây là kết quả

+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| Table      | Non_unique | Key_name           | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| uniquedemo |          0 | PRIMARY            |            1 | StudentId   | A         |           0 | NULL     | NULL   |      | BTREE      |         |               | YES     |
| uniquedemo |          0 | age_NameConstraint |            1 | StudentName | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |               | YES     |
| uniquedemo |          0 | age_NameConstraint |            2 | StudentAge  | A         |           0 | NULL     | NULL   | YES  | BTREE      |         |               | YES     |
+------------+------------+--------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
3 rows in set (0.33 sec)