Thuộc tính AUTO_INCREMENT trong MySQL

Thuộc tính AUTO_INCREMENT trong MySQL
Thuộc tính AUTO_INCREMENT trong MySQL

Chức năng của Thuộc tính AUTO_INCREMENT trong MySQL

Thuộc tính AUTO_INCREMENT trong MySQL dùng để cấu hình tự động tăng dần cho id kiểu số int sau mỗi lần dữ liệu được thêm vào bảng, cột id sẽ không nhập mà để trống và sau mỗi lần chèn hàng vào thì cột id sẽ tăng lên 1, vị trí bắt đầu là số 1 sau đó tăng dần.

Code Thuộc tính AUTO_INCREMENT trong MySQL

CREATE TABLE `tb_nhanvien` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `tuoi` int(11) DEFAULT 0,
  `luong` bigint(20) DEFAULT 0,
  `gioitinh` tinyint(1) DEFAULT 0,
  `noidung` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
<?php
   $dbhost = 'localhost';
   $dbuser = 'webmoi_userdata'; // Tên username
   $dbpass = 'xgZwEfQWE'; // Mật khẩu
   // Kết nối đến tên username
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   if(! $conn ){
     die('Không kết nối được: ' . mysql_error());
   }
   // Chọn tên database
   mysql_select_db('webmoi_tendata');
   // Xét kiểu tiếng việt 
   mysql_query('SET NAMES "utf8"');
   
  // CREATE TABLE `tb_nhanvien`
   echo "<b>CREATE TABLE `tb_nhanvien`</b><br>";
   $sql ="CREATE TABLE `tb_nhanvien` (
  `id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `ten` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `tuoi` int(11) DEFAULT 0,
  `luong` bigint(20) DEFAULT 0,
  `gioitinh` tinyint(1) DEFAULT 0,
  `noidung` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `title` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
  `description` text CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;
  ";
  //Cột id: kiểu int giới hạn 11 ký tự, không cho phép null, PRIMARY KEY là tạo khóa chính, AUTO_INCREMENT là tự động tăng dần sau mỗi lần thêm một hàng
  // Cột ten: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
  // Cột tuoi: kiểu int dạng số giới hạn 11 ký tự, mặc định là 0
  // Cột luong: kiểu bigint dạng số giới hạn 20 ký tự, mặc định là 0, có thể chọn int 11 ký tự
  // Cột gioitinh: để tinyint dạng số chỉ 1 ký tự, mặc định là 0, thường giới tính Nam sẽ lưu là 1, Nữ lưu là 0
  // Cột noidung: kiểu chữ text, dành cho bài viết dài, kiểu utf-8, cho phép null
  // Cột title: kiểu chữ varchar giới hạn 255 ký tự, kiểu utf-8, cho phép null
  // Cột description: kiểu chữ text, độ dài gần bằng một bài viết nhưng không dài quá, kiểu utf-8, cho phép null
   $ketquamot = mysql_query($sql,$conn);
   if(!$ketquamot){
	  die('Không thể tạo bảng: ' . mysql_error());  
   }else{
	  echo "Tạo tb_nhanvien thành công!"; 
   } 
   // Đóng kết nối database
   mysql_close($conn);
?>

Kết quả:

CREATE TABLE `tb_nhanvien`
Tạo tb_nhanvien thành công!

Những lưu ý khi sử dụng AUTO_INCREMENT trong MySQL

AUTO_INCREMENT giúp MySQL tự tạo giá trị tăng dần cho cột khóa, nhưng cách hoạt động thực tế có một số điểm cần lưu ý. Hiểu rõ các trường hợp này sẽ giúp tránh nhầm lẫn khi thêm, xóa hoặc điều chỉnh dữ liệu trong bảng.

Vì sao giá trị AUTO_INCREMENT có thể bị bỏ số?

Giá trị AUTO_INCREMENT không đảm bảo các số được tạo ra luôn liên tục. Chẳng hạn, nếu một bản ghi được tạo với giá trị 5 nhưng sau đó bị xóa, lần thêm dữ liệu tiếp theo có thể nhận giá trị 6 thay vì quay lại sử dụng 5.

Ngoài thao tác xóa, việc một lần thêm dữ liệu không thành công cũng có thể làm xuất hiện khoảng trống trong dãy số. Đây là hành vi bình thường và không nên xem AUTO_INCREMENT như một bộ đếm bắt buộc phải liên tục.

Cách xử lý khi thay đổi giá trị AUTO_INCREMENT

Trong trường hợp cần đặt lại giá trị bắt đầu cho lần thêm dữ liệu tiếp theo, có thể sử dụng ALTER TABLE. Giá trị mới phải được cân nhắc dựa trên dữ liệu hiện có để tránh tạo ra giá trị trùng với khóa đã tồn tại.

ALTER TABLE users AUTO_INCREMENT = 100;

Sau câu lệnh trên, MySQL sẽ sử dụng giá trị phù hợp từ mốc được thiết lập khi thêm bản ghi mới. Việc điều chỉnh này thường hữu ích khi chuẩn bị dữ liệu mới hoặc cần thay đổi cách đánh số trong một bảng đã có sẵn dữ liệu.

Điều gì xảy ra khi xóa bản ghi có AUTO_INCREMENT?

Khi xóa một bản ghi, giá trị AUTO_INCREMENT của bản ghi đó không mặc nhiên được cấp lại cho bản ghi tiếp theo. Ví dụ, nếu bảng đang có các ID 1, 2, 3 và ID 2 bị xóa thì lần thêm mới thường nhận ID 4.

Do đó, không nên phụ thuộc vào việc các giá trị AUTO_INCREMENT phải liền nhau. Nếu ứng dụng cần một dãy số liên tục để hiển thị hoặc đánh số nghiệp vụ, nên tách yêu cầu đó khỏi cột khóa AUTO_INCREMENT.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Thuộc tính AUTO_INCREMENT trong MySQL.

Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.

  • 0 Bình luận
CEO Bùi Tấn Lực | Founder Web Mới
Bùi Tấn Lực
Tìm hiểu về CEO Bùi Tấn Lực, Founder Web Mới với nhiều năm kinh nghiệm trong lĩnh vực phát triển website, SEO và chia sẻ kiến thức công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Thuộc tính AUTO_INCREMENT trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !