Bài viết gần đây
-
Quản lý CRM toàn diện: Từ lead đến học viên trung thành
Tháng 8 16, 2026 -
Auto Trading MQL5: Xây Dựng Bot Giao Dịch Tự Động Trên MetaTrader 5
Tháng 8 15, 2026
| Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) tr…
Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 23:55 | 26 lượt xem
Ngày 6: Sử dụng các toán tử logic (AND, OR, NOT) trong SQL Server
Mục tiêu buổi học:
- Hiểu cách sử dụng các toán tử logic trong điều kiện WHERE.
- Kết hợp nhiều điều kiện với AND, OR, NOT.
- Tránh những lỗi phổ biến khi dùng toán tử logic.
1. Giới thiệu toán tử logic
Khi viết truy vấn SQL, chúng ta thường cần lọc dữ liệu theo nhiều điều kiện. SQL Server cung cấp 3 toán tử logic quan trọng:
| Toán tử | Ý nghĩa | Ví dụ |
|---|---|---|
| AND | Chỉ chọn các dòng thỏa mãn tất cả điều kiện | Chọn nhân viên có lương > 5000 và chức vụ là “Manager” |
| OR | Chọn các dòng thỏa mãn ít nhất một điều kiện | Chọn nhân viên có lương > 5000 hoặc có chức vụ là “Manager” |
| NOT | Lọc bỏ những dòng thỏa mãn điều kiện | Chọn tất cả nhân viên ngoại trừ những người có chức vụ là “Intern” |
2. Ví dụ minh họa
🔹 Sử dụng AND
Giả sử bạn có bảng Employees với các cột EmployeeID, FirstName, Salary, JobTitle.
Bạn muốn tìm những nhân viên có lương trên 5000 và giữ chức vụ Manager:
SELECT * FROM Employees
WHERE Salary > 5000 AND JobTitle = 'Manager';
Giải thích: Câu lệnh trên chỉ trả về các nhân viên có cả hai điều kiện đúng.
Sử dụng OR
Bây giờ, bạn muốn tìm những nhân viên có lương trên 5000 hoặc giữ chức vụ Manager:
SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager';
Giải thích: Chỉ cần một trong hai điều kiện đúng là bản ghi sẽ được chọn.
Sử dụng NOT
Giả sử bạn muốn tìm tất cả nhân viên ngoại trừ những người có chức vụ “Intern”:
SELECT * FROM Employees
WHERE NOT JobTitle = 'Intern';
Giải thích: SQL Server sẽ lọc tất cả các bản ghi ngoại trừ những người có JobTitle là “Intern”.
Kết hợp AND, OR, NOT Bạn có thể kết hợp nhiều toán tử logic trong cùng một câu truy vấn. Ví dụ: Tìm những nhân viên có lương trên 5000 hoặc là Manager, nhưng không phải là Intern:
SELECT * FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager') AND NOT JobTitle = 'Intern';
Lưu ý: Dùng dấu ngoặc tròn ()` để kiểm soát thứ tự ưu tiên của điều kiện.
3. Những lỗi thường gặp khi sử dụng toán tử logic Quên dấu ngoặc làm thay đổi thứ tự ưu tiên
SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager' AND NOT JobTitle = 'Intern';
Sai: SQL sẽ ưu tiên thực hiện AND trước OR, có thể gây sai kết quả.
Sửa đúng: Dùng dấu ngoặc để đảm bảo điều kiện chạy đúng.
4. Bài tập thực hành
Tìm nhân viên có lương trên 7000 và làm ở bộ phận “IT”.
Tìm nhân viên có chức vụ là “Sales” hoặc có lương trên 6000.
Tìm tất cả nhân viên ngoại trừ những người có chức vụ “HR”.
Gợi ý đáp án:
-- Bài 1
SELECT * FROM Employees
WHERE Salary > 7000 AND Department = 'IT';
-- Bài 2
SELECT * FROM Employees
WHERE JobTitle = 'Sales' OR Salary > 6000;
-- Bài 3
SELECT * FROM Employees
WHERE NOT JobTitle = 'HR';
Chúc bạn học tốt! Ngày mai, chúng ta sẽ học cách sắp xếp dữ liệu với ORDER BY. Hẹn gặp lại ở Ngày 7 nhé! 🎯

Mở rộng — Bảng tổng hợp ba toán tử logic AND, OR, NOT
Ba toán tử logic là công cụ nền tảng để lọc dữ liệu trong mọi truy vấn SQL. Hiểu rõ bảng chân trị giúp bạn viết điều kiện WHERE chính xác ngay từ đầu.
| Toán tử | Ý nghĩa | Kết quả khi đúng |
|---|---|---|
| AND | Tất cả điều kiện phải đúng | Chọn bản ghi |
| OR | Ít nhất một điều kiện đúng | Chọn bản ghi |
| NOT | Phủ định điều kiện | Loại bỏ bản ghi khớp |
Bảng chân trị AND
| Điều kiện 1 | Điều kiện 2 | Kết quả |
|---|---|---|
| Đúng | Đúng | Đúng |
| Đúng | Sai | Sai |
| Sai | Đúng | Sai |
| Sai | Sai | Sai |
Bảng chân trị OR
| Điều kiện 1 | Điều kiện 2 | Kết quả |
|---|---|---|
| Đúng | Đúng | Đúng |
| Đúng | Sai | Đúng |
| Sai | Đúng | Đúng |
| Sai | Sai | Sai |
Mẹo ghi nhớ: AND khắt khe (cả hai đều đúng), OR dễ tính (một đúng là đủ), NOT đảo ngược.
Mở rộng — Ví dụ kết hợp nhiều điều kiện trong SQL
Trong thực tế, bạn hiếm khi dùng một điều kiện đơn lẻ. Việc kết hợp AND, OR, NOT đúng thứ tự quyết định độ chính xác của truy vấn.
-- [VÍ DỤ KẾT HỢP - SQL]
-- Tìm nhân viên lương cao HOẶC là Manager, nhưng không phải Intern
SELECT FirstName, Salary, JobTitle
FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager')
AND NOT JobTitle = 'Intern';
Thứ tự ưu tiên toán tử
SQL Server ưu tiên: NOT trước, rồi AND, cuối cùng là OR. Khi không chắc, hãy dùng dấu ngoặc để rõ ràng — tránh lỗi logic khó phát hiện.
Mở rộng — Sử dụng NOT với IN và LIKE
Toán tử NOT thường kết hợp với IN, LIKE, BETWEEN để loại bỏ một nhóm dữ liệu cụ thể.
-- [NOT IN / NOT LIKE - SQL]
-- Nhân viên KHÔNG thuộc phòng HR hoặc IT
SELECT FirstName, Department
FROM Employees
WHERE Department NOT IN ('HR', 'IT');
-- Nhân viên có email KHÔNG phải công ty
SELECT FirstName, Email
FROM Employees
WHERE Email NOT LIKE '%@company.com';
Bảng các cách dùng NOT phổ biến
| Cú pháp | Ý nghĩa |
|---|---|
| NOT (điều kiện) | Phủ định điều kiện |
| NOT IN (danh sách) | Không thuộc danh sách |
| NOT LIKE ‘mẫu’ | Không khớp mẫu |
| NOT BETWEEN a AND b | Ngoài khoảng a–b |
| IS NOT NULL | Có giá trị |
Mở rộng — Lỗi phổ biến khi dùng toán tử logic
Lỗi 1: Quên ngoặc khi kết hợp AND/OR
Do ưu tiên AND trước OR, truy vấn có thể cho kết quả sai nếu không dùng ngoặc. Luôn đặt ngoặc cho nhóm điều kiện OR.
-- [SAI VS ĐÚNG - SQL]
-- SAI: hiểu thành Salary>5000 AND (Job='M' OR Dep='IT')
SELECT * FROM Employees
WHERE Salary > 5000 OR JobTitle = 'Manager' AND Department = 'IT';
-- ĐÚNG: nhóm điều kiện OR trong ngoặc
SELECT * FROM Employees
WHERE (Salary > 5000 OR JobTitle = 'Manager')
AND Department = 'IT';
Lỗi 2: NOT IN với NULL
Nếu danh sách chứa NULL, NOT IN không trả về kết quả như mong đợi. Dùng NOT EXISTS hoặc lọc NULL trước.
Lỗi 3: So sánh NULL sai
NULL không bằng bất kỳ giá trị nào. Phải dùng IS NULL / IS NOT NULL, không dùng dấu = hoặc !=.
Mở rộng — Ứng dụng toán tử logic trong phân tích dữ liệu giao dịch
Kiến thức SQL không chỉ dùng cho công việc văn phòng mà còn hữu ích khi phân tích dữ liệu giao dịch: lọc giao dịch thắng/thua, tìm điều kiện thị trường.
-- [PHÂN TÍCH GIAO DỊCH - SQL]
-- Giao dịch thắng lớn HOẶC giữ lâu, nhưng không phải đòn bẩy cao
SELECT trade_id, symbol, profit, leverage
FROM trades
WHERE (profit > 500 OR holding_minutes > 120)
AND NOT leverage > 50;
Bảng ví dụ ứng dụng thực tế
| Bài toán | Toán tử |
|---|---|
| Lọc giao dịch thắng trên 100$ và volume lớn | AND |
| Tìm giao dịch BTC hoặc ETH | OR / IN |
| Loại bỏ giao dịch test | NOT LIKE ‘%test%’ |
Kết hợp SQL + Python để phân tích sâu
# [SQL + PYTHON - PYTHON]
import sqlite3
conn = sqlite3.connect("trades.db")
cur = conn.cursor()
# dùng chuỗi nối một dòng để tránh lỗi xuống dòng
query = ("SELECT symbol, COUNT(*) as total, SUM(profit) as net "
"FROM trades "
"WHERE (profit > 0 AND volume >= 0.1) "
"OR (strategy = 'grid' AND NOT leverage > 20) "
"GROUP BY symbol")
cur.execute(query)
for row in cur.fetchall():
print(row)
Ghi chú: dùng câu lệnh SQL một dòng hoặc concatenated để tránh lỗi — trong thực tế bạn có thể viết đa dòng với thư viện phù hợp.
Mở rộng — Câu hỏi thường gặp về toán tử logic SQL
AND và OR dùng thế nào cho đúng?
Dùng AND khi mọi điều kiện bắt buộc, dùng OR khi chỉ cần một điều kiện. Luôn đặt ngoặc cho nhóm OR khi kết hợp.
Tại sao NOT IN không trả về kết quả với NULL?
Vì so sánh với NULL cho kết quả UNKNOWN, không phải TRUE. Lọc NULL trước hoặc dùng NOT EXISTS.
Có thể dùng nhiều AND/OR trong một câu không?
Có, nhưng hãy nhóm bằng ngoặc để rõ ràng và tránh sai logic do thứ tự ưu tiên.
Bảng tóm tắt thứ tự ưu tiên
| Thứ tự | Toán tử |
|---|---|
| 1 | So sánh (=, >, <, LIKE, IN) |
| 2 | NOT |
| 3 | AND |
| 4 | OR |
Kết luận
AND, OR, NOT là nền tảng của mọi truy vấn SQL lọc dữ liệu. Nắm vững bảng chân trị, thứ tự ưu tiên và các cạm bẫy NULL sẽ giúp bạn viết truy vấn chính xác và hiệu quả trong công việc thực tế.
Mở rộng — Bài tập thực hành toán tử logic
Bài 1: Lọc dữ liệu với AND
Viết truy vấn lấy nhân viên lương trên 5000 VÀ thuộc phòng Sales.
-- [GIẢI BÀI 1 - SQL]
SELECT FirstName, Salary, Department
FROM Employees
WHERE Salary > 5000 AND Department = 'Sales';
Bài 2: Lọc dữ liệu với OR
Lấy nhân viên thuộc phòng IT HOẶC Marketing.
-- [GIẢI BÀI 2 - SQL]
SELECT FirstName, Department
FROM Employees
WHERE Department = 'IT' OR Department = 'Marketing';
Bài 3: Kết hợp NOT
Lấy nhân viên không thuộc phòng HR, lương trên 4000.
-- [GIẢI BÀI 3 - SQL]
SELECT FirstName, Salary
FROM Employees
WHERE Salary > 4000 AND NOT Department = 'HR';
Bài 4: Thử thách tổng hợp
Lấy nhân viên (lương trên 6000 HOẶC là Manager) VÀ không phải Intern.
-- [GIẢI BÀI 4 - SQL]
SELECT FirstName, Salary, JobTitle
FROM Employees
WHERE (Salary > 6000 OR JobTitle = 'Manager')
AND NOT JobTitle = 'Intern';
Hoàn thành cả 4 bài, bạn đã vững kiến thức toán tử logic để áp dụng vào mọi truy vấn SQL thực tế.
Mở rộng — Tổng kết Ngày 6 và ứng dụng vào thực tế
Ngày 6 bạn đã học ba toán tử logic nền tảng. Hãy tổng kết lại những gì đã nắm và cách áp dụng vào công việc thực tế (Data Analyst, Backend, Trading).
Bảng tóm tắt kiến thức
| Toán tử | Cách dùng | Ví dụ |
|---|---|---|
| AND | Mọi điều kiện đúng | Salary > 5000 AND Dep = ‘Sales’ |
| OR | Một điều kiện đúng | Dep = ‘IT’ OR Dep = ‘Marketing’ |
| NOT | Phủ định | NOT JobTitle = ‘Intern’ |
Ứng dụng trong công việc
- Data Analyst: Lọc dữ liệu kinh doanh theo nhiều điều kiện.
- Backend: Truy vấn cơ sở dữ liệu cho API.
- Trading: Phân tích lịch sử giao dịch, tìm mẫu.
Bài tập về nhà
- Viết 5 truy vấn dùng AND, OR, NOT trên bảng dữ liệu tự tạo.
- Thử kết hợp 3 toán tử trong một câu và kiểm tra kết quả.
- Ôn lại thứ tự ưu tiên và cách dùng ngoặc.
Nắm vững toán tử logic là nền tảng để bạn viết các truy vấn SQL phức tạp và chính xác hơn trong các ngày tiếp theo.
Mở rộng — Bảng tổng hợp các toán tử logic và ứng dụng
Bảng dưới đây tổng hợp toàn bộ toán tử logic đã học cùng ví dụ thực tế, giúp bạn tra cứu nhanh khi làm việc.
| Toán tử | Mô tả | Ví dụ |
|---|---|---|
| AND | Cả hai điều kiện đúng | age > 18 AND city = ‘HN’ |
| OR | Một điều kiện đúng | city = ‘HN’ OR city = ‘HCM’ |
| NOT | Phủ định | NOT status = ‘blocked’ |
| NOT IN | Không thuộc danh sách | NOT IN (‘A’, ‘B’) |
| NOT LIKE | Không khớp mẫu | NOT LIKE ‘%temp%’ |
| IS NOT NULL | Có giá trị | email IS NOT NULL |
Ứng dụng vào các ngày tiếp theo
Toán tử logic là nền tảng cho các bài học về JOIN, GROUP BY, subquery. Nắm chắc hôm nay sẽ giúp bạn học nhanh các phần nâng cao sau.
Kết luận Ngày 6
AND, OR, NOT là ba toán tử logic cốt lõi trong SQL. Kết hợp đúng thứ tự ưu tiên và ngoặc, bạn có thể lọc bất kỳ tập dữ liệu nào một cách chính xác. Hãy thực hành thật nhiều để thành thạo.
Mở rộng — Ôn tập nhanh trắc nghiệm
Kiểm tra nhanh kiến thức Ngày 6 bằng các câu hỏi trắc nghiệm dưới đây.
Câu 1: Điều kiện nào đúng khi dùng AND?
A. Một điều kiện đúng · B. Cả hai điều kiện đúng · C. Không điều kiện nào · D. Phủ định
Đáp án: B. AND yêu cầu cả hai điều kiện đúng.
Câu 2: OR trả về TRUE khi nào?
A. Cả hai sai · B. Ít nhất một đúng · C. Không bao giờ · D. Chỉ khi cả hai đúng
Đáp án: B. OR trả về TRUE khi ít nhất một điều kiện đúng.
Câu 3: Thứ tự ưu tiên đúng là gì?
A. OR → AND → NOT · B. NOT → AND → OR · C. AND → OR → NOT · D. NOT → OR → AND
Đáp án: B. NOT trước, AND, rồi OR.
Câu 4: NOT IN trả về gì khi danh sách có NULL?
A. Kết quả đúng · B. Không có kết quả · C. Lỗi · D. Tất cả bản ghi
Đáp án: B. NULL gây UNKNOWN nên NOT IN không trả về kết quả mong đợi.
Kết luận
Ôn tập trắc nghiệm giúp bạn củng cố kiến thức toán tử logic. Nắm chắc phần này là nền tảng quan trọng cho các bài SQL nâng cao tiếp theo.
Trader hiện đại và sử dụng toán tử
Trader chuyên nghiệp ngày nay không chỉ đọc biểu đồ mà còn dùng sử dụng toán tử để tự động hóa phân tích, kiểm tra chiến lược và quản lý rủi ro. Python giúp biến ý tưởng thành công cụ một cách nhanh chóng.
Bài viết trình bày chi tiết về sử dụng toán tử, từ thiết lập môi trường đến ví dụ áp dụng thực tế trong quy trình giao dịch hằng ngày.
Thiết lập môi trường nhanh
# Cài đặt các thư viện cần thiết
pip install pandas numpy matplotlib requests
# kiểm tra phiên bản
import pandas as pd
print(pd.__version__)
Sau khi cài đặt, bạn có thể bắt đầu nạp dữ liệu giá, tính chỉ báo và vẽ biểu đồ. Quy trình lặp nhanh giúp bạn thử nghiệm nhiều ý tưởng trong thời gian ngắn.
Các bài toán thường gặp của trader
| Bài toán | Mô tả | Thư viện |
|---|---|---|
| Tải giá | Lấy OHLCV từ sàn | requests, ccxt |
| Tính chỉ báo | SMA, RSI, MACD | pandas, ta-lib |
| Backtest | Mô phỏng chiến lược | backtrader, vectorbt |
| Cảnh báo | Thông báo tín hiệu | telegram, twilio |
| Quản lý vốn | Tính khối lượng | numpy |
Ví dụ: tính RSI và phát hiện tín hiệu
def rsi(close, period=14):
delta = close.diff()
gain = delta.clip(lower=0).rolling(period).mean()
loss = (-delta.clip(upper=0)).rolling(period).mean()
rs = gain / loss
return 100 - (100 / (1 + rs))
df['rsi'] = rsi(df['close'])
print(df[['close', 'rsi']].tail())
RSI trên 70 cho thấy vùng quá mua, dưới 30 là quá bán. Đây là tín hiệu tham khảo, cần kết hợp thêm xu hướng và khối lượng trước khi vào lệnh.
Sai lầm phổ biến và cách tránh
| Sai lầm | Vì sao nguy hiểm | Cách tránh |
|---|---|---|
| Dùng dữ liệu demo thay live | Không đúng thực tế | Kiểm tra dữ liệu thật |
| Bỏ qua phí & trượt giá | Lợi nhuận ảo | Mô phỏng chi phí thực |
| Overfitting tham số | Chiến lược không ổn định | Giữ tham số ít, hợp lý |
| Không kiểm soát rủi ro | Cháy tài khoản | Đặt stop loss mọi lệnh |
Câu hỏi thường gặp về sử dụng toán tử
Tôi mới bắt đầu, học sử dụng toán tử từ đâu?
Bắt đầu từ việc nạp dữ liệu và tính chỉ báo cơ bản. Làm được hai việc này, bạn đã có nền tảng để xây dựng công cụ của riêng mình.
Có cần giỏi toán không?
Chỉ cần kiến thức thống kê cơ bản. Các thư viện đã đóng gói sẵn hầu hết phép tính, bạn chỉ cần hiểu ý nghĩa để dùng đúng.
Dùng bot tự động có an toàn không?
An toàn khi bạn hiểu rõ logic, quản lý rủi ro tốt và giám sát thường xuyên. Chạy demo trước khi dùng tiền thật.
Kết luận
Sử Dụng Toán Tử giúp trader tiết kiệm thời gian, tăng độ chính xác và giảm căng thẳng. Hãy xây dựng từng bước, kiểm chứng kỹ lưỡng và luôn ưu tiên quản lý rủi ro.
Phân tích chuyên sâu về sử dụng toán tử
Để hiểu đầy đủ về sử dụng toán tử, chúng ta cần phân tích từ nhiều góc độ: bản chất, cách vận hành, điều kiện áp dụng và kết quả kỳ vọng. Mỗi góc độ giúp bạn có một bức tranh hoàn chỉnh hơn trước khi đưa ra quyết định.
Về bản chất, sử dụng toán tử không phải là một phép màu mà là kết quả của quá trình nghiên cứu, thử nghiệm và tối ưu liên tục. Người thành công thường bắt đầu từ những bước nhỏ, đo lường kết quả và điều chỉnh dần.
Điều kiện áp dụng cũng rất quan trọng. Một phương pháp hiệu quả với người này chưa chắc phù hợp với người khác, vì vậy bạn cần đối chiếu với hoàn cảnh cụ thể của mình: vốn, thời gian, kiến thức và khả năng chịu rủi ro.
| Góc độ | Câu hỏi cần trả lời | Ý nghĩa thực tế |
|---|---|---|
| Bản chất | Nó hoạt động dựa trên nguyên lý gì? | Hiểu cốt lõi để không áp dụng sai |
| Vận hành | Quy trình thực hiện ra sao? | Biết rõ từng bước để kiểm soát |
| Điều kiện | Khi nào nên / không nên dùng? | Tránh lạm dụng gây rủi ro |
| Kết quả | Kỳ vọng hợp lý là gì? | Đặt mục tiêu thực tế, đo lường được |
| Rủi ro | Điều gì có thể sai? | Có kế hoạch dự phòng |
Cách tư duy đúng khi nghiên cứu sử dụng toán tử
Hãy luôn đặt câu hỏi: dữ liệu này từ đâu, giả định nào đang được dùng, và nếu giả định sai thì kết quả thay đổi ra sao. Tư duy phản biện giúp bạn tránh những kết luận vội vàng và những quyết định thiếu cơ sở.
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
Đặng Trí Thanh
Giám đốc Công nghệ · DNT Digital · Giảng viên HNDLĐặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.