Thứ Ba, 25 tháng 7, 2023

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 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.

Mục lục

  • 1. AUTO_INCREMENT là gì?
  • 2. Tạo AUTO_INCREMENT
  • 3. Thay đổi giá trị AUTO_INCREMENT
  • 4. Lời kết

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.

Bài viết này được đăng tại tranvanbinh.vn

1
2
3
4
5
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.

1
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).

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master