Tạo khóa chính (Primary key) trong MySQL

Thông thường chúng ta có hai cách tạo khóa chính đó là tạo luôn trong quá trình tạo bảng (create table) hoặc là tạo bảng trước rồi tạo khóa chính sau. Sau đây là các ví dụ về hai cách này.

Tạo trong lệnh tạo bảng Create Table

Để chọn field cho khóa chính ta sẽ đặt từ khóa primary key đằng sau column đó, ví dụ:

CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL PRIMARY KEY,
  email VARCHAR(70) NOT NULL
) ENGINE = INNODB;

Hoặc ta sẽ dùng lệnh PRIMARY KEY(field) đặt ở cuối các fields trong lệnh tạo bảng, ví dụ:

CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL,
  email VARCHAR(70) NOT NULL,
  PRIMARY KEY(id)
) ENGINE = INNODB;

Chọn nhiều fields làm khóa chính

Để chọn nhiều fields làm khóa chính thì ta sử dụng lệnh PRIMARY KEY(field1, field2, ..)và đặt nó ở cuối danh sách các field trong lệnh tạo bảng, ví dụ:

CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL,
  email VARCHAR(70) NOT NULL,
  PRIMARY KEY(id, email)
) ENGINE = INNODB;

Sử dụng lệnh alter để tạo khóa chính

Thông thường cách này sử dụng trong trường hợp ta tạo bảng trước rồi sau đó tạo khóa chính sau. Ta sẽ sử dụng cú pháp sau để tạo:

ALTER TABLE table_name ADD PRIMARY KEY(primary_key_column);
CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL,
  email VARCHAR(70) NOT NULL
) ENGINE = INNODB;
ALTER TABLE users ADD PRIMARY KEY(id)

Sử dụng CONSTRAINT đặt tên cho khóa chính

Cách này khuyến khích sử dụng khi sử dụng lệnh CONSTRAINT chúng ta có thể tạo tên cho khóa chính, nhờ đó sau này ta sẽ dễ quản lý hơn. Sau đây là một số ví dụ sử dụng CONSTRAINTđể tạo khóa chính:

CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL,
  email VARCHAR(70) NOT NULL,
  CONSTRAINT pk_user PRIMARY KEY(id)
) ENGINE = INNODB;

Hoặc:

CREATE TABLE users (
  id INT(10) UNSIGNED NOT NULL,
  email VARCHAR(70) NOT NULL
) ENGINE = INNODB;
 
ALTER TABLE users ADD CONSTRAINT pk_user PRIMARY KEY (id)

Xóa khóa chính (Drop Primary Key)

Để xóa khóa chính thì chúng ta sử dụng lệnh ALTER TABLE kết hợp với DROP, ví dụ:

ALTER TABLE users DROP PRIMARY KEY

Last updated