1. Định nghĩa các thuật ngữ: cơ sở dữ liệu, hệ quản trị cơ sở dữ liệu, hệ cơ sở dữ
22.2.4. Mệnh đề where
Mệnh đềWHEREđược dùng để thiết lập điều kiện truy xuất.
Để truy xuất dữ liệu trong bảng theo các điều kiện nào đó, một mệnh đề WHERE có thể được thêm vào câu lệnh SELECT.
a) Cú pháp
Cú pháp mệnh đề WHERE trong câu lệnh SELECTnhư sau: SELECTtên_cột[,…]FROMtên_bảng[,…]
WHEREtên_cột phép_toángiá_trị[and/or …]
Trong mệnh đề WHERE, các phép toán được sử dụng là
Phép toán Mô tả = So sánh bằng <> So sánh không bằng > Lớn hơn < Nhỏ hơn >= Lớn hơn hoặc bằng <= Nhỏ hơn hoặc bằng
BETWEEN Nằm giữa một khoảng LIKE So sánh mẫu chuỗi
Lưuý: Trong một số phiên bản của SQL, phép toán <> có thể được viết dưới
dạng!=
b) Sử dụng mệnh đềWHERE
Để lấy danh sách những người sống ở thành phố Sandnes, ta sử dụng mệnh
đềWHERE trong câu lệnh SELECTnhư sau: SELECT*FROMPersons
WHERECity='Sandnes'
Bảng Persons:
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
Pettersen Kari Storgt 20 Stavanger 1960 Kết quả trả về:
LastName FirstName Address City Year
Hansen Ola Timoteivn 10 Sandnes 1951
Svendson Tove Borgvn 23 Sandnes 1978
Svendson Stale Kaivn 18 Sandnes 1980
c) Sửdụng dấu nháy
Lưu ý rằng ở ví dụ trên ta đã sử dụng hai dấu nháy đơn (') bao quanh giá trị điều kiện 'Sandnes'.
SQL sử dụng dấunháy đơnbao quanh các giá trị ở dạng chuỗi văn bản (text). Nhiều hệ CSDL còn cho phép sử dụng dấu nháy kép ("). Các giá trị ởdạng số không dùng dấu nháy để bao quanh.
Với dữ liệu dạng chuỗi văn bản: Câu lệnh đúng:
SELECT*FROMPersons WHEREFirstName='Tove'
Câu lệnh sai:
SELECT*FROMPersons WHEREFirstName=Tove Với dữ liệu dạng số:
Câu lệnh đúng:
SELECT*FROMPersons WHEREYear>1965
Câu lệnh sai:
d) Toán tử Like
Toán tử like được sử dụng trong trường hợp so sánh gần đúng, có thể sử dụng cáctoán tử đại diện(wildcard operators) trong bảng dưới đây
Wildcard Mô tả Ví dụ
‘_’ Một ký tự Select Ten_nv From
NHAN_VIEN Where ten_nv Like ‘C_’
% Nhiều ký tự Select Ten_nv From
NHAN_VIEN Where ten_nv Like ‘'AL%'’
[] Một ký tự thuộc khoảng đặt trong ngoặc vuông
Select Ten_nv From
NHAN_VIEN Where ten_nv Like 'Sem[a-e]'
[^] Một ký tự mà không thuộc khoảng đặt trong ngoặc vuông
Select Ten_nv From
NHAN_VIEN Where ten_nv Like 'Sem[^a-e]'