CodeGym /Các khóa học /SQL SELF /Kiểu dữ liệu logic: BOOLEAN

Kiểu dữ liệu logic: BOOLEAN

SQL SELF
Mức độ, Bài học
Có sẵn

Bạn đã làm quen với các kiểu dữ liệu lưu trữ số và text rồi. Giờ là lúc nói về kiểu dữ liệu logic — BOOLEAN. Đây chắc là kiểu dữ liệu "thật thà" nhất, vì nó chỉ trả lời hai câu hỏi: "Có" hay "Không". Đôi khi — "Có thể" (ý là: NULL).

Kiểu dữ liệu logic BOOLEAN lưu giá trị chỉ có thể là:

  • TRUE (đúng);
  • FALSE (sai);
  • NULL (không có giá trị).

Hãy tưởng tượng một cái công tắc: nó có thể bật TRUE, tắt FALSE hoặc ở trạng thái không xác định NULL nếu bóng đèn tự dưng biến mất.

Có thể nói kiểu dữ liệu logic là nền tảng cho việc ra quyết định và logic điều kiện trong SQL. Không có nó thì không thể tạo filter tử tế trong query hoặc đánh dấu trạng thái của cái gì đó.

Ví dụ sử dụng

Kiểu dữ liệu logic được dùng rất nhiều trong database. Đây là vài case thực tế:

Cờ và trạng thái.

Ví dụ, trường is_active có thể cho biết user đang active (TRUE) hay không (FALSE).

SELECT username, is_active
FROM users 
WHERE is_active = TRUE;

Kiểm soát hoàn thành.

Ví dụ, trường is_complete có thể lưu thông tin task đã xong chưa.

SELECT task_name
FROM tasks 
WHERE is_complete = FALSE;

Kiểm tra khả dụng.

Trường is_available có thể phản ánh hàng hóa còn trong kho không.

Cách dùng BOOLEAN trong PostgreSQL?

Kiểu dữ liệu logic trong PostgreSQL gọi đơn giản là BOOLEAN. Giờ mình tạo một bảng và thêm vài cột vào nhé:

  • ID duy nhất của task
  • Tên task
  • Trạng thái logic hoàn thành task

Sau đó mình thêm vài bản ghi vào bảng:

task_id task_name - VARCHAR(255) is_complete - BOOLEAN
1 Viet bao cao false
2 Di cho true
3 Doc sach null

Lấy dữ liệu

Giờ xem cách lấy dữ liệu dựa trên giá trị logic. Ví dụ, để lấy chỉ các task chưa hoàn thành, mình viết:

SELECT task_name
FROM tasks 
WHERE is_complete = FALSE;

Query này sẽ trả về chỉ những task mà is_complete bằng FALSE.

Kết quả:

task_name
Viet bao cao

Đặc điểm khi làm việc với BOOLEAN

Lọc giá trị

Để làm việc với kiểu logic, bạn có thể dùng cú pháp sau:

  • = TRUE — nếu muốn chỉ rõ giá trị là đúng.
  • = FALSE — nếu muốn chọn giá trị sai.
  • IS NULL — nếu muốn chọn bản ghi không có giá trị.

Ví dụ:

SELECT task_name
FROM tasks 
WHERE is_complete IS NULL;

Đơn giản hóa điều kiện

PostgreSQL "thông minh" đến mức nhiều khi bạn không cần ghi rõ = TRUE. Ví dụ:

SELECT task_name
FROM tasks 
WHERE is_complete;

Query này tương đương với WHERE is_complete = TRUE.

Lỗi thường gặp khi làm việc với BOOLEAN

Khi mới làm quen kiểu dữ liệu mới, lỗi là không tránh khỏi. Đây là vài vấn đề phổ biến bạn có thể gặp:

So sánh với NULL. Người mới hay viết is_active = NULL. Nhưng NULL không thể so sánh bằng =. Để kiểm tra giá trị có phải NULL không, dùng IS NULL hoặc IS NOT NULL.

Ghi rõ = TRUE. Đôi khi dev thêm mấy đoạn dư thừa kiểu WHERE is_active = TRUE. Không sai, nhưng có thể rút gọn chỉ cần WHERE is_active thôi.

Dùng string sai cách. Kiểu logic rất chặt chẽ. Bạn không thể ghi is_active = 'TRUE' hay is_active = 'FALSE'. Hãy dùng trực tiếp giá trị TRUE, FALSE hoặc NULL.

Tại sao cần cái này?

Có thể bạn tự hỏi: sao phải làm phức tạp cuộc sống, thêm cái BOOLEAN này làm gì? Sao không dùng số, kiểu 1 là đúng, 0 là sai?

Câu trả lời đơn giản: BOOLEAN làm code và dữ liệu của bạn rõ ràng hơn. Khi ai đó nhìn vào bảng có trường is_active, sẽ hiểu ngay trường này lưu logic (có/không). Điều này giúp schema database dễ đọc hơn và model dữ liệu của bạn cũng dễ hiểu với dev khác.

2
Nhiệm vụ
SQL SELF, mức độ, bài học
Đã khóa
Diễn giải giá trị logic thành văn bản
Diễn giải giá trị logic thành văn bản
2
Nhiệm vụ
SQL SELF, mức độ, bài học
Đã khóa
Lọc theo giá trị boolean
Lọc theo giá trị boolean
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION