SQL - Sử dụng Sequences: Hướng dẫn cho người mới bắt đầu
Xin chào các bạn, những pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các sequences trong SQL. Đừng lo lắng nếu bạn mới làm quen với lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước từng bước. Cuối cùng của hướng dẫn này, bạn sẽ có khả năng tạo và manipulates sequences như một chuyên gia!
Sequences là gì?
Trước khi chúng ta đi sâu vào, hãy hiểu sequences là gì. Hãy tưởng tượng bạn đang đánh số các trang của một cuốn sách. Bạn bắt đầu từ 1, sau đó là 2, 3, và tiếp tục. Đó chính xác là điều mà một sequence làm trong SQL - nó tự động tạo ra một loạt các số. Điều này vô cùng hữu ích khi bạn cần gán các идентификаторы duy nhất cho các hàng trong bảng cơ sở dữ liệu của bạn.
Bây giờ, hãy cùng khám phá cách sequences hoạt động trong các hệ thống cơ sở dữ liệu khác nhau.
Sequences trong MySQL
MySQL, một trong những hệ thống cơ sở dữ liệu phổ biến nhất, xử lý sequences theo một cách khác. Nó không có đối tượng SEQUENCE chuyên dụng như một số cơ sở dữ liệu khác. Thay vào đó, nó sử dụng AUTO_INCREMENT. Hãy cùng xem cách này hoạt động!
Tạo bảng với AUTO_INCREMENT
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
grade INT
);
Trong ví dụ này, chúng ta đang tạo một bảng叫做 students
. Cột id
được đặt là AUTO_INCREMENT
, có nghĩa là MySQL sẽ tự động tạo ra một số duy nhất cho mỗi hàng mới chúng ta chèn vào.
Hãy chèn một số dữ liệu và xem会发生 gì:
INSERT INTO students (name, grade) VALUES ('Alice', 95);
INSERT INTO students (name, grade) VALUES ('Bob', 87);
INSERT INTO students (name, grade) VALUES ('Charlie', 92);
Bây giờ, nếu chúng ta chọn tất cả các hàng từ bảng của chúng ta:
SELECT * FROM students;
Chúng ta sẽ thấy điều này:
id | name | grade |
---|---|---|
1 | Alice | 95 |
2 | Bob | 87 |
3 | Charlie | 92 |
Như bạn có thể thấy, MySQL tự động gán các giá trị id
duy nhất cho mỗi hàng. Điều này giống như có một thư thư viện giúp bạn đánh số sách cho bạn!
Bắt đầu một sequence từ một giá trị cụ thể trong MySQL
Đôi khi, bạn có thể muốn bắt đầu sequence của mình từ một số cụ thể. Có lẽ bạn đang chuyển dữ liệu từ một hệ thống cũ và muốn tiếp tục từ nơi nó dừng lại. MySQL cho phép chúng ta làm điều này!
Thay đổi giá trị AUTO_INCREMENT
ALTER TABLE students AUTO_INCREMENT = 1000;
Lệnh này告诉 MySQL để bắt đầu giá trị AUTO_INCREMENT
từ 1000 cho bảng students
của chúng ta. Hãy chèn một học sinh mới và xem xảy ra gì:
INSERT INTO students (name, grade) VALUES ('David', 88);
SELECT * FROM students;
Bây giờ bảng của chúng ta trông như vậy:
id | name | grade |
---|---|---|
1 | Alice | 95 |
2 | Bob | 87 |
3 | Charlie | 92 |
1000 | David | 88 |
David nhận được id 1000, và bất kỳ học sinh mới nào chúng ta thêm vào sẽ nhận được 1001, 1002, và tiếp tục. Điều này giống như bắt đầu một chương mới trong cuốn sách của chúng ta!
Sequences trong SQL Server
Bây giờ, hãy chuyển đổi và xem cách sequences hoạt động trong SQL Server. Khác với MySQL, SQL Server có một đối tượng SEQUENCE chuyên dụng. Nó giống như có một máy tạo số đặc biệt trong cơ sở dữ liệu của bạn!
Tạo một sequence
Dưới đây là cách chúng ta tạo một sequence trong SQL Server:
CREATE SEQUENCE student_id_seq
AS INT
START WITH 1
INCREMENT BY 1;
Điều này tạo ra một sequence叫做 student_id_seq
bắt đầu từ 1 và tăng lên 1 mỗi lần chúng ta sử dụng nó.
Sử dụng sequence
Để sử dụng sequence mới của chúng ta, chúng ta có thể làm điều gì đó như thế này:
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
grade INT
);
INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Alice', 95);
INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Bob', 87);
Nếu chúng ta chọn từ bảng của chúng ta bây giờ:
SELECT * FROM students;
Chúng ta sẽ thấy:
id | name | grade |
---|---|---|
1 | Alice | 95 |
2 | Bob | 87 |
Câu lệnh NEXT VALUE FOR
告诉 SQL Server để sử dụng giá trị tiếp theo từ sequence của chúng ta.
Chỉnh sửa một sequence
Chúng ta cũng có thể chỉnh sửa sequence của mình sau khi tạo ra nó. Ví dụ, để bắt đầu từ một số khác:
ALTER SEQUENCE student_id_seq
RESTART WITH 1000;
Bây giờ nếu chúng ta chèn một học sinh mới:
INSERT INTO students (id, name, grade)
VALUES (NEXT VALUE FOR student_id_seq, 'Charlie', 92);
SELECT * FROM students;
Chúng ta sẽ thấy:
id | name | grade |
---|---|---|
1 | Alice | 95 |
2 | Bob | 87 |
1000 | Charlie | 92 |
Điều này giống như chúng ta đã nhảy tới một hệ thống đánh số mới!
Kết luận
Và thế là bạn đã có nó, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của các sequences trong SQL, khám phá cách chúng hoạt động trong cả MySQL và SQL Server. Nhớ rằng, sequences giống như trợ lý đánh số cá nhân của bạn, giúp bạn giữ dữ liệu được tổ chức và được xác định duy nhất.
Dù bạn sử dụng AUTO_INCREMENT của MySQL hay đối tượng SEQUENCE của SQL Server, ý tưởng cốt lõi là alike - tự động tạo ra các số duy nhất để làm cho quản lý cơ sở dữ liệu của bạn dễ dàng hơn.
Khi bạn tiếp tục hành trình SQL của mình, bạn sẽ thấy sequences vô cùng hữu ích trong nhiều tình huống khác nhau. Chúng rất tốt cho việc tạo khóa chính, theo dõi đơn hàng, hoặc bất kỳ kịch bản nào khác mà bạn cần một loạt các số duy nhất.
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ẽ tạo ra dữ liệu như một DJ cơ sở dữ liệu có kinh nghiệm! Chúc mừng coding, và mong rằng các truy vấn của bạn luôn trả về kết quả mà bạn mong đợi!
Credits: Image by storyset