

Tìm Hiểu Khóa Chính (Primary Key) Trong MySQL
- 14-06-2025
- trienkhaiweb
- 0 Comments
Dưới đây là phiên bản biên tập lại của bạn, được chuyển thành một bài viết hướng dẫn chi tiết về khóa chính (Primary Key) trong MySQL, súc tích, rõ ràng và chuẩn mực để dễ dùng cho học tập hoặc chia sẻ:
Mục lục
Tìm Hiểu Khóa Chính (Primary Key) Trong MySQL
Trong thiết kế cơ sở dữ liệu, khóa chính (Primary Key) đóng vai trò quan trọng giúp phân biệt duy nhất mỗi dòng dữ liệu (record) trong một bảng (table). Khóa chính thường được chọn là một trường số (INT
, BIGINT
, …) có giá trị duy nhất và thường được thiết lập để tự động tăng (AUTO_INCREMENT).
1. Đặc Điểm Của Khóa Chính
Khi xây dựng bảng như SINHVIEN
, chúng ta không thể dùng tên sinh viên để phân biệt vì có thể bị trùng. Do đó, cần thêm một trường như MaSV
để làm khóa chính. Một khóa chính trong MySQL có các đặc điểm sau:
- Duy nhất: Mỗi record phải có giá trị khóa chính duy nhất.
- Không được NULL: Trường khóa chính luôn phải có giá trị.
- Chỉ tồn tại một khóa chính duy nhất trong mỗi bảng, nhưng có thể gồm nhiều cột (composite key).
- Thường là kiểu số (INT, BIGINT, …) để tăng tốc độ truy vấn.
- Khi được khai báo, MySQL sẽ tạo một chỉ mục (index) đặc biệt có tên là
PRIMARY
.
2. Cách Tạo Khóa Chính Trong MySQL
Cách 1: Tạo khóa chính khi tạo bảng
Ví dụ 1 – Đặt PRIMARY KEY
trực tiếp sau cột:
CREATE TABLE users (
id INT(10) UNSIGNED NOT NULL PRIMARY KEY,
email VARCHAR(70) NOT NULL
) ENGINE = InnoDB;
Ví dụ 2 – Đặt PRIMARY KEY()
ở cuối danh sách cột:
CREATE TABLE users (
id INT(10) UNSIGNED NOT NULL,
email VARCHAR(70) NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
Cách 2: Tạo khóa chính gồm nhiều cột (Composite Primary Key)
CREATE TABLE users (
id INT(10) UNSIGNED NOT NULL,
email VARCHAR(70) NOT NULL,
PRIMARY KEY(id, email)
) ENGINE = InnoDB;
Cách 3: Tạo khóa chính bằng câu lệnh ALTER TABLE
Khi đã tạo bảng, bạn vẫn có thể thêm khóa chính sau:
CREATE TABLE users (
id INT(10) UNSIGNED NOT NULL,
email VARCHAR(70) NOT NULL
) ENGINE = InnoDB;
ALTER TABLE users ADD PRIMARY KEY(id);
Cách 4: Tạo khóa chính có tên bằng CONSTRAINT
Khai báo tên khóa chính giúp dễ quản lý sau này (ví dụ khi cần sửa hoặc xóa khóa chính):
CREATE TABLE users (
id INT(10) UNSIGNED NOT NULL,
email VARCHAR(70) NOT NULL,
CONSTRAINT pk_user PRIMARY KEY(id)
) ENGINE = InnoDB;
Hoặc:
ALTER TABLE users ADD CONSTRAINT pk_user PRIMARY KEY (id);
3. Xóa Khóa Chính (DROP PRIMARY KEY)
Để xóa khóa chính khỏi bảng:
ALTER TABLE users DROP PRIMARY KEY;
⚠️ Lưu ý: Nếu khóa chính đang được tham chiếu bởi khóa ngoại (foreign key) từ bảng khác, bạn cần xóa ràng buộc đó trước.
4. Kết Luận
Khóa chính là thành phần cốt lõi trong thiết kế CSDL, giúp đảm bảo tính toàn vẹn và tối ưu hóa hiệu suất truy vấn. MySQL cung cấp nhiều cách để tạo và quản lý khóa chính linh hoạt. Ngoài ra, cú pháp về khóa chính trong MySQL cũng gần giống với các hệ quản trị khác như SQL Server (T-SQL).