03/08/2018, 10:06

Tìm hiểu AUTO_INCREMENT trong MySQL

Đáng lẽ ra bài này tôi trình bày ở bài tạo khóa chính Primary Key nhưng thiết nghĩ để các bạn dễ tìm kiếm thì tôi sẽ chia nhỏ nó ra làm một bài ...

Đáng lẽ ra bài này tôi trình bày ở bài tạo khóa chính Primary Key nhưng thiết nghĩ để các bạn dễ tìm kiếm thì tôi sẽ chia nhỏ nó ra làm một bài riêng để trình bày cho chi tiết hơn. AUTO_INCREMENT là một chức năng khá quan trọng trong việc phân tích và tối ưu cơ sở dữ liệu, chi tiết thì bạn đọc ở phần dưới đây.

1. AUTO_INCREMENT là gì?

AUTO_INCREMENT nói nôm na có nghĩa là tăng tự động, có nghĩa là nếu bạn thiết lập một field nào đó là tăng tự động thì khi bạn thêm record mới bạn không cần phải truyền data cho nó và nó sẽ tự lấy giá trị lớn nhất tăng lên 1. Tuy nhiên không phải lúc nào nó cũng lấy giá trị lớn nhất mà sẽ tuân theo những tính chất sau đây:

  • AUTO_INCREMENT chỉ thiết lập được cho kiểu INT và mỗi bảng chỉ có một field duy nhất, nghĩa là nếu bạn thiết lập 2 fields là AUTO_INCREMENT thì sẽ bị lỗi ngay.
  • Khi bạn thêm dữ liệu nếu bạn có truyền data thì nó sẽ lấy data đó thay vì tăng tự động, ngược lại nó sẽ lấy giá trị lớn nhất hiện tại và tăng lên 1(giá trị lớn nhất này lưu trong config của table chứ không phải là id lớn nhất trong các records).
  • Khi bạn xóa một record thì sẽ bị khuyết mất một giá trị, lúc này nếu bạn thêm thì nó sẽ không lấp vào vị trí này mà nó tuân theo quy luật trên.
  • Giả sử giá trị 120 là lớn nhất, bạn xóa đi 120 thì lúc này lớn nhất là 119. Lúc này nếu ban thêm mới thì nó sẽ lấy 121 chứ không phải là 120 vì giá trị lớn nhất nó lưu trong config của table.
  • Thông thường ta sử dụng AUTO_INCREMENT cho Primary Key khi viết ứng dụng website
  • Mặc định AUTO_INCREMENT sẽ có giá trị đầu tiên là 1

Đấy là những đặc điểm của AUTO_INCREMENT. Bây giờ ta sẽ tìm hiểu các thiết lập nó nhé.

2. Tạo AUTO_INCREMENT

Để tạo AUTO_INCREMENT thì ta thêm từ khóa AUTO_INCREMENT đằng sau field muốn tạo trong lệnh tạo bảng (Create Table). Thông thường chúng ta dùng cho khóa chính nên trong các ví dụ dưới đây tôi sử dụng cho field ID.

CREATE TABLE Users(
	id INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(50) NOT NULL UNIQUE,
	email VARCHAR (50) NOT NULL UNIQUE
)

3. Thay đổi giá trị AUTO_INCREMENT

Như bạn biết mặc định AUTO_INCREMENT sẽ có giá trị đầu tiên là 1. Nhưng đôi lúc bạn muốn giá trị đầu tiên của nó là một con số khác thì bạn sẽ sử dụng lênh ALTER TABLE để thay đổi.

ALTER TABLE Users AUTO_INCREMENT = 1000

Sau khi chạy lệnh này thì khi bạn thêm dữ liệu nó sẽ lấy 1000 thay vì 1 như cấu hình mặc định ban đầu.

Lưu ý: Nếu số bạn chọn nhỏ hơn số max của auto thì sẽ không có tác dụng. Ví dụ field ID hiện tại max là 1000 nhưng bạn thay đổi thông số auto 400 thì sẽ không có tác dụng.

4. Lời kết

Khi phân tích dữ liệu bạn nên chọn khóa chính là auto increment, thứ nhất là nó truy vấn nhanh và thứ hai là khi thêm dữ liệu bạn không cần phải truyền giá trị cho khóa chính vì nó đã tăng tự động. Bài này kết thúc tại đây, bài tiếp theo mình sẽ nói về khóa ngoại (foreign key).

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

Tìm hiểu Rake trong Rails

1. Rake là gì? Khi lập trình ứng dụng với Rails bạn đã quá quen với cái câu lệnh như rake db:create, rake db:migrate hay rake db:seed...Những câu lệnh trên nhằm mục đích chạy các ruby code bên trong các Makefile. Rake cho phép bạn định nghĩa list các task kèm theo dependency của nó, với mục đích ...

Bùi Văn Nam viết 13:56 ngày 12/08/2018

Tìm hiểu mã nguồn mở PHP CMS Drupal hướng dẫn tìm hiểu Modules trong Drupal - bài 3

Tiếp theo loạt bài viết về Drupal : Loạt bài đều nói về Drupal 8 nhé các bạn. Bài 1 Bài 2 Module trong Drupal là gì? Là sức mạnh của cộng đồng mạng Bởi vì cộng đồng Drupal rất lớn, cộng đồng chia sẻ tính đến thời điểm hiện tại khoảng 34.940 modules gồm tất cả các phiên bản Drupal ...

Tạ Quốc Bảo viết 13:42 ngày 12/08/2018

Tìm hiểu cookie trong javascript

Giới Thiệu Cookie sẽ lưu giữ thông tin của người dùng trên các trang của website Vậy cookie là gì? Cookie là dữ liệu, lưu dữ trong những file text nhỏ trên máy tính của người dùng Khi một web server gửi một trang web đến trình duyệt, rồi kết nối bị tắt đi và server quên đi tất cả mọi thứ ...

Trịnh Tiến Mạnh viết 13:27 ngày 12/08/2018

Tìm hiểu ViewStub trong Android

ViewStub là một View invisible, có kích thước là ""zero-size" và "can be used to lazily inflate layout resources at runtime" - nôm na hiểu là khi nào cần thì 1 view nào đó sẽ được tạo. Khi ViewStub được set là "visible" hoặc khi phương thức inflate() được gọi đến thì một View nào đó mong muốn sẽ ...

Tạ Quốc Bảo viết 13:13 ngày 12/08/2018

Tìm hiểu Decorator trong Rails

1. Decorator là gì? Như chúng ta đã biết, RoR được xây dựng trên mô hình MVC. Trong đó Model đóng vai trò xử lý dữ liệu, Views có nhiện vụ hiển thị dữ liệu cho người dùng. Giả sử bạn đang xây dựng một hệ thống tuyển dụng nhân sự, trong đó cần lưu rất nhiều thông tin của các ứng viên ...

Tạ Quốc Bảo viết 13:12 ngày 12/08/2018
0