Tự động tăng cho phép một số duy nhất được tạo tự động khi một bản ghi mới được chèn vào bảng
Thường thì đây là trường khóa chính mà chúng tôi muốn được tạo tự động mỗi khi một bản ghi mới được chèn vào
Từ khóa AUTO_INCREMENT của MySQL
MySQL sử dụng từ khóa AUTO_INCREMENT
để thực hiện tính năng tự động tăng
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
Câu lệnh SQL sau đây xác định cột "Personid" là trường khóa chính tăng tự động trong bảng "Persons"
TẠO BẢNG Người [
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar[255] NOT NULL,
FirstName varchar[255],
Age int,
PRIMARY KEY [Personid]
];
Để chuỗi AUTO_INCREMENT
bắt đầu với một giá trị khác, hãy sử dụng câu lệnh SQL sau
THAY ĐỔI BẢNG Người AUTO_INCREMENT=100;
Khi chúng tôi chèn một bản ghi mới vào bảng "Người", chúng tôi KHÔNG phải chỉ định giá trị cho cột "Người" [một giá trị duy nhất sẽ được thêm tự động]
CHÈN VÀO Người [Tên,Họ]
GIÁ TRỊ ['Lars','Monsen'];
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". Cột "Personid" sẽ tự động được gán một giá trị duy nhất. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen"
Tự động tăng cho phép một số duy nhất được tạo tự động khi một bản ghi mới được chèn vào bảng
Thường thì đây là trường khóa chính mà chúng tôi muốn được tạo tự động mỗi khi một bản ghi mới được chèn vào
Cú pháp cho MySQL
Câu lệnh SQL sau đây xác định cột "Personid" là trường khóa chính tăng tự động trong bảng "Persons"
TẠO BẢNG Người [
Personid int NOT NULL AUTO_INCREMENT,
LastName varchar[255] NOT NULL,
FirstName varchar[255],
Age int,
PRIMARY KEY [Personid]
];
MySQL sử dụng từ khóa AUTO_INCREMENT
để thực hiện tính năng tự động tăng
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
Để chuỗi AUTO_INCREMENT
bắt đầu với một giá trị khác, hãy sử dụng câu lệnh SQL sau
THAY ĐỔI BẢNG Người AUTO_INCREMENT=100;
Để chèn một bản ghi mới vào bảng "Persons", chúng ta KHÔNG phải chỉ định giá trị cho cột "Personid" [một giá trị duy nhất sẽ được thêm tự động]
CHÈN VÀO Người [Tên,Họ]
GIÁ TRỊ ['Lars','Monsen'];
Câu lệnh SQL trên sẽ chèn một bản ghi mới vào bảng "Persons". Cột "Personid" sẽ được gán số tiếp theo từ chuỗi seq_person. Cột "FirstName" sẽ được đặt thành "Lars" và cột "LastName" sẽ được đặt thành "Monsen"
Auto Increment là một chức năng hoạt động trên các loại dữ liệu số. Nó tự động tạo 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 đến nhau bằng khóa chính và khóa ngoại
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? . Điều này có thể hoạt động tốt nhưng như bạn có thể thấy cách tiếp cận phức tạp và không dễ dàng. Để tránh sự phức tạp đó và để đảm bảo rằng khóa chính luôn là duy nhất, chúng ta có thể sử dụng tính năng Tự động gia tăng của MySQL để 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. Cách tốt nhất là 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 mã trên trong bàn làm việc của MySQL đối với myflixdb mang lại cho chúng tôi các 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'];
Việc thực thi đoạn script trên đối với myflixdb trong MySQL workbench cho chúng ta kết quả như bên dưới
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ố gia 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