SQL - Tự động tăng

Xin chào các bạn tương lai của các phù thủy cơ sở dữ liệu! Hôm nay, chúng ta sẽ cùng lặn sâu vào thế giới kỳ diệu của Tự động tăng trong SQL. Đừng lo lắng nếu bạn là người mới bắt đầu; đến cuối bài hướng dẫn này, bạn sẽ tự động tăng như một chuyên gia!

SQL - Auto Increment

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

Trước khi chúng ta đi vào chi tiết, hãy hiểu rõ Tự động tăng thực sự là gì. Hãy tưởng tượng bạn là một thư ký thư viện (tôi đã từng là một thư ký thư viện trong thời gian học đại học!), và bạn cần phải gán một số duy nhất cho mỗi cuốn sách mới đến. Liệu có phải là công việc nhàm chán nếu phải nhớ số cuối cùng bạn đã sử dụng và tự động tăng nó mỗi lần? Đó là lúc Tự động tăng đến để cứu giúp!

Trong SQL, Tự động tăng là một trường mà tự động tạo ra một số duy nhất cho mỗi bản ghi mới được chèn vào bảng. Nó giống như có một trợ lý robot giúp đỡ, "Đừng lo lắng, tôi sẽ xử lý việc编号 cho bạn!"

Tự động tăng trong MySQL

Hãy bắt đầu với MySQL, một trong những hệ thống quản lý cơ sở dữ liệu phổ biến nhất. Trong MySQL, chúng ta sử dụng từ khóa AUTO_INCREMENT để tạo một cột tự động tăng.

Tạo bảng với Tự động tăng

Dưới đây là cách bạn có thể tạo một bảng với khóa chính tự động tăng:

CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);

Trong ví dụ này:

  • id là cột tự động tăng của chúng ta
  • INT chỉ định rằng nó là một số nguyên
  • AUTO_INCREMENT告诉 MySQL tự động tăng giá trị này cho mỗi bản ghi mới
  • PRIMARY KEY làm cho cột này trở thành khóa chính của bảng

Chèn bản ghi

Bây giờ, hãy thêm một số sinh viên vào bảng của chúng ta:

INSERT INTO students (name, age) VALUES ('Alice', 20);
INSERT INTO students (name, age) VALUES ('Bob', 22);
INSERT INTO students (name, age) VALUES ('Charlie', 21);

Chú ý rằng chúng ta không xác định id khi chèn bản ghi. MySQL tự động gán và tăng các giá trị này cho chúng ta. Nếu chúng ta chọn tất cả các bản ghi từ bảng này, chúng ta sẽ thấy:

+----+---------+-----+
| id | name    | age |
+----+---------+-----+
|  1 | Alice   |  20 |
|  2 | Bob     |  22 |
|  3 | Charlie |  21 |
+----+---------+-----+

Bắt đầu từ một giá trị cụ thể

Nếu bạn muốn tự động tăng bắt đầu từ một số cụ thể, thế nào? Có lẽ bạn đang合并 hai cơ sở dữ liệu và muốn tránh trùng lặp ID. Không có vấn đề gì! Bạn có thể thiết lập giá trị ban đầu như này:

ALTER TABLE students AUTO_INCREMENT = 1000;

Bây giờ, bản ghi tiếp theo được chèn sẽ có ID là 1000, và nó sẽ tăng từ đó.

Tự động tăng trong SQL Server

Bây giờ, hãy sang SQL Server. Khái niệm tương tự, nhưng cú pháp khác một chút. Trong SQL Server, chúng ta sử dụng từ khóa IDENTITY cho các cột tự động tăng.

Tạo bảng với Identity

Dưới đây là cách bạn tạo một bảng với cột tự động tăng trong SQL Server:

CREATE TABLE employees (
id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);

Trong ví dụ này:

  • IDENTITY(1,1) có nghĩa là bắt đầu từ 1 và tăng lên 1
  • Tham số đầu tiên (1) là giá trị种子 (bắt đầu từ đâu)
  • Tham số thứ hai (1) là giá trị tăng (tăng bao nhiêu)

Chèn bản ghi

Chèn bản ghi tương tự như MySQL:

INSERT INTO employees (name, department) VALUES ('David', 'Sales');
INSERT INTO employees (name, department) VALUES ('Emma', 'Marketing');
INSERT INTO employees (name, department) VALUES ('Frank', 'IT');

Lại một lần nữa, chúng ta không xác định id. SQL Server sẽ lo liệu phần đó cho chúng ta.

Kiểm tra giá trị Identity hiện tại

Trong SQL Server, bạn có thể kiểm tra giá trị identity hiện tại bằng cách sử dụng hàm IDENT_CURRENT:

SELECT IDENT_CURRENT('employees');

Điều này sẽ trả về giá trị identity cuối cùng được tạo ra cho bảng 'employees'.

Đặt lại Identity

Nếu bạn cần đặt lại giá trị identity (hãy cẩn thận với điều này!), bạn có thể sử dụng:

DBCC CHECKIDENT ('employees', RESEED, 1000);

Điều này đặt lại identity thành 1000, vì vậy bản ghi tiếp theo được chèn sẽ có ID là 1000.

Các phương pháp Tự động tăng phổ biến

Dưới đây là bảng tóm tắt các phương pháp tự động tăng phổ biến mà chúng ta đã thảo luận:

Cơ sở dữ liệu Từ khóa Ví dụ
MySQL AUTO_INCREMENT id INT AUTO_INCREMENT PRIMARY KEY
SQL Server IDENTITY id INT IDENTITY(1,1) PRIMARY KEY

Kết luận

Và thế là bạn đã có nó, các bạn! Bạn vừa nâng cấp kỹ năng SQL của mình với siêu năng lực tự động tăng. Nhớ rằng, các cột tự động tăng rất hữu ích cho việc tạo ra các标识符 duy nhất, nhưng hãy sử dụng chúng một cách khôn ngoan. Chúng giống như gia vị trong nấu ăn – cần thiết, nhưng không nên lạm dụng!

Trong những năm dạy học của tôi, tôi đã thấy sinh viên từ trạng thái困惑 đến những khoảnh khắc "aha!" khi họ hiểu được tự động tăng. Nó giống như nhìn thấy một bóng đèn sáng lên, và đột nhiên, thiết kế cơ sở dữ liệu trở nên thú vị hơn!

Tiếp tục thực hành, giữ vững sự tò mò, và trước khi bạn biết, bạn sẽ trở thành người am hiểu nhất về tất cả các thứ liên quan đến SQL trong nhóm của bạn. Chúc các bạn may mắn với mã lập trình, và hy vọng các truy vấn của bạn luôn trả về kết quả bạn mong đợi!

Credits: Image by storyset