Hướng dẫn set primary key mysql - đặt khóa chính mysql

PRIMARY KEY [Khóa chính] là gì?

PRIMARY KEY được dùng để xác định mỗi mẫu tin [record] trong bảng là duy nhất. Từ đó nó giúp chúng ta phân biệt được các mẫu tin.

Mỗi bảng chỉ có thể tồn tại một PRIMARY KEY.

Giá trị PRIMARY KEY của từng mẫu tin phải là duy nhất [không được trùng nhau].

Ví dụ, có bảng sinh viên như sau:

Full_name
Nguyễn Thành Nhân
Tần Thúc Bảo 
Trình Giảo Kim
Nguyễn Thành Nhân
Tần Thúc Bảo 
Nguyễn Thành Nhân

Tần Thúc Bảo 

Trình Giảo Kim

La Thành Full_name
101 Nguyễn Thành Nhân
102 Tần Thúc Bảo 
103 Trình Giảo Kim
104 Nguyễn Thành Nhân
105 Tần Thúc Bảo 
106 Nguyễn Thành Nhân

Tần Thúc Bảo 

Trình Giảo Kim Mssv làm khóa chính

La Thành

CREATE TABLE sinh_vien[
    Mssv INT PRIMARY KEY,
    Full_name VARCHAR[150],
    Phone INT,
    Address VARCHAR[255]
];
INSERT INTO sinh_vien [Mssv, Full_name, Phone, Address] VALUES
[101, 'Nguyen Thanh Nhan', 111111111, '111 đường ABC, Cần Thơ'],
[102, 'Pham Thu Huong', 222222222, '222 đường DEF, Cần Thơ'],
[103, 'Nguyen Nhu Ngoc', 333333333, '333 đường GHI, Cần Thơ'],
[104, 'Bui Thanh Bao', 444444444, '444 đường JKL, Cần Thơ'],
[105, 'Le My Nhan', 555555555, '555 đường MNO, Cần Thơ'];

Nhận thấy: Ở bảng trên có đến 3 người Nguyễn Thành Nhân, không thể xác định được ai là ai. 

INSERT INTO sinh_vien VALUES [103, 'Tan Thuc Bao', 777777777, '777 đường XYZ, Cần Thơ'];

Do đó: Để phân biệt, ta thêm vào bảng một khóa chính có tên là MSSV [mã số sinh viên] như sau:

Mssvhọ tên và địa chỉ nhà làm khóa chính

Tần Thúc Bảo

Từ đây việc phân biệt các sinh viên đã quá rõ ràng [Ví dụ: nói đến sinh viên Nguyễn Thành Nhân thứ 2 là ta biết người đó có mssv 104].

Ví dụ tạo một bảng sinh viên dùng cột Mssv làm khóa chính

CREATE TABLE sinh_vien[
    Full_name VARCHAR[150],
    Phone INT,
    Address VARCHAR[255],
    CONSTRAINT Name_Address PRIMARY KEY [Full_name, Address]
];
INSERT INTO sinh_vien [Full_name, Phone, Address] VALUES
['Nguyen Thanh Nhan', 111111111, '111 đường ABC, Cần Thơ'],
['Pham Thu Huong', 222222222, '222 đường DEF, Cần Thơ'],
['Nguyen Nhu Ngoc', 333333333, '333 đường GHI, Cần Thơ'],
['Bui Thanh Bao', 444444444, '444 đường JKL, Cần Thơ'],
['Le My Nhan', 555555555, '555 đường MNO, Cần Thơ'];

Sử dụng câu lệnh dưới đây để tạo một bảng sinh viên

Bạn thử thêm vào một sinh viên với các thông tin bất kỳ, nhưng Mssv là một trong 5 Mssv trên, bạn sẽ thấy điều kì diệu

Sau khi chạy câu lệnh, nhận thấy câu lệnh bị lỗi, do Mssv 103 đã tồn tại trong bảng sinh_vien

Ví dụ tạo một bảng sinh viên dùng cột họ tên và địa chỉ nhà làm khóa chính

ALTER TABLE table_name
ADD PRIMARY KEY [column_name];

Ở ví dụ này, chúng ta không dùng mã số sinh viên để làm khóa chính nữa, ta sẽ dùng họ tên và địa chỉ nhà.

ALTER TABLE table_name
ADD CONSTRAINT primary_key_name PRIMARY KEY [column_name1,column_name2,....];

Về mặt lý thuyết, hai sinh viên khác nhau không thể có chung một địa chỉ nhà [nếu có cùng địa chỉ nhà thì tức họ là anh em, mà anh em thì tên sẽ khác nhau]. Do đó, ta có thể ghép họ tên và địa chỉ nhà lại thành một khóa chính để xác định một sinh viên.

Sử dụng câu lệnh dưới đây để tạo bảng sinh viên

ALTER TABLE table_name
DROP PRIMARY KEY;

1] Chức năng của ràng buộc PRIMARY KEY

- Nếu nói về chức năng thì ràng buộc PRIMARY KEY [khóa chính] cũng giống với ràng buộc UNIQUE, nó dùng để thiết lập việc dữ liệu trên các hàng [trong cái bảng] không được phép trùng nhau.

- Một ràng buộc PRIMARY KEY có thể được thiết lập cho một cột hoặc một tập hợp các cộtmột cột hoặc một tập hợp các cột

⛔ Nếu chúng ta thiết lập ràng buộc PRIMARY KEY cho một cột thì dữ liệu trên các hàng của cột đó tuyệt đối không được trùng nhau.

⛔ Nếu chúng ta thiết lập ràng buộc PRIMARY KEY cho một tập hợp các cột thì dữ liệu trên các hàng của một tập hợp các cột đó tuyệt đối không được trùng nhau.

- Thông thường thì ràng buộc PRIMARY KEY chỉ dùng để thiết lập cho riêng một cột [điển hình như các cột liên quan đến ID, mã số, . . . .] để nhận diện một hàng.

- Trên một cái bảng chỉ được phép tồn tại tối đa một ràng buộc PRIMARY KEY.

2] Cách tạo ràng buộc PRIMARY KEY cho một cột

- Để thiết lập ràng buộc PRIMARY KEY cho một cột nào đó thì trong quá trình tạo bảng, chúng ta chỉ cần thêm từ khóa PRIMARY KEY nằm phía sau tên cột là xong.

- Đoạn mã bên dưới dùng để tạo một cái bảng Customers. Trong đó, cột CustomerID bị thiết lập ràng buộc PRIMARY KEY, điều đó đồng nghĩa với việc tất cả các khách hàng bên trong cái bảng không được phép có ID trùng nhau.

CREATE TABLE Customers[
	CustomerID INT PRIMARY KEY,
	CustomerName VARCHAR[255],
	PhoneNumber INT,
	City VARCHAR[255]
];

3] Cách tạo ràng buộc PRIMARY KEY cho một tập hợp các cột

- Để thiết lập ràng buộc PRIMARY KEY cho một tập hợp các cột thì chúng ta sử dụng cú pháp như sau:

PRIMARY KEY[column1, column2, column3, ....][column1, column2, column3, ....]

- Trong cái bảng Customers, tôi có tạo một ràng buộc PRIMARY KEY dựa trên hai cột CustomerName & City, điều đó đồng nghĩa với việc bên trong cái bảng Customers không được phép tồn tại những khách hàng có cùng tên & cùng thành phố.

CREATE TABLE Customers[
	CustomerID INT,
	CustomerName VARCHAR[255],
	PhoneNumber INT,
	City VARCHAR[255],
	PRIMARY KEY[CustomerName,City]
];

4] Thêm ràng buộc PRIMARY KEY [khi bảng đã được tạo]

- Đối với trường hợp bảng đã được tạo trước đó, nhưng do quên thiết lập ràng buộc PRIMARY KEY cho cột nên bây giờ các bạn muốn bổ sung, để làm được điều đó thì sử dụng lệnh chỉnh sửa bảng như bên dưới.

ALTER TABLE table_name ADD PRIMARY KEY[column1, column2, column3, ....]; table_name ADD PRIMARY KEY[column1, column2, column3, ....];

5] Cách xóa ràng buộc PRIMARY KEY

- Dưới đây là cú pháp dùng để xóa ràng buộc PRIMARY KEY ra khỏi bảng.

ALTER TABLE table_name DROP PRIMARY KEY; table_name DROP PRIMARY KEY;

Bài Viết Liên Quan

Chủ Đề