W3School

Ràng buộc PRIMARY KEY trong SQL

Ràng buộc xác định duy nhất mỗi bản ghi PRIMARY KEY trong một bảng.

Khóa chính phải chứa giá trị UNIQUE và không được chứa giá trị NULL.

Một bảng chỉ có thể có MỘT khóa chính; và trong bảng, khóa chính này có thể bao gồm một hoặc nhiều cột (trường).

KHÓA CHÍNH SQL khi TẠO BẢNG

SQL sau tạo một PRIMARY KEY trên cột “ID” khi bảng “Persons” được tạo:

MySQL:

SQL Server / Oracle / MS Access:

Để cho phép đặt tên cho một ràng buộc PRIMARY KEY và để xác định một ràng buộc PRIMARY KEY trên nhiều cột, hãy sử dụng cú pháp SQL sau:

MySQL / SQL Server / Oracle / MS Access:

Lưu ý: Trong ví dụ trên chỉ có MỘT PRIMARY KEY(PK_Person). Tuy nhiên, GIÁ TRỊ của khóa chính được tạo thành từ HAI CỘT (ID + LastName).

KHÓA CHÍNH SQL khi Sửa Lại Bảng

Để tạo ràng buộc PRIMARY KEY trên cột “ID” khi bảng đã được tạo, hãy sử dụng SQL sau:

MySQL / SQL Server / Oracle / MS Access:

Để cho phép đặt tên cho một ràng buộc PRIMARY KEY và để xác định một ràng buộc PRIMARY KEY trên nhiều cột, hãy sử dụng cú pháp SQL sau:

MySQL / SQL Server / Oracle / MS Access:

Lưu ý: Nếu bạn sử dụng ALTER TABLE để thêm khóa chính, (các) cột khóa chính phải được khai báo là không chứa giá trị NULL (khi bảng được tạo lần đầu tiên).

Xóa Primary Key

Để loại bỏ một ràng buộc PRIMARY KEY, hãy sử dụng SQL sau:

MySQL:

SQL Server / Oracle / MS Access:

Bạn có thể download cơ sở dữ liệu Northwind để bắt đầu thực hành tại đây:

- Dành cho Sql Server, MS Access Download
- Dành cho Mysql: Tạo bảng trước với Download Table sau đó hãy điền data với Download Data
- Dành cho Oracle Download

Lưu ý: Tên bảng trong CSDL cho SQL Server thường được viết hoa chữ đầu. Với Mysql thì tên bảng được viết thường. Và với Oracle thì tên bảng toàn bộ được viết hoa. Bạn hãy viết đúng tên bảng trong query của mình nhé.

Trong nội dung bài viết, đôi khi tên bảng được viết dưới dạng tiếng Việt, ví dụ:

- Customers: Khách hàng
- Orders: Đơn hàng
- Employees: Nhân viên
- Shipers: Giao hàng
- Invoices: Hoá đơn

W3School

Leave a comment

Your email address will not be published. Required fields are marked *