Vấn đề:
Bạn muốn tạo khóa chính cho một bảng trong cơ sở dữ liệu.
Ví dụ:
Chúng tôi muốn có khóa chính cho bảng có tên product
.
Giải pháp 1 (bảng mới):
CREATE TABLE product ( id INT PRIMARY KEY, name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL, price DECIMAL(7,2) );
Thảo luận:
Để tạo một bảng mới với một cột được xác định là khóa chính, bạn có thể sử dụng từ khóa PRIMARY KEY
ở cuối định nghĩa của cột đó. Trong ví dụ của chúng tôi, chúng tôi tạo bảng product
sử dụng CREATE TABLE
mệnh đề, với tên của các cột và kiểu dữ liệu tương ứng của chúng trong dấu ngoặc đơn. Chúng tôi chọn id cột làm khóa chính của bảng này, vì vậy chúng tôi chỉ định PRIMARY KEY
ở cuối định nghĩa của cột này.
Hãy nhớ rằng bạn chỉ có thể tạo một khóa chính cho một bảng nhất định.
Giải pháp 2 (bảng mới):
CREATE TABLE product ( name VARCHAR(100) NOT NULL, producer VARCHAR(100) NOT NULL), price DECIMAL(7,2), PRIMARY KEY(name, producer) );
Thảo luận:
Một cách khác để xác định khóa chính trong quá trình tạo bảng mới là sử dụng PRIMARY KEY
mệnh đề ở cuối các định nghĩa cột. Trong trường hợp này, chúng tôi chỉ định một hoặc nhiều cột làm đối số cho PRIMARY KEY
mệnh đề; các cột này trở thành khóa chính cho bảng.
Lưu ý rằng cách tiếp cận này cho phép các khóa chính được tạo với nhiều cột. Trong ví dụ này, khóa chính cho bảng product
được tạo bởi hai cột:name
và producer
.
Giải pháp 3 (bảng hiện có):
ALTER TABLE product ADD PRIMARY KEY (id);
Thảo luận:
Cũng có thể xác định khóa chính cho một bảng hiện có chưa có khóa chính.
Ở đây, bảng được thay đổi bằng cách sử dụng ALTER TABLE
mệnh đề. Bảng (trong ví dụ của chúng tôi, product
) được đặt tên theo từ khóa ALTER TABLE
, rồi đến ADD PRIMARY KEY
mệnh đề theo sau với tên của cột được sử dụng làm khóa chính. Lưu ý rằng bảng phải tồn tại trước khi lệnh này được thực thi và bảng không được có khóa chính.
Giải pháp 4 (bảng hiện có, ràng buộc khóa chính):
ALTER TABLE product ADD CONSTRAINT PK_product_id PRIMARY KEY (id);
Thảo luận:
Sử dụng một truy vấn như thế này nếu bạn muốn đặt tên cho một ràng buộc khóa chính cho một bảng hiện có. Đây, ràng buộc khóa chính, PK_product_id
, được tạo từ cột id
. Nếu bạn không chỉ định tên ràng buộc, cơ sở dữ liệu sẽ tạo một tên ràng buộc mặc định (tên này sẽ thay đổi theo cơ sở dữ liệu).