Bài MySQL 39: Sequence trong MySQL

0
11

Xin chào các bạn, trong bài ngày hôm nay chúng ta sẽ cùng nhau tìm hiểu về Sequence trong MySQL để tự động tạo số cho các cột ID của bảng.

Cách tạo Sequence

Trong MySQL, một sequence là một danh sách các số nguyên được tạo theo thứ tự tăng dần, 1,2,3… Ví dụ: ID khách hàng, số nhân viên trong và số thiết bị hệ thống quản lý dịch vụ trong bảng.

Để tạo một seuqence trong MySQL, bạn cần đặt thuộc tính AUTO_INCREMENT vào một cột, thường là cột khóa chính.

Các quy tắc sau được áp dụng khi bạn sử dụng thuộc tính AUTO_INCREMENT:

  • Mỗi bảng chỉ có một cột AUTO_INCREMENT có kiểu dữ liệu thường là số nguyên.
  • Cột AUTO_INCREMENT phải được lập chỉ mục, có nghĩa là nó có thể là chỉ mục PRIMARY KEY hoặc UNIQUE.
  • Cột AUTO_INCREMENT phải có ràng buộc NOT NULL. Khi bạn đặt thuộc tính AUTO_INCREMENT thành một cột, MySQL sẽ tự động thêm ràng buộc NOT NULL vào cột đó.

Ví dụ về cách tạo Sequence trong MySQL

Câu lệnh sau tạo bảng có tên là employees có cột emp_no là cột AUTO_INCREMENT:

Cách Sequence làm việc 

Cột AUTO_INCREMENT có các thuộc tính sau:

  • Giá trị bắt đầu của một cột AUTO_INCREMENT là 1 và nó được tăng lên 1 khi bạn chèn một NULLvalue vào cột hoặc khi bạn bỏ qua giá trị của nó trong câu lệnh INSERT.
  • Để có được số thứ tự được tạo cuối cùng, bạn sử dụng hàm LAST_INSERT_ID(). Chúng ta thường sử dụng hàm đó cho các câu lệnh tiếp theo, ví dụ: chèn dữ liệu vào các bảng.
  • Nếu bạn chèn một hàng mới vào một bảng và chỉ định một giá trị cho cột ID, MySQL sẽ chèn một số thứ tự vào đó nếu số thứ tự không tồn tại. Nếu bạn chèn một giá trị mới lớn hơn số thứ tự tiếp theo, MySQL sẽ sử dụng giá trị mới làm số thứ tự bắt đầu và tạo một số thứ tự duy nhất lớn hơn giá trị hiện tại cho lần sử dụng tiếp theo. Điều này tạo ra khoảng trống trong sequence.
  • Nếu bạn sử dụng câu lệnh UPDATE để cập nhật các giá trị trong cột AUTO_INCREMENT thành một giá trị đã tồn tại, MySQL sẽ thông báo một lỗi khóa trùng lặp nếu cột có một chỉ mục duy nhất.
  • Nếu bạn sử dụng câu lệnh DELETE để xóa hàng được chèn cuối cùng, MySQL có thể hoặc không thể sử dụng lại số thứ tự đã xóa tùy thuộc vào công cụ lưu trữ của bảng. Bảng MyISAM không sử dụng lại số thứ tự đã xóa nếu bạn xóa một hàng. ví dụ, id chèn cuối cùng trong bảng là 10, nếu bạn xóa nó, MySQL vẫn tạo số thứ tự tiếp theo là 11 cho hàng mới. Tương tự như các bảng MyISAM, các bảng InnoDB không sử dụng lại số thứ tự khi các hàng bị xóa.

Kết luận

Như vậy trong bài học ngày hôm nay mình đã giới thiệu đến các bạn Sequence trong MySQL. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về câu lệnh ALTER TABLE trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây