Mục tiêu:
- Hiểu được cách thức lọc (điều kiện) kết quả truy vấn.
1. The WHERE Clause and Operator Symbols (Điều kiện lấy là gì?)
Cú pháp
SELECT column, column
FROM table
WHERE conditions;1.1 SQL Symbol Operators

1.2 PostgreSQL data types [Link]
Muốn viết được điều kiện thì cần biết thuộc tính ở cột i có kiểu dữ liệu là gì.
Tại sao?
Vì mỗi kiểu dữ liệu khác nhau sẽ có cách so sánh khác nhau.

Đối với giá trị của các kiểu dữ liệu không phải dạng số (non-numeric) như dates, text thì cần phải nằm trong cặp dấu nháy đơn ‘’
Ví dụ So Sánh BẰNG (EQUAL)

So sánh hơn (>, <, >=, <=)
- AirPort table (Ví dụ sử dụng môi trường Metabase)


1.3 NULL
Dữ liệu NULL là khi nó không chứa giá trị gì. Lưu ý: Null khác với chuỗi rỗng “”.
Khi kiểm tra các thông tin chứa NULL không thể dùng “=” mà phải sử dụng IS NULL
- Sử dụng so sánh bằng với chuỗi rỗng

- Sử dụng IS NULL

1.4 where và order by
where trên, order by dưới nghĩa là lọc dữ liệu ra rồi thì mới đi sắp xếp trên tập kết quả đó.
1.5 Limit
Dùng để giới hạn kết quả trả ra.
HINT: tui thường sử dụng limit khi viết 1 đoạn sql draft để lọc bớt kết quả trả ra như: muốn kiểm tra bảng dữ liệu có chứa các thuộc tính nào (cột), dữ liệu bên trong đang lưu ntn… → như vậy chỉ cần xem trên 1 tập mẫu khoảng 10–50 dòng, không cần xem hết 1000 dòng.

Lưu ý: Không phải hệ csdl nào cũng sử dụng LIMIT, có hệ csdl sử dụng TOP.

2. The WHERE Clause and Operator Words
SQL Word Operators

2.1 Between

2.2 IN và NOT


2.3 LIKE

“The percent sign (%) is used to match any zero or more characters.”
Lưu ý:
Việc sử dụng LIKE có thể làm chậm performance. Đặc biệt nếu sử dụng % ở đầu như ví trụ bên.
3. Multiple Conditions
Sử dụng phép AND (và), OR (hoặc) để truy vấn nhiều điều kiện.


Tổng kết từ khoá tính đến bài 2:
SELECT col1, col2, col3
FROM table
WHERE col1 = 5 AND (col2 LIKE 'ABC' OR col2 IS NULL)
AND col3 IN (1,5,7) or col3 BETWEEN 9 and 20
ORDER BY col1 DESC
LIMIT number