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

Làm thế nào để tạo một khóa tổng hợp để trở thành duy nhất trong MySQL?

Để tạo một khóa tổng hợp là duy nhất, bạn cần sử dụng lệnh ADD UNIQUE. Sau đây là cú pháp -

alter table yourTableName add unique
yourUniqueName( yourColumnName1,yourColumnName2,.......N);

Đầu tiên chúng ta hãy tạo một bảng. Sau đây là truy vấn -

mysql> create table makeCompositeKeyDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(40),
   -> StudentAge int,
   -> StudentGrade char(1)
   -> );
Query OK, 0 rows affected (2.34 sec)

Bây giờ hãy kiểm tra mô tả của bảng bằng lệnh DESC. Sau đây là truy vấn -

mysql> desc makeCompositeKeyDemo;

Điều này sẽ tạo ra kết quả sau -

+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| Id           | int(11)     | NO   | PRI | NULL    | auto_increment |
| StudentName  | varchar(40) | YES  |     | NULL    |                |
| StudentAge   | int(11)     | YES  |     | NULL    |                |
| StudentGrade | char(1)     | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
4 rows in set (1.65 sec)

Sau đây là truy vấn để tạo một khóa tổng hợp là duy nhất -

mysql> alter table makeCompositeKeyDemo add unique
Name_Age_Grade( StudentName,StudentAge,StudentGrade);
Query OK, 0 rows affected (0.69 sec)
Records: 0 Duplicates: 0 Warnings: 0

Bây giờ hãy kiểm tra mô tả bảng một lần nữa. Sau đây là truy vấn -

mysql> desc makeCompositeKeyDemo;

Điều này sẽ tạo ra kết quả sau -

+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| Id           | int(11)     | NO   | PRI | NULL    | auto_increment |
| StudentName  | varchar(40) | YES  | MUL | NULL    |                |
| StudentAge   | int(11)     | YES  |     | NULL    |                |
| StudentGrade | char(1)     | YES  |     | NULL    |                |
+--------------+-------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)