[Thực hành] Tạo khoá chính
NỘI DUNG BÀI VIẾT
Mục tiêu
Luyện tập tạo khoá chính
Mô tả
Hướng dẫn nộp bài:
Up code lên github
Paste link github vào phần nộp bài
Khoá chính là gì?
- Khóa chính (Primary Key, hay ràng buộc khóa chính) được sử dụng để định danh duy nhất mỗi bản ghi (dòng) trong bảng của cơ sở dữ liệu.
- Ngoài ra, nó còn dùng để thiết lập quan hệ 1-n (hay ràng buộc tham chiếu) giữa hai bảng trong cơ sở dữ liệu.
- Dữ liệu (value) của field khóa chính phải có tính duy nhất, và không chứa các giá trị Null.
- Mỗi bảng chỉ có một khóa chính
- Khóa chính có thể tạo ra dựa trên một cột hoặc nhiều cột (được gọi là khoá chính tổ hợp) của table.
Cú pháp để định nghĩa khoá chính
Chúng ta có thể sử dụng từ khoá PRIMARY KEY để định nghĩa khoá chính khi tạo bảng.
Ví dụ:
CREATE TABLE users( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(40), password VARCHAR(255), email VARCHAR(255));
Trong ví dụ trên, từ khoá PRIMARY KEY được sử dụng để xác định khoá chính dựa trên cột user_id.
Hoặc, chúng ta cũng có thể sử dụng từ khoá PRIMARY ở cuối câu lệnh tạo bảng như sau:
CREATE TABLE roles( role_id INT AUTO_INCREMENT, role_name VARCHAR(50), PRIMARY KEY(role_id));
Trong trường hợp này, chúng ta tách việc quy định khoá chính thành một dòng riêng biệt khỏi dòng định nghĩa cột role_id.
Cú pháp định nghĩa khoá chính tổ hợp
Khoá chính tổ hợp là khoá chính được tạo ra dựa trên nhiều cột của bảng. Chúng ta cũng có thể sử dụng từ khoá PRIMARY KEY để tạo khoá chính tổ hợp.
Ví dụ:
CREATE TABLE userroles( user_id INT NOT NULL, role_id INT NOT NULL, PRIMARY KEY(user_id,role_id), FOREIGN KEY(user_id) REFERENCES users(user_id), FOREIGN KEY(role_id) REFERENCES roles(role_id));
Trong ví dụ này, khoá chính của bảng userroles được tạo thành dựa trên 2 cột là user_id và role_id.
Lưu ý: FOREIGN KEY là từ khoá được sử dụng để tạo khoá ngoại với các bảng khác, chúng ta sẽ tìm hiểu từ khoá này ở trong bài sau.
Tạo khoá chính khi thay đổi bảng
Có một số trường hợp, chúng ta muốn bổ sung khoá chính cho một bảng sau khi bảng đó đã được tạo. Chúng ta có thể sử dụng câu lệnh ADD PRIMARY KEY ở trong câu lệnh ALTER TABLE để đạt được mục đích này.
Cú pháp:
ALTER TABLE table_name ADD PRIMARY KEY(primary_key_column);
Trong đó, table_name là tên của bảng đã tồn tại, primary_key_column là tên của cột muốn tạo khoá chính.
Trả lời