MySQL - BIT: Hiểu về Kiểu Dữ Liệu Binary

Xin chào các bạnfuture database wizards! Hôm nay, chúng ta sẽ cùng khám phá thế giới kỳ diệu của kiểu dữ liệu BIT trong MySQL. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - tôi sẽ hướng dẫn bạn từng bước trong hành trình binary này, giống như tôi đã làm cho hàng trăm sinh viên trong những năm dạy học của mình. Hãy c rolled up our sleeves và bắt đầu nhé!

MySQL - BIT

Kiểu Dữ Liệu BIT trong MySQL Là Gì?

Trước khi chúng ta đi vào chi tiết, hãy hiểu qua về kiểu dữ liệu BIT. Hãy tưởng tượng bạn có một công tắc đèn - nó chỉ có thể ở hai trạng thái: bật hoặc tắt. Đó chính là điều mà kiểu dữ liệu BIT đại diện trong MySQL - một giá trị nhị phân có thể lưu trữ hoặc 0 hoặc 1.

Các Tính Năng Chính của BIT

  1. Nó lưu trữ dữ liệu nhị phân
  2. Có thể giữ 1 đến 64 bit
  3. Thích hợp cho việc lưu trữ các giá trị boolean hoặc các phép toán bitwise

Bây giờ, hãy cùng xem chúng ta có thể sử dụng nó như thế nào trong thực tế!

Tạo Bảng với Cột BIT

Hãy bắt đầu bằng cách tạo một bảng đơn giản sử dụng kiểu dữ liệu BIT. Chúng ta sẽ tạo một bảng叫做 light_switches để theo dõi trạng thái của đèn trong một ngôi nhà thông minh.

CREATE TABLE light_switches (
id INT AUTO_INCREMENT PRIMARY KEY,
room VARCHAR(50),
is_on BIT(1)
);

Trong ví dụ này, is_on là cột BIT của chúng ta. (1) chỉ định rằng chúng ta đang sử dụng 1 bit để lưu trữ dữ liệu, điều này hoàn hảo cho một trạng thái đơn giản bật/tắt.

Chèn Dữ Liệu vào Cột BIT

Bây giờ chúng ta có bảng của mình, hãy thêm một chút dữ liệu:

INSERT INTO light_switches (room, is_on) VALUES
('Living Room', b'1'),
('Kitchen', b'0'),
('Bedroom', b'1'),
('Bathroom', b'0');

Chú ý đến cú pháp b'1'b'0'. Prefix 'b' cho biết rằng chúng ta đang chèn một giá trị nhị phân.

Truy Vấn Dữ Liệu BIT

Hãy lấy dữ liệu của chúng ta và xem nó trông như thế nào:

SELECT * FROM light_switches;

Bạn có thể thấy điều gì đó như thế này:

+----+-------------+-------+
| id | room        | is_on |
+----+-------------+-------+
|  1 | Living Room |    1  |
|  2 | Kitchen     |    0  |
|  3 | Bedroom     |    1  |
|  4 | Bathroom    |    0  |
+----+-------------+-------+

Làm việc với các Giá trị BIT

Chuyển đổi BIT thành Số Nguyên

Đôi khi, bạn có thể muốn chuyển đổi giá trị BIT của bạn thành một số nguyên dễ đọc hơn. Đây là cách để làm điều đó:

SELECT room, CAST(is_on AS UNSIGNED) AS light_status
FROM light_switches;

Truy vấn này sẽ cho bạn:

+-------------+--------------+
| room        | light_status |
+-------------+--------------+
| Living Room |            1 |
| Kitchen     |            0 |
| Bedroom     |            1 |
| Bathroom    |            0 |
+-------------+--------------+

Sử dụng BIT trong Điều Kiện

Bạn có thể sử dụng các giá trị BIT trong các mệnh đề WHERE như bất kỳ kiểu dữ liệu nào khác:

SELECT room FROM light_switches WHERE is_on = b'1';

Truy vấn này sẽ hiển thị tất cả các phòng mà đèn đang bật.

Các Trường BIT Lớn Hơn 1 Bit

Nhớ lại khi tôi nói rằng BIT có thể lưu trữ đến 64 bit? Hãy cùng xem một ví dụ về điều đó. Hãy tưởng tượng chúng ta đang tạo một bảng để lưu trữ quyền người dùng:

CREATE TABLE user_permissions (
user_id INT PRIMARY KEY,
permissions BIT(8)
);

Ở đây, chúng ta sử dụng 8 bit để lưu trữ các quyền khác nhau. Mỗi bit có thể đại diện cho một quyền:

  • Bit 1: Đọc
  • Bit 2: Ghi
  • Bit 3: Xóa
  • Bit 4: Quản trị
  • ... và tiếp tục

Hãy chèn một người dùng với quyền đọc và ghi:

INSERT INTO user_permissions VALUES (1, b'00000011');

Để kiểm tra xem một người dùng có quyền cụ thể nào không, chúng ta có thể sử dụng các phép toán bitwise:

SELECT user_id,
permissions & b'00000001' AS has_read,
permissions & b'00000010' AS has_write
FROM user_permissions
WHERE user_id = 1;

Truy vấn này kiểm tra xem người dùng có quyền đọc và ghi hay không bằng cách sử dụng phép toán bitwise AND.

Các Phép Toán BIT Thường Gặp

Dưới đây là bảng các phép toán BIT bạn có thể thấy hữu ích:

Phép Toán Mô Tả Ví Dụ
& Bitwise AND SELECT 5 & 1; (trả về 1)
| Bitwise OR SELECT 5 | 2; (trả về 7)
^ Bitwise XOR SELECT 5 ^ 1; (trả về 4)
<< Left shift SELECT 1 << 2; (trả về 4)
>> Right shift SELECT 4 >> 1; (trả về 2)
~ Bitwise NOT SELECT ~5; (trả về -6)

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 BIT trong MySQL, từ các công tắc bật/tắt đơn giản đến các hệ thống quyền phức tạp hơn. Nhớ rằng, kiểu dữ liệu BIT có thể nhỏ, nhưng nó rất mạnh mẽ khi được sử dụng đúng cách.

Trong những năm dạy học của mình, tôi đã thấy rằng sinh viên thường đánh giá thấp sự hữu ích của các trường BIT. Nhưng tin tôi đi, một khi bạn bắt đầu sử dụng chúng, bạn sẽ tìm thấy rất nhiều ứng dụng sáng tạo. Nó giống như có một cây kéo đa năng trong bộ công cụ cơ sở dữ liệu của bạn!

Thực hành với các ví dụ này, thử nghiệm trên chính bạn, và trước khi bạn biết điều gì, bạn sẽ manipulating bits như một chuyên gia. Và biết đâu, có thể một ngày nào đó bạn sẽ dạy điều này cho người khác, chia sẻ BIT của bạn của sự khôn ngoan (pun hoàn toàn có ý)!

Tiếp tục lập mã, 保持好奇心, và nhớ rằng - trong thế giới của BITs, bạn luôn chỉ cách một flip để thành công!

Credits: Image by storyset