MySQL AUTO_INCREMENT kèm các ví dụ

Tăng tự động là gì?

Tăng tự động là một hàm hoạt động trên các kiểu dữ liệu số. Nó tự động tạo ra các giá trị số tuần tự mỗi khi một bản ghi được chèn vào bảng cho một trường được xác định là tăng tự động.

Khi sử dụng tăng tự động?

Trong bài học về chuẩn hóa cơ sở dữ liệu, chúng ta đã xem xét cách lưu trữ dữ liệu với độ dư thừa tối thiểu bằng cách lưu trữ dữ liệu vào nhiều bảng nhỏ, liên quan với nhau bằng khóa chính và khóa ngoài.

MySQL AUTO_INCREMENT kèm các ví dụ

Khóa chính phải là duy nhất vì nó xác định duy nhất một hàng trong cơ sở dữ liệu. Nhưng làm thế nào chúng ta có thể đảm bảo rằng khóa chính luôn là duy nhất? Một trong những giải pháp khả thi là sử dụng công thức để tạo khóa chính, công thức này sẽ kiểm tra sự tồn tại của khóa trong bảng trước khi thêm dữ liệu. Cách này có thể hiệu quả nhưng như bạn thấy, cách tiếp cận này phức tạp và không hoàn hảo. Để tránh sự phức tạp như vậy và đảm bảo rằng khóa chính luôn là duy nhất, chúng ta có thể sử dụng MySQLTính năng Tự động tăng để tạo khóa chính. Tự động tăng được sử dụng với kiểu dữ liệu INT. Kiểu dữ liệu INT hỗ trợ cả giá trị có dấu và không dấu. Kiểu dữ liệu không dấu chỉ có thể chứa số dương. Theo thông lệ tốt nhất, nên xác định ràng buộc không dấu trên khóa chính tự động tăng.

Cú pháp tăng tự động

Bây giờ chúng ta hãy xem tập lệnh được sử dụng để tạo bảng danh mục phim.

CREATE TABLE `categories` (
  `category_id` int(11) AUTO_INCREMENT,
  `category_name` varchar(150) DEFAULT NULL,
  `remarks` varchar(500) DEFAULT NULL,
  PRIMARY KEY (`category_id`)
);

Lưu ý “AUTO_INCREMENT” trên trường Category_id. Điều này khiến Id danh mục được tạo tự động mỗi khi một hàng mới được chèn vào bảng. Nó không được cung cấp khi chèn dữ liệu vào bảng, MySQL tạo ra nó.

Theo mặc định, giá trị bắt đầu cho AUTO_INCREMENT là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới

Hãy kiểm tra nội dung hiện tại của bảng danh mục.

SELECT * FROM `categories`;

Thực thi đoạn script trên trong MySQL workbench so với myflixdb cung cấp cho chúng ta kết quả sau.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL

Bây giờ hãy chèn một danh mục mới vào bảng danh mục.

INSERT INTO  `categories` (`category_name`) VALUES ('Cartoons');

Thực thi đoạn script trên đối với myflixdb trong MySQL bàn làm việc cho chúng ta kết quả như hình dưới đây.

category_id category_name remarks
1 Comedy Movies with humour
2 Romantic Love stories
3 Epic Story acient movies
4 Horror NULL
5 Science Fiction NULL
6 Thriller NULL
7 Action NULL
8 Romantic Comedy NULL
9 Cartoons NULL

Lưu ý rằng chúng tôi không cung cấp id danh mục. MySQL tự động tạo nó cho chúng tôi vì id danh mục được xác định là tăng tự động.

Nếu bạn muốn lấy id chèn cuối cùng được tạo bởi MySQL, bạn có thể sử dụng hàm LAST_INSERT_ID để làm điều đó. Tập lệnh hiển thị bên dưới lấy id cuối cùng được tạo.

SELECT LAST_INSERT_ID();

Việc thực thi tập lệnh trên sẽ cung cấp số tăng Tự động cuối cùng được tạo bởi truy vấn INSERT. Các kết quả được hiển thị dưới đây.

MySQL TỰ ĐỘNG

Tổng kết

  • Thuộc tính tăng tự động khi được chỉ định trên một cột có kiểu dữ liệu số, sẽ tạo các số tuần tự bất cứ khi nào một hàng mới được thêm vào cơ sở dữ liệu.
  • Gia số tự động thường được sử dụng để tạo khóa chính.
  • Kiểu dữ liệu được xác định trên phần tăng Tự động phải đủ lớn để chứa nhiều bản ghi. Việc xác định TINYINT làm kiểu dữ liệu cho trường tăng tự động sẽ giới hạn số lượng bản ghi có thể được thêm vào bảng ở mức 255 vì mọi giá trị vượt quá mức đó sẽ không được loại dữ liệu TINYINT chấp nhận.
  • Nó được coi là một cách thực hành tốt để chỉ định ràng buộc không dấu trên các khóa chính tăng tự động để tránh có số âm.
  • Khi một hàng bị xóa khỏi bảng, id tăng tự động của nó sẽ không được sử dụng lại. MySQL tiếp tục tạo ra các số mới theo trình tự.
  • Theo mặc định, giá trị bắt đầu cho AUTO_INCREMENT là 1 và giá trị này sẽ tăng thêm 1 cho mỗi bản ghi mới
  • Để cho chuỗi AUTO_INCREMENT bắt đầu bằng một giá trị khác, hãy sử dụng AUTO_INCREMENT = 10

Bản tin Guru99 hàng ngày

Bắt đầu ngày mới của bạn với những tin tức AI mới nhất và quan trọng nhất hiện nay.