Kiểu dữ liệu MySQL 8 UUID
Các mẹo trong tài liệu này áp dụng cho MySQL, MariaDB và Percona. Mặc dù 8. 0 chưa được đưa vào MariaDB hoặc Percona, các Hàm được lưu trữ được mô tả ở đây có chức năng tương tự Show 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ố Ví dụ 1 SELECT UUID() AS UUID_Value ; đầu ra UUID_VALUEfbe516f6-3e39-11eb-b897-0862660ccbd4Ví dụ-2 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 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 UUID là Mã định danh duy nhất toàn cầu được chỉ định bởi RFC 4122 (Đó là Không gian tên URN của Mã định danh duy nhất toàn cầu) và giá trị dài 128 bit. Nó được thiết kế theo cách tạo ra một số duy nhất trên toàn cầu theo không gian và thời gian. Nếu chúng ta gọi hai UUID liên tiếp, chúng ta sẽ nhận được hai giá trị khác nhau và thậm chí chúng được thực hiện trên hai thiết bị riêng biệt không được kết nối GHI CHÚ. Mặc dù UUID() luôn tạo ra các giá trị duy nhất nhưng chúng không thể đoán được hoặc dự đoán được. Nó có nghĩa là nó luôn trả về một số ngẫu nhiênCấu trúc của UUIDUUID trong MySQL trả về một giá trị dài 128 bit. Nó được thể hiện ở định dạng con người có thể đọc được dưới dạng chuỗi UTF8 gồm năm số thập lục phân ở định dạng bên dưới
Sau đây là định dạng chuỗi hợp lệ của các giá trị UUID trong MySQL, là sự sắp xếp gồm 32 chữ số của định dạng thập lục phân cùng với bốn dấu gạch nối (-) Chúng ta có thể tạo các giá trị UUID trong MySQL bằng hàm như sau Hàm trên trả về giá trị UUID phù hợp với UUID phiên bản 1 được mô tả trong RFC 4122. Sau khi thực hiện thành công câu lệnh trên, nó sẽ tạo ra giá trị UUID như sau MySQL UUID so với. AUTO_INCREMENT KHÓA CHÍNHUUID trong MySQL là một giải pháp thay thế tốt cho AUTO_INCREMENT PRIMARY KEY. Sau đây là những ưu điểm của UUID so với AUTO_INCREMENT PRIMARY KEY Thuận lợiSau đây là những ưu điểm của việc sử dụng UUID cho khóa chính
Nhược điểmBên cạnh những ưu điểm, sau đây là những nhược điểm của việc sử dụng UUID cho khóa chính
Giải pháp MySQL UUIDChúng ta có thể khắc phục những sự cố này trong MySQL bằng cách sử dụng các chức năng được cung cấp bên dưới. Các chức năng này cho phép chúng tôi lưu trữ các giá trị UUID ở định dạng nhỏ gọn (BINARY) và hiển thị chúng ở định dạng con người có thể đọc được (VARCHAR). Tên của các chức năng là
GHI CHÚ. Cần lưu ý rằng các chức năng này chỉ khả dụng trong phiên bản MySQL 8. 0 trở lênHàm UUID_TO_BIN() được sử dụng để chuyển đổi các giá trị UUID từ định dạng mà con người có thể đọc được thành định dạng nhỏ gọn để lưu trữ trong cơ sở dữ liệu Hàm BIN_TO_UUID() được sử dụng để chuyển đổi UUID từ định dạng nhỏ gọn sang định dạng mà con người có thể đọc được để hiển thị Hàm IS_UUID() được sử dụng để xác thực định dạng chuỗi của UUID. Nó trả về 1 khi đối số hợp lệ và trả về 0 đối với đối số không hợp lệ. Nếu đối số là NULL, nó sẽ trả về NULL Ví dụ UUID của MySQLHãy cho chúng tôi hiểu cách sử dụng UUID với sự trợ giúp của một ví dụ. Đầu tiên, chúng ta sẽ tạo một bảng mới có tên là employee bằng cách sử dụng câu lệnh bên dưới Tiếp theo, chúng ta cần chèn các giá trị vào bảng. Ngoài ra, nếu chúng ta muốn thêm các giá trị UUID vào cột emp_id, chúng ta phải sử dụng các hàm UUID() và UUID_TO_BIN() như sau Bây giờ, hãy thực thi câu lệnh CHỌN để xác minh bản ghi đã chèn Cuối cùng, chúng tôi sẽ truy vấn dữ liệu từ cột UUID bằng cách sử dụng hàm BIN_TO_UUID() để chuyển đổi định dạng nhị phân thành định dạng mà con người có thể đọc được. Xem tuyên bố dưới đây Ta sẽ được kết quả như sau MySQL UUID so với UUID (ngắn)UUID() và UUID(ngắn) đều là các chức năng khác nhau trong MySQL. Sự khác biệt cơ bản giữa chúng được thảo luận trong biểu đồ so sánh dưới đây UUID trong MySQL là kiểu dữ liệu nào?Trong MySQL, giá trị UUID là một 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ẽ là . Ở đâ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.
Kiểu dữ liệu nào là UUID?Kiểu dữ liệu UUID được coi là kiểu con của kiểu dữ liệu CHUỖI , bởi vì các giá trị UUID được hiển thị ở định dạng văn bản chuẩn của chúng và ở dạng .
Làm cách nào để lưu trữ UUID trong MySQL?Trong MySQL, bạn có thể lưu trữ các giá trị UUID ở định dạng nhỏ gọn ( BINARY ) và hiển thị chúng ở định dạng con người có thể đọc được ( VARCHAR ) với sự trợ giúp của các chức năng sau. UUID_TO_BIN . BIN_TO_UUID . IS_UUID .
MySQL có thể sử dụng UUID làm KHÓA CHÍNH không?Sau đây là những ưu điểm của việc sử dụng UUID cho khóa chính . Các giá trị UUID trong MySQL là duy nhất trên các bảng, cơ sở dữ liệu và máy chủ. Nó cho phép chúng tôi hợp nhất các hàng từ cơ sở dữ liệu phân tán/khác nhau trên các máy chủ. Các giá trị UUID không cung cấp thông tin về dữ liệu của chúng tôi, điều đó có nghĩa là rất khó đoán. |