TẠO BẢNG MySQL id tự động tăng

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Tùy chọn AUTO INCREMENT của MySQL và cách sử dụng làm Khóa chính với sự trợ giúp của các ví dụ đơn giản

Tùy chọn này được sử dụng để tạo mã định danh duy nhất cho một hàng trong bảng MySQL. Khi MySQL AUTOINCREMENT được bật cho một cột thì người dùng không cần chỉ định các giá trị đó trong khi chèn bản ghi vào bảng

Điều quan trọng cần lưu ý là AUTOINCREMENT hoạt động trên các kiểu dữ liệu số như INT

=> Hãy xem Hướng dẫn dành cho người mới bắt đầu MYSQL tại đây

Bạn sẽ học được gì

Sử dụng AUTO INCREMENT làm PRIMARY KEY

TẠO BẢNG MySQL id tự động tăng

Vì MySQL AUTO_INCREMENT tạo một ID duy nhất cho mỗi hàng nên các cột có áp dụng TĂNG TỐC TỰ ĐỘNG cũng có thể được sử dụng làm KHÓA CHÍNH. Các số/số nhận dạng được tạo tuần tự cho các cột TĂNG TỐC TỰ ĐỘNG. Ngoài ra, không phải lúc nào cũng có thể xác định KHÓA CHÍNH trên bảng tùy thuộc vào dữ liệu được lưu trữ

Trong những trường hợp như vậy, các cột AUTO_INCREMENT có thể là lựa chọn cho các khóa duy nhất

cú pháp

TĂNG TỐC TỰ ĐỘNG được chỉ định cùng với tên cột trong quá trình tạo bảng

cộtTên cộtLoại TĂNG TỰ ĐỘNG

Thí dụ. Hãy tạo một bảng employee với emp_id là cột AUTO INCREMENT và emp_name thuộc loại VARCHAR

CREATE TABLE employees (emp_id SMALLINT(5) NOT NULL AUTO_INCREMENT, 
emp_name CHAR(128) DEFAULT NULL, PRIMARY KEY (emp_id));

Ở đây, chúng tôi đã khai báo cột emp_id với tùy chọn AUTO INCREMENT và cũng xác định cùng cột với PRIMARY KEY

Trong khi chèn các giá trị vào cột được đánh dấu là TỰ ĐỘNG TĂNG, các giá trị được chỉ định bắt đầu với giá trị ban đầu là 1

Hãy xem cách chèn một số bản ghi

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
SELECT * FROM employees;

TẠO BẢNG MySQL id tự động tăng

Điểm quan trọng

#1) Xóa một hàng khỏi bảng có cột auto_increment làm khóa chính

  • Trong bảng trên, ví dụ: nếu chúng tôi xóa các hàng có emp_id 2 và chèn một bản ghi mới – emp_id được tạo sẽ vẫn là . e chỉ mục sẽ tiếp tục từ nơi bản ghi cuối cùng được thêm vào.
DELETE FROM employees WHERE emp_id = 2
SELECT * FROM employees;

TẠO BẢNG MySQL id tự động tăng

INSERT INTO employees(emp_name) VALUES("Eric Lee");
SELECT * FROM employees;

Như bạn có thể thấy ở trên, bản ghi mới được chèn có emp_id được chỉ định là 4 mặc dù chúng tôi đã xóa một hàng ở giữa

  • Nếu bản ghi cuối cùng trong bảng bị xóa, thì emp_id mới được chỉ định sẽ là 4 vì chỉ số auto_increment trỏ tới 5
    Bây giờ, hãy xóa bản ghi mà chúng ta đã thêm ở điểm trên – Vì vậy, hãy xóa bản ghi với emp_id = 4 và chèn một bản ghi mới
DELETE FROM employees WHERE emp_id >= 4
INSERT INTO employees(emp_name) VALUES("Shane Watson");
SELECT * FROM employees;

TẠO BẢNG MySQL id tự động tăng

Ghi chú. Điều quan trọng cần lưu ý ở đây là tùy chọn AUTO TĂNG chỉ có thể được áp dụng cho các trường số

Ví dụ: hãy thử gán tùy chọn AUTO_INCREMENT cho trường VARCHAR – trong trường hợp này là emp_name

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
0

Nếu bạn thực hiện lệnh trên, bạn sẽ gặp lỗi cho biết thông số cột không chính xác

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
1

Chỉ định một trường là TĂNG TỰ ĐỘNG sau khi tạo bảng

Rất nhiều lần, sau này chúng ta sẽ biết nếu chúng ta muốn xem xét việc tạo một giá trị cột AUTO TĂNG sau khi lược đồ ban đầu của nó đã được tạo

Điều này có thể được thực hiện bằng lệnh MySQL ALTER TABLE

Chúng ta có thể chỉ định tùy chọn AUTO INCREMENT cho một cột hiện có có kiểu DỮ LIỆU SỐ

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
2
SELECT * FROM employees;

TẠO BẢNG MySQL id tự động tăng

Như bạn có thể thấy bên dưới, chúng tôi đang sử dụng lệnh ALTER TABLE và sửa đổi cột emp_id để có tùy chọn AUTO_INCREMENT

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
4

Bây giờ, hãy thử chèn một bản ghi mới vào bảng (không chỉ định) bất kỳ emp_id nào

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
5
SELECT * FROM employees;

TẠO BẢNG MySQL id tự động tăng

Từ đầu ra ở trên, bạn có thể thấy rằng một bản ghi mới đã được chèn với emp_id 1003, đây là giá trị được tăng tự động của hàng hiện có được chèn lần cuối trong bảng (i. hàng có emp_id 1002)

MySQL RESET TỰ ĐỘNG TĂNG

Đôi khi, chúng tôi muốn đặt lại chỉ mục AUTO_INCREMENT thành giá trị do người dùng xác định

Các giá trị mặc định bắt đầu từ 1,2,3, v.v. Giả sử chúng tôi muốn thay đổi cài đặt mặc định và bắt đầu các giá trị cột từ 2001, 2002, v.v. ( E. g. rất nhiều phòng khách sạn có các số như – 1001, 1002, v.v.)

Hãy xem cách chúng ta có thể đặt bộ đếm AUTO_INCREMENT nghỉ ngơi

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
7

Bây giờ chúng ta hãy thử thêm một bản ghi mới vào bảng EMPLOYEES

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
8

TẠO BẢNG MySQL id tự động tăng

Như chúng ta có thể thấy ở trên, TĂNG TỐC TỰ ĐỘNG hiện đã được đặt lại thành 5000 và sẽ bắt đầu từ chỉ mục đã đặt trong khi các bản ghi mới được thêm vào

Hãy cũng hiểu, điều gì sẽ xảy ra nếu ai đó gán một giá trị cho một cột được khai báo là AUTO TĂNG

Chúng ta có thể thấy một ví dụ đối với bảng mà chúng ta đã tạo trước đó với AUTO_INCREMENT được đặt thành 5000

Chúng tôi sẽ chèn một bản ghi có giá trị nhỏ hơn chỉ số AUTO_INCREMENT hiện tại

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
9

TẠO BẢNG MySQL id tự động tăng

Trong ví dụ trên, bạn có thể thấy, mặc dù chúng tôi đã thêm một hàng có giá trị rõ ràng là 100, chỉ số AUTO_INCREMENT vẫn giữ nguyên và tiếp tục đến số tiếp theo khi bản ghi mới được chèn vào

Hãy xem một ví dụ khác, nơi chúng tôi thêm một bản ghi rõ ràng với một số lớn hơn chỉ số AUTO_INCREMENT hiện tại, ở đây trong trường hợp này, nó được đặt thành 5001

SELECT * FROM employees;
0

TẠO BẢNG MySQL id tự động tăng

Trong kết quả ở trên, bạn có thể thấy rằng việc chèn một bản ghi có giá trị lớn hơn chỉ mục AUTO_INCREMENT sẽ dẫn đến việc đặt lại giá trị và các bản ghi mới sẽ tuân theo chỉ mục mới được đặt – trong trường hợp này, bản ghi có emp_id 6001

Các câu hỏi thường gặp

Q #1) Làm thế nào để bạn đặt một trường là AUTO INCREMENT trong MySQL?

Câu trả lời. Một cột có thể được xác định để có thuộc tính AUTO INCREMENT trong quá trình tạo bảng hoặc sau này bằng phương thức ALTER TABLE. Giá trị mặc định của AUTO INCREMENT là 1 và nó tăng 1 sau mỗi lần chèn thành công

Xin lưu ý rằng bất kỳ thao tác xóa nào xảy ra trong bảng sẽ không ảnh hưởng đến chỉ số TĂNG TỐC TỰ ĐỘNG và các bản ghi mới sẽ tiếp tục nhận được các giá trị chỉ mục tăng dần

Các cột có tùy chọn TĂNG TỐC TỰ ĐỘNG thường được sử dụng để chỉ ra các KHÓA CHÍNH khi muốn có tính duy nhất và bất kỳ giá trị hoặc trường nội tại nào không thể xác định duy nhất một bản ghi

Q #2) Chúng tôi có thể tự động tăng varchar không?

Câu trả lời. Chỉ các trường số như INT, SMALLINT, MEDIUMINT, BIGINT mới có thể được chỉ định tùy chọn AUTO_INCREMENT

Việc gán AUTO_INCREMENT cho loại dữ liệu không tương thích sẽ gây ra lỗi trong khi thực hiện truy vấn

Q #3) Làm cách nào để đặt lại AUTO_INCREMENT?

Câu trả lời. MySQL AUTO INCREMENT có thể được đặt lại bằng lệnh ALTER TABLE. Điều này hữu ích khi bạn muốn thay đổi chỉ mục hiện tại của cột AUTO_INCREMENT

Truy vấn mẫu có thể được sử dụng để đặt lại được đưa ra dưới đây

INSERT INTO employees(emp_name) VALUES("David Johnson"),("Anita Sharma"),("Steve Smith");
7

Truy vấn trên sẽ đặt lại bộ đếm AUTO_INCREMENT thành 5000

Q #4) Chúng tôi có thể có nhiều cột với AUTO_INCREMENT được bật không?

Câu trả lời. Đó là không thể. Một bảng có thể có tối đa một cột được áp dụng tùy chọn AUTO TĂNG

Nếu bạn thử xác định nhiều hơn một cột là AUTO INCREMENT, thì bạn có thể gặp lỗi như bên dưới

TẠO BẢNG MySQL id tự động tăng

Câu hỏi 5) Điều gì xảy ra khi một hàng có giá trị TĂNG TỐC TỰ ĐỘNG bị xóa khỏi bảng?

Câu trả lời. Chỉ mục hiện tại của cột TĂNG TỐC TỰ ĐỘNG không phụ thuộc vào bất kỳ thao tác xóa hàng nào xảy ra trong bảng. Các bản ghi mới được chèn sẽ vẫn đối lập với giá trị tiếp theo của chỉ số AUTO TĂNG

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về tùy chọn MySQL AUTO INCREMENT có thể được sử dụng để tạo các giá trị cột có thể đại diện duy nhất cho một hàng

Các giá trị AUTO INCREMENT có thể được đặt lại bằng lệnh ALTER TABLE bất cứ lúc nào sau khi khai báo

AUTO INCREMENT được sử dụng trong nhiều ứng dụng trong thế giới thực dưới dạng KHÓA CHÍNH vì nó đảm bảo tính duy nhất cho các bản ghi mới được chèn vào bảng