5 Phút cùng SQL — Bài 2: Where Clause (Điều kiện)

DuyNHM
DuyNHM
Nov 5 · 4 min read

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)
Dữ liệu được lưu trữ trong bảng AirPort

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
So sánh dữ liệu null toán tử = không cho ra kết quả.
  • Sử dụng IS NULL
So sánh với 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.

Nguồn: https://www.w3schools.com/sql/sql_top.asp

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
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade