Tạo khóa chính trong phpmyadmin

  • Trang chủ
  • Hướng dẫn học
  • Học PHP
  • Tạo table - phpMyAdmin

Tạo table - phpMyAdmin

Xem lại các bước khởi động Apache / MySQL và chạy trang phpMyAdmin.

  • Click vào database tintuc ở danh sách bên trái, click chọn tab Structure.
  • Ở phần Create table điền tên table (ví dụ: tin_xahoi) và số cột (ví dụ: 5 cột).

Tạo khóa chính trong phpmyadmin

  • Click vào button Go để sang bước điền thông tin cho từng cột.
  • Giả sử ta có các cột với các tên gọi và chọn dữ liệu như sau:

    • id: Số thứ tự cho mỗi hàng dữ liệu (record), số này sẽ cho tăng tự động (auto increment) và thường chọn là khóa chính (primary key), chọn dữ liệu là số (INT), với chiều dài 10 ký tự (tương ứng với thứ tự lên tới 10 số tự nhiên).
    • title: tiêu đề cho tin tức, do tiêu đề thường ngắn, ta chọn dữ liệu là TEXT với chiều dài 100 ký tự.
    • date: ngày viết tin tức, chọn dữ liệu là DATE.
    • description: dòng mô tả ngắn cho tin tức, chọn dữ liệu là TEXT với chiều dài 200 ký tự.
    • content: Nội dung cho tin tức, đây là nội dung dài, nên chọn kiểu dữ liệu là LONGTEXT với chiều dài 1000 ký tự.
  • Trước mắt chỉ cần chú ý đến cách chọn dữ liệu như bên trên.

Tạo khóa chính trong phpmyadmin

  • Click button Save bên dưới để kết thúc việc tạo table.
  • Table vừa tạo sẽ có dạng như sau:

Tạo khóa chính trong phpmyadmin

Chỉnh AUTO INCREMENT cho id

Việc này cần thiết, vì mỗi khi thêm một hàng dữ liệu thì mục id sẽ tự động được tăng thêm 1.

  • Tại hàng id, cột Action, Click chọn Change.

Tạo khóa chính trong phpmyadmin

  • Ở màn hình điều chỉnh, tìm và click chọn checkbox ở vị trí A_I.
  • Click Save để thay đổi điều chỉnh và xem kết quả.

Tạo khóa chính trong phpmyadmin

Tạo khóa chính trong phpmyadmin

Chỉnh KHÓA CHÍNH cho id

Mỗi table chỉ có một khóa chính, khóa chính có tác dụng xác định tính duy nhất của mỗi hàng dữ liệu trong table, ngoài ra được dùng để tạo mối liên hệ 1-n tham chiếu đến các table khác.

  • Tại hàng id, cột Action, Click chọn Primary, khi đó sẽ có màn hình confirm xuất hiện, click Ok để xác nhận.

Tạo khóa chính trong phpmyadmin

Tạo khóa chính trong phpmyadmin

  • Đây là kết quả.

Tạo khóa chính trong phpmyadmin

Tạo 1 record dữ liệu

  • Vẫn ở trong table tin_xahoi (nếu không thì click table tin_xahoi ở danh sách bên trái), sau đó click chọn tab Insert.

Tạo khóa chính trong phpmyadmin

  • Ở màn hình chèn record, điền dữ liệu tương tự như hình bên dưới:

    • id: không cần điền, dữ liệu sẽ tự tăng.
    • Các vị trí khác chỉ quan tâm đến trường Value
  • Click Go để insert dữ liệu, nếu tất cả đúng sẽ xuất hiện câu thông báo "rows inserted", nếu báo lỗi thì xem thông báo lỗi để chỉnh cho phù hợp.

Tạo khóa chính trong phpmyadmin

  • Click chọn tab Browser để xem dữ liệu được insert.

Tạo khóa chính trong phpmyadmin

  • Đến đây ta đã hoàn thành việc tạo table của database tintuc, đồng thời cũng insert vào table một record.

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 record trong table. Khi làm các ứng dụng website và để 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, nghĩa là khi bạn 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 lên 1 khi thêm mới.

Tạo khóa chính trong phpmyadmin

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Đặc điểm của khóa chính (Primary key)

Giả sử chúng ta có bảng SINHVIEN và mỗi sinh viên là một record, lúc này để nhận phân biệt giữa các sinh viên thì ta không thể dựa vào tên của sinh viên được vì tên sinh viên có thể trùng nhau. Chính vì vậy ta chọn giải pháp là ta thêm một field MaSV dùng để làm khóa chính và giá trị của nó là duy nhất nên có thể phân biệt giữa các sinh viên với nhau.

Sau đây là một số đặc điểm của khóa chính trong MySQL nói chung và trong các mô hình CSDL nói riêng:

  • Giá trị của khóa chính là duy nhất cho mỗi record, nghĩa là không thể tồn tại hai record trùng khóa chính
  • Khóa chính không thể cho phép NULL .
  • Mỗi bảng chỉ tồn tại duy nhất một khóa chính, mỗi khóa chính có thể có nhiều column.

Bởi vì trong MySQL hoạt động với kiểu số sẽ nhanh hơn kiểu chuỗi nên ta sẽ chọn kiểu INT (INT, BIGINT, ..), sau khi chạy code tạo khóa chính thì nó sẽ tạo một chỉ mục có tên là PRIMARY và đây chính là chỉ mục khóa chính.

Bài viết này được đăng tại [free tuts .net]

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 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);

Ví dụ:

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)

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 DROP, ví dụ:

ALTER TABLE users DROP PRIMARY KEY

4. Lời kết

Chúng ta chỉ sử dụng hai cách trên để tạo khóa chính tron MySQL thôi, và không chỉ có ở MySQL mà ở SQL Server cũng có cú pháp tương tự vì chúng để sử dụng ngôn ngữ T-SQL. Bài tiếp theo chúng ta sẽ tìm hiểu một loại index cũng tương tự như khóa chính đó là UNIQUE.