MySQL: Primary Key (Khóa chính)
Ràng buộc khoá chính (PRIMARY KEY - PK) được dùng để phân biệt các bản ghi trong một bảng. PK đảm bảo tính toàn vẹn thực thể cho bảng. PK được đặt trên một cột hoặc một tập cột của bảng. Cột đặt PK thông thường là cột mã như mã sinh viên, mã môn học, mã sản phẩm, ...
Dưới đây là một số điểm bạn cần lưu ý khi sử dụng PK:
- Một bảng chỉ được phép có duy nhất một PK.
- Muốn đặt PK trên cột thì cột đó không được chứa những giá trị giống nhau và phải là cột NOT NULL. Ví dụ các mã sinh viên là khác nhau nên có thể đặt PK trên cột mã sinh viên.
- Muốn đặt PK trên một tập cột thì tập cột đó không được chứa những tập giá trị giống nhau và mỗi cột của tập cột đó phải là cột NOT NULL. Ví dụ bảng Điểm sinh viên có mã sinh viên và mã môn học thì tập giá trị của tập cột (mã sinh viên,mã môn học) là khác nhau nên có thể đặt PK trên tập cột này.
- Không thể chèn bản ghi mà giá trị tại cột chứa khoá chính đã có từ trước. Ví dụ như với bảng Customer chẳng hạn đã có bản ghi có mã khách (CustomerID) là 10 rồi thì ta không thêm được khách hàng có mã là 10 nữa.
Để tạo ràng buộc PK ta có các cách được thể hiện thông qua các ví dụ như sau đây.
Cách 1:
#đặt PK ngay sau khi tạo cột tương ứng CREATE TABLE Student( studentid int not null PRIMARY KEY, studentname varchar(30), dateofbirth date );
Cách 2:
#đặt PK phía cuối các phần tạo cột CREATE TABLE Student( studentid int not null, studentname varchar(30), dateofbirth date, PRIMARY KEY(studentid) );
Cách 3:
#tạo một ràng buộc PK trong bảng CREATE TABLE Student2( studentid int not null, studentname varchar(30), dateofbirth date, constraint pk_studentid PRIMARY KEY(studentid) );
Cách 4:
Ở cách này ta sử dụng biện pháp sửa bảng để thêm khóa chính vào. Cú pháp cụ thể được thể hiện như dưới đây:
Ví dụ:
ALTER TABLE Student ADD PRIMARY KEY(studentid); ALTER TABLE Marks ADD PRIMARY KEY(studentid,subjectid);