Hàm này trong MySQL được sử dụng để trả về Mã định danh duy nhất toàn cầu [UUID] được tạo theo RFC 4122, “Không gian tên URN Mã định danh duy nhất toàn cầu [UUID]”. Nó được thiết kế như một số duy nhất trên toàn cầu. Hai giá trị UUID dự kiến sẽ khác biệt, ngay cả khi chúng được tạo trên hai máy chủ độc lập. Trong MySQL, giá trị UUID là số 128 bit được biểu thị dưới dạng chuỗi utf8 và định dạng theo số thập lục phân sẽ như sau
Thí dụ -
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
Ở đây, ba số đầu tiên được tạo từ các phần thấp, trung bình và cao của dấu thời gian. Như bạn có thể thấy rằng ở định dạng trên, mã chữ số vị trí thứ tư sẽ duy trì tính duy nhất theo thời gian và mã vị trí thứ năm sẽ cung cấp tính duy nhất về không gian và đó là số nút IEEE 802
cú pháp
UUID[]
Tham số.
Phương thức này không có bất kỳ tham số nào.
Trả về.
Nó trả về một số Mã định danh duy nhất toàn cầu.
Ví dụ-1.
Tạo giá trị Mã định danh duy nhất toàn cầu với sự trợ giúp của Hàm UUID.
SELECT UUID[] AS UUID_Value ;
đầu ra
UUID_VALUEfbe516f6-3e39-11eb-b897-0862660ccbd4Ví dụ-2.
Bất cứ khi nào chúng ta sử dụng hàm UUID, chúng ta sẽ nhận được giá trị Mã định danh duy nhất toàn cầu khác nhau. Hãy kiểm tra nó.
SELECT UUID[] AS UUID_VALUE1, UUID[] AS UUID_VALUE2, UUID[] AS UUID_VALUE3 ;
đầu ra
UUID_VALUE1UUID_VALUE2UUID_VALUE3e762634c-3e41-11eb-b897-0862660ccbd4e7626367-3e41-11eb-b897-0862660ccbd4e7626368-3e41-11eb-b897-0862660ccbd4Ví dụ-3.
Trong ví dụ này, chúng tôi sẽ sử dụng UUID làm khóa chính trong bảng. Để minh họa, hãy tạo một bảng có tên OrderDetails.
CREATE TABLE OrderDetails[ OrderId BINARY[16] PRIMARY KEY, ProductName VARCHAR[100] NOT NULL, Price DECIMAL[10, 2] NOT NULL, ExpectedDelivery DATE NOT NULL ];
Bây giờ, chèn dữ liệu vào bảng OrderDetails. Ở đây, chúng ta sẽ sử dụng hàm UUID và UUID_TO_BIN[] để gán giá trị trong cột OrderId
Tóm lược. trong hướng dẫn này, bạn sẽ học các kỹ thuật khác nhau để chọn các bản ghi ngẫu nhiên từ một bảng cơ sở dữ liệu trong MySQL
Đôi khi, bạn phải chọn các bản ghi ngẫu nhiên từ một bảng, chẳng hạn
- Chọn một số bài đăng ngẫu nhiên trong blog và hiển thị chúng trong thanh bên
- Chọn một trích dẫn ngẫu nhiên để hiển thị tiện ích "trích dẫn trong ngày"
- Chọn ảnh ngẫu nhiên trong thư viện và sử dụng làm ảnh nổi bật
MySQL chọn các bản ghi ngẫu nhiên bằng cách sử dụng SELECT UUID[]
AS UUID_Value ;
2
MySQL không có bất kỳ câu lệnh tích hợp nào để chọn các hàng ngẫu nhiên từ một bảng. Để thực hiện điều này, bạn sử dụng hàm
SELECT UUID[] AS UUID_Value ;3
Truy vấn sau đây chọn một hàng ngẫu nhiên từ bảng cơ sở dữ liệu
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT 1;
Hãy xem xét truy vấn chi tiết hơn
- Hàm
SELECT UUID[] AS UUID_Value ;
3 tạo một giá trị ngẫu nhiên cho mỗi hàng trong bảng - Mệnh đề
0 sắp xếp tất cả các hàng trong bảng theo số ngẫu nhiên do hàm
Code language: SQL [Structured Query Language] [sql]SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
SELECT UUID[] AS UUID_Value ;
3 tạo ra - Mệnh đề
2 chọn hàng đầu tiên trong tập kết quả được sắp xếp ngẫu nhiên
Code language: SQL [Structured Query Language] [sql]SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
Nếu bạn muốn chọn ngẫu nhiên 63 bản ghi từ một bảng cơ sở dữ liệu, bạn cần thay đổi mệnh đề
4 như sau
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
Code language: SQL [Structured Query Language] [sql]
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
Xem bảng
5 sau đây từ cơ sở dữ liệu mẫuCode language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
Ví dụ sau chọn năm khách hàng ngẫu nhiên từ bảng
5Code language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
UUID[]3
Dùng thử
Lưu ý rằng bạn có thể nhận được một tập hợp kết quả khác vì nó là ngẫu nhiên
Kỹ thuật này hoạt động rất tốt với một chiếc bàn nhỏ. Tuy nhiên, nó sẽ chậm đối với bảng lớn vì MySQL phải sắp xếp toàn bộ bảng để chọn ngẫu nhiên
Tốc độ của truy vấn cũng phụ thuộc vào số hàng trong bảng. Bảng càng có nhiều hàng thì càng mất nhiều thời gian để tạo số ngẫu nhiên cho mỗi hàng
MySQL chọn các bản ghi ngẫu nhiên bằng mệnh đề SELECT * FROM table_name
ORDER BY RAND[]
LIMIT N;
Code language: SQL [Structured Query Language] [sql]
7
SELECT * FROM table_name
ORDER BY RAND[]
LIMIT N;
Kỹ thuật này yêu cầu bảng có trường khóa chính tăng tự động và không có khoảng trống trong chuỗi
Truy vấn sau tạo một số ngẫu nhiên dựa trên cột khóa chính
UUID[]5
Chúng ta có thể tham gia bảng với tập kết quả được trả về bởi truy vấn trên như sau
UUID[]6
Sử dụng kỹ thuật này, bạn phải thực hiện truy vấn nhiều lần để lấy nhiều hơn một hàng ngẫu nhiên vì nếu bạn tăng giới hạn, truy vấn sẽ chỉ cung cấp cho bạn các hàng liên tiếp bắt đầu từ hàng được chọn ngẫu nhiên
Truy vấn sau đây trả về một khách hàng ngẫu nhiên từ bảng
5Code language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
UUID[]8
Dùng thử
MySQL chọn các bản ghi ngẫu nhiên bằng cách sử dụng các biến
Trong trường hợp, bảng có cột
9 với các giá trị nằm trong phạm viCode language: SQL [Structured Query Language] [sql]
SELECT * FROM table_name ORDER BY RAND[] LIMIT N;
UUID[]30 và không có khoảng cách nào trong phạm vi, bạn có thể sử dụng kỹ thuật sau
- Đầu tiên, chọn số ngẫu nhiên trong phạm vi 1. N
- Thứ hai, chọn các bản ghi dựa trên các số ngẫu nhiên
Câu lệnh sau đây giúp bạn thực hiện điều này
SELECT UUID[] AS UUID_Value ;1
Lưu ý rằng các biến do người dùng xác định là dành riêng cho kết nối. Điều đó có nghĩa là kỹ thuật này không thể được sử dụng với tổng hợp kết nối. Ngoài ra, khóa chính phải là kiểu số nguyên và các giá trị của nó phải theo thứ tự không có khoảng trống