Dãy số (Sequences) trong MariaDB
Từ phiên bản MariaDB 10.0.3, một engine mới được giới thiệu với tên gọi sequence. Nó cho phép tạo ra các dãy số nguyên tự động theo nhu cầu, hoạt động một lần rồi kết thúc. Các dãy số này có thể tăng hoặc giảm dần và được xác định bởi các giá trị bắt đầu, kết thúc và bước nhảy.
Tuy nhiên, dãy số sequence chỉ có thể sử dụng trong truy vấn ban đầu, không được lưu vào ổ đĩa mà chỉ tồn tại dưới dạng ảo. Bảng sequence có thể được chuyển đổi thành bảng tiêu chuẩn qua lệnh ALTER
. Khi xóa bảng chuyển đổi, bảng sequence ban đầu vẫn tồn tại. Sequence không thể tạo ra các số âm hoặc tự động quay vòng khi đạt giá trị tối thiểu/tối đa.
Cài đặt Engine Sequence trong MariaDB
Để sử dụng sequence, bạn cần cài đặt plugin sequence engine mà MariaDB cung cấp. Plugin này không được tích hợp sẵn trong hệ thống mà cần được kích hoạt qua lệnh:
INSTALL SONAME "ha_sequence";
Sau khi cài đặt, hãy kiểm tra bằng lệnh:
Bài viết này được đăng tại [free tuts .net]
SHOW ENGINES\G
Lưu ý:
- Sau khi cài đặt engine sequence, bạn không thể tạo bảng tiêu chuẩn có tên theo cú pháp sequence, nhưng vẫn có thể tạo bảng tạm (temporary table).
Tạo Sequence
Có hai cách để tạo sequence trong MariaDB:
- Tạo bảng và sử dụng thuộc tính AUTO_INCREMENT để định nghĩa cột tăng tự động.
- Sử dụng câu lệnh truy vấn sequence để tạo dãy số. Phương pháp này thường được ưu tiên hơn vì tính linh hoạt cao.
Cú pháp truy vấn sequence sử dụng định dạng:
seq_[FROM]_to_[TO] hoặc seq_[FROM]_to_[TO]_step_STEP.
Ví dụ: Tạo một dãy số từ 77 đến 99:
SELECT * FROM seq_77_to_99;
Ứng dụng của Sequence trong MariaDB
Tìm giá trị bị thiếu trong cột để tránh các lỗi liên quan:
SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq = t.col WHERE t.col IS NULL;
Xây dựng tổ hợp giá trị:
SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY x1.seq, x2.seq;
Tìm bội số của một số:
SELECT seq FROM seq_3_to_100_step_4;
Xây dựng dãy ngày tháng để ứng dụng trong các hệ thống như đặt lịch.
Xây dựng dãy thời gian để phục vụ các bài toán liên quan.
Kết bài
Sequence trong MariaDB là một công cụ hữu ích, linh hoạt, và mạnh mẽ để hỗ trợ các truy vấn phức tạp hoặc yêu cầu tạo dãy số liên tiếp. Việc sử dụng sequence giúp tối ưu hóa quy trình quản lý dữ liệu và triển khai các giải pháp sáng tạo trong các ứng dụng thực tế. Tuy nhiên, bạn cần chú ý các hạn chế như dãy không được lưu trữ vĩnh viễn và không hỗ trợ số âm để sử dụng hiệu quả hơn.