Điểm giống nhau Primary Key và Unique:
- Đảm bảo tính duy nhất của các giá trị: Cả Primary Index (hay còn gọi là Primary Key) và Unique Index đều đảm bảo rằng không có hai hàng nào trong bảng có cùng giá trị trong cột hoặc tập hợp các cột mà chúng được áp dụng. Điều này có nghĩa là giá trị trong các cột đó phải duy nhất cho mỗi hàng.
- Được sử dụng để tối ưu hóa hiệu suất truy vấn: Cả Primary Index và Unique Index đều có thể giúp tối ưu hóa hiệu suất của các truy vấn bằng cách sử dụng index để truy xuất dữ liệu nhanh hơn thay vì phải duyệt toàn bộ bảng.
Điểm khác nhau Primary Key và Unique:
Đặc điểm | Primary Index (Primary Key) | Unique Index |
---|---|---|
Bản chất | Là một loại ràng buộc (constraint) xác định khóa chính của bảng, đảm bảo tính duy nhất và không cho phép giá trị NULL. | Là một dạng chỉ mục (index) đặc biệt đảm bảo rằng các giá trị trong cột hoặc nhóm cột được chỉ định là duy nhất, nhưng có thể cho phép giá trị NULL. |
Giá trị NULL | Không cho phép giá trị NULL trong bất kỳ hàng nào. | Cho phép giá trị NULL, nhưng các giá trị không phải NULL phải là duy nhất. |
Chỉ một hay nhiều? | Mỗi bảng chỉ có thể có một Primary Index (Primary Key). | Một bảng có thể có nhiều Unique Index trên các cột khác nhau. |
Mục đích | Được sử dụng để xác định duy nhất mỗi hàng trong bảng và thường được sử dụng làm khóa chính cho bảng (để liên kết với các bảng khác). | Được sử dụng để đảm bảo các giá trị trong cột hoặc nhóm cột là duy nhất nhưng không phải là khóa chính của bảng. |
Liên kết với các bảng khác | Thường được sử dụng làm khóa chính (primary key) và có thể được liên kết với các bảng khác thông qua khóa ngoại (foreign key). | Không thường được sử dụng để liên kết với các bảng khác thông qua khóa ngoại. |
Ví dụ:
Primary Index (Primary Key):
sql CREATE TABLE employees ( id INT PRIMARY KEY, -- Primary Key, giá trị id phải duy nhất và không được NULL name VARCHAR(100) );
Unique Index:
sql
CREATE TABLE employees ( id INT, email VARCHAR(100), UNIQUE (email) -- Unique Index, giá trị email phải duy nhất nhưng có thể NULL );
Tóm lại:
- Primary Key không cho phép giá trị NULL và mỗi bảng chỉ có một primary key.
- Unique Index có thể cho phép giá trị NULL và một bảng có thể có nhiều unique index.

Dương Trần Hà, hiện mình đang là kỹ công nghệ phần mềm và cũng là giám đốc thành lập công ty DTH Solutions. Mình có nhiều năm kinh nghiệm, kiến thức chuyên môn lập trình, nodejs, nestjs, laravel, yii2, reactjs, nextjs. Mình đã phát triển rất nhiều dự án thực tế cho doanh nghiệp, cơ quan. Mình đã đạt được một số thành công nhỏ, đồng thời mình vẫn đang tiếp tục học tập để trau dồi kiến thức mỗi ngày. Mình rất yêu thích công nghệ, đam mê chia sẻ những kiến thức, thông tin hữu ích cho mọi người.