Trong MySQL, mỗi table thông thường sẽ có một khóa chính nhằm để phân biệt dữ liệu giữa các bản ghi trong table. Khi phát triển các ứng dụng, để tối ưu tốc độ truy vấn thì thông thường chúng ta sẽ chọn khóa chính là kiểu int và thiết lập tăng tự động(auto increment). Auto increment nghĩa là khi thêm một dòng dữ liệu thì không cần phải truyền khóa chính mà nó sẽ tự động tăng thêm 1 khi thêm bản ghi mới.

Khóa chính (Primary key)

Giả sử chúng ta có bảng Student và mỗi student  là một bản ghi, lúc này để phân biệt giữa các student  với nhau thì ta không thể dựa vào tên của student được bởi vì tên student có thể trùng nhau. Chính vì vậy khi thiết kế Cơ sở dữ liệu ta thêm một cột thông tin Id dùng để làm khóa chính và giá trị của nó là duy nhất trong bảng và ta có thể phân biệt giữa các student với nhau.

Khóa chính có các đặc điểm:

  • Giá trị của khóa chính là duy nhất và định danh cho mỗi bản ghi, nghĩa là không thể tồn tại hai bản ghi có trùng khóa chính
  • Khóa chính không thể cho phép NULL(bắt buộc có giá trị) .
  • Mỗi bảng chỉ tồn tại duy nhất một khóa chính.

2. 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 khóa chính trong quá trình tạo bảng hoặc là tạo bảng trước rồi tạo khóa chính sau.

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

Để  tạo khóa chính cho bảng  ta sẽ đặt từ khóa primary key đằng sau cột đó, ví dụ:

1

2

3

4

CREATE TABLE Users (

  Id INT(15) NOT NULL PRIMARY KEY,

  Name VARCHAR(255) NOT NULL

) ENGINE = INNODB;

Hoặc có thể sử dụng lệnh PRIMARY KEY(column_name)  đặt ở cuối các cột trong lệnh tạo bảng để chỉ định, ví dụ:

1

2

3

4

5

CREATE TABLE Users (

  Id INT(15) UNSIGNED NOT NULL,

  Name VARCHAR(255) NOT NULL,

  PRIMARY KEY(id)

) ENGINE = INNODB;

1

2

3

4

5

CREATE TABLE users (

  id INT(10) UNSIGNED NOT NULL,

  email VARCHAR(70) NOT NULL,

  PRIMARY KEY(id, email)

) ENGINE = INNODB;

2.2 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 các bảng đã được tạo trước rồi sau đó tạo khóa chính sau. Sử dụng cú pháp sau để tạo:

1 ALTER TABLE table_name ADD PRIMARY KEY(primary_key_column);

Ví d:

1

2

3

4

5

6

CREATE TABLE Users (

  Id INT(15) UNSIGNED NOT NULL,

  Name VARCHAR(255) NOT NULL

) ENGINE = INNODB;

ALTER TABLE Users ADD PRIMARY KEY(Id)

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

Cách này khuyến khích sử dụng bởi vì khi sử dụng lệnh CONSTRAINT chúng ta có thể tạo tên định danh cho khóa chính, chính vì đó sẽ dễ quản lý hơn. Ví dụ:

1

2

3

4

5

CREATE TABLE Users (

  Id INT(15) UNSIGNED NOT NULL,

  Name VARCHAR(255) NOT NULL,

  CONSTRAINT pk_user PRIMARY KEY(id)

) ENGINE = INNODB;

Hoặc:

1

2

3

4

5

6

CREATE TABLE Users (

  Id INT(15) UNSIGNED NOT NULL,

  Name VARCHAR(255) NOT NULL

) ENGINE = INNODB;

ALTER TABLE Users ADD CONSTRAINT pk_user PRIMARY KEY (Id)

3. 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 lệnh DROP, ví dụ

1 ALTER TABLE Users DROP PRIMARY KEY

4. Lời kết

Không những MySQL, các hệ quản trị Cơ sở dữ liệu khác cũng áp dụng tương tự như trên. Nắm chắc phần này để thiết kế được các database phù hợp với nhu cầu của ứng dụng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here