Chỉ định điều kiện truy vấn dữ liệu

Một phần của tài liệu giao trinh SQL (Trang 25 - 29)

Mệnh đề WHERE trong cõu lệnh SELECT được sử dụng nhằm xỏc định cỏc điều kiện đối với việc truy xuất dữ liệu. Sau mệnh đề WHERE là một biểu thức logic và chỉ những dũng dữ liệu nào thoả món điều kiện được chỉ định mới được hiển thị trong kết quả truy vấn.

Vớ dụ 2.14: Cõu lệnh dưới đõy hiển thị danh sỏch cỏc mụn học cú số đơn vị học trỡnh lớn hơn 3

SELECT * FROM monhoc WHERE sodvht>3

Kết quả của cõu lệnh này như sau:

Trong mệnh đề WHERE thường sử dụng:

• Cỏc toỏn tử kết hợp điều kiện (AND, OR)

• Cỏc toỏn tử so sỏnh

• Kiểm tra giới hạn của dữ liệu (BETWEEN/ NOT BETWEEN)

• Danh sỏch

• Kiểm tra khuụn dạng dữ liệu.

• Cỏc giỏ trị NULL a. Cỏc toỏn tử so sỏnh Toỏn tử ý nghĩa = Bằng > Lớn hơn < Nhỏ hơn >= Lớn hơn hoặc bằng <= Nhỏ hơn hoặc bằng <> Khỏc !> Khụng lớn hơn !< Khụng nhỏ hơn Vớ dụ 2.15: Cõu lệnh: SELECT masv,hodem,ten,ngaysinh FROM sinhvien WHERE (ten='Anh') AND (YEAR(GETDATE())-YEAR(ngaysinh)<=20)

cho biết mó, họ tờn và ngày sinh của cỏc sinh viờn cú tờn là Anh và cú tuổi nhỏ hơn hoặc bằng 20.

b. Kiểm tra giới hạn của dữ liệu

Để kiểm tra xem giỏ trị dữ liệu nằm trong (ngoài) một khoảng nào đú, ta sử dụng toỏn tử BETWEEN (NOT BETWEEN) như sau:

Cỏch sử dụng í nghĩa

giỏ_trị BETWEEN a AND b a ≤ giỏ_trị ≤ b

giỏ_trị NOT BETWEEN a AND b (giỏ_trị < a) AND (giỏ_trị>b)

Vớ dụ 2.16: Cõu lệnh dưới đõy cho biết họ tờn và tuổi của cỏc sinh viờn cú tờn là Bỡnh và cú tuổi nằm trong khoảng từ 20 đến 22

SELECT hodem,ten,year(getdate())-year(ngaysinh) AS tuoi FROM sinhvien

WHERE ten='Bỡnh' AND

YEAR(GETDATE())-YEAR(ngaysinh) BETWEEN 20 AND 22

c. Danh sỏch (IN và NOT IN)

Từ khoỏ IN được sử dụng khi ta cần chỉ định điều kiện tỡm kiếm dữ liệu cho cõu lệnh SELECT là một danh sỏch cỏc giỏ trị. Sau IN (hoặc NOT IN) cú thể là một danh sỏch cỏc giỏ trị hoặc là một cõu lệnh SELECT khỏc.

Vớ dụ 2.17: Để biết danh sỏch cỏc mụn học cú số đơn vị học trỡnh là 2, 4 hoặc 5, thay vỡ sử dụng cõu lệnh

SELECT * FROM monhoc

WHERE sodvht=2 OR sodvht=4 OR sodvht=5

ta cú thể sử dụng cõu lệnh

SELECT * FROM monhoc WHERE sodvht IN (2,4,5)

d. Toỏn tử LIKE và cỏc ký tự đại diện

Từ khoỏ LIKE (NOT LIKE) sử dụng trong cõu lệnh SELECT nhằm mụ tả khuụn dạng của dữ liệu cần tỡm kiếm. Chỳng thường được kết hợp với cỏc ký tự đại diện sau đõy:

Ký tự đại diện ý nghĩa

% Chuỗi ký tự bất kỳ gồm khụng hoặc nhiều ký tự

_ Ký tự đơn bất kỳ

[] Ký tự đơn bất kỳ trong giới hạn được chỉ định (vớ dụ [a-f]) hay một tập (vớ dụ [abcdef])

[^] Ký tự đơn bất kỳ khụng nằm trong giới hạn được chỉ định ( vớ dụ [^a-f] hay một tập (vớ dụ [^abcdef]).

Vớ dụ 2.18: Cõu lệnh dưới đõy

SELECT hodem,ten FROM sinhvien WHERE hodem LIKE 'Lờ%'

cho biết họ tờn của cỏc sinh viờn cú họ là Lờ và cú kết quả như sau

Cõu lệnh:

SELECT hodem,ten FROM sinhvien

WHERE hodem LIKE 'Lờ%' AND ten LIKE '[AB]%'

Cú kết quả là:

e. Giỏ trị NULL

Dữ liệu trong một cột cho phộp NULL sẽ nhận giỏ trị NULL trong cỏc trường hợp sau:

• Nếu khụng cú dữ liệu được nhập cho cột và khụng cú mặc định cho cột hay kiểu dữ liệu trờn cột đú.

• Người sử dụng trực tiếp đưa giỏ trị NULL vào cho cột đú.

• Một cột cú kiểu dữ liệu là kiểu số sẽ chứa giỏ trị NULL nếu giỏ trị được chỉ định gõy tràn số.

Trong mệnh đề WHERE, để kiểm tra giỏ trị của một cột cú giỏ trị NULL hay khụng, ta sử dụng cỏch viết:

WHERE tờn_cột IS NULL

hoặc:

WHERE tờn_cột IS NOT NULL

Một phần của tài liệu giao trinh SQL (Trang 25 - 29)