Trang chủ » Blog » SQL – Ứng dụng IN, EXISTS, LIKE và UNION với câu lệnh truy vấn (phần 2)

SQL – Ứng dụng IN, EXISTS, LIKE và UNION với câu lệnh truy vấn (phần 2)

Như đã đề cập trước đây, bài hôm nay chúng ta cùng làm cho câu lệnh truy vấn đa dạng hơn về cách xử lý qua các từ khoá dùng chung như IN, EXISTS, LIKE và UNION. Hãy cùng tìm hiểu sâu hơn qua bài hôm nay.

1. Vai trò của IN, EXISTS, LIKE và UNION trong câu lệnh truy vấn

Giúp câu lệnh query được xử lý linh động hơn như là truy vấn con qua IN/EXISTS, tìm kiếm dữ liệu tương đối dựa trên LIKE, gộp nhóm các câu truy vấn qua UNION.

[Database] DML 2 (Part 1)

[Database] DML 2 (Part 1)

[Database] DML 2 (Part 2 )

[Database] DML 2 (Part 2)

2. Ý nghĩa và cách dùng các câu lệnh IN, EXISTS, LIKE và UNION

2.1. Câu lệnh IN / NOT IN

Giúp xác định một tập giá trị với WHERE.

Cú pháp

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1, value2, ...);

Ví dụ

Để lấy ra thông tin các bác sĩ có tên là An hay Khoa.

SELECT *

FROM doctor

WHERE last_name in ("An", 'Khoa');

Sử dụng kết hợp với truy vấn con, lấy ra thông tin các bác sĩ đã có tài khoản truy cập vào hệ thống.

SELECT *

FROM doctor

WHERE doctor_id IN (

SELECT doctor_id

FROM account_system

);

2.2. Câu lệnh LIKE / NOT LIKE

Tìm kiếm dữ liệu ở một cột theo mẫu cho sẵn (pattern).

  • % đại diện cho 0 hoặc nhiều ký tự.
  • _ đại diện cho 1 ký tự

Cú pháp

SELECT column1, column2, ...

FROM table_name

WHERE columnN LIKE pattern;

Ví dụ

Lấy ra các bác sĩ có tên bắt đầu bằng ký tự T.

SELECT *

FROM doctor

WHERE last_name LIKE 'T%';

Và lấy ra thông tin bác sĩ, tên chỉ chứa 2 ký tự.

SELECT *

FROM doctor

WHERE last_name LIKE '__';

2.3. Câu lệnh EXISTS / NOT EXISTS

Kiểm tra sự tồn tại của bất kỳ record nào ở truy vấn con (subquery).

Cú pháp

SELECT column_name(s)

FROM table_name

WHERE EXISTS

(SELECT column_name FROM table_name WHERE condition);

Ví dụ

SELECT *

FROM patient p

WHERE EXISTS (

SELECT *

FROM patient_bill pb

            WHERE p.patient_id = pb.patient_id

GROUP BY patient_id

HAVING COUNT(*) >= 2

);

Mục đích câu lệnh truy vấn dùng để lấy ra thông tin các bệnh nhân đã nhận từ 2 lần thuốc trở lên

2.4. Câu lệnh UNION / UNION ALL

Dùng để kết hợp kết quả của 2 hoặc nhiều câu lệnh SELECT.

Điều kiện:

  • Phải có cùng số lượng cột.
  • Các cột tương ứng phải có cùng kiểu dữ liệu (không bắt buộc đối với MySQL).

Cú pháp

SELECT column_name(s) FROM table1

UNION [ALL]

SELECT column_name(s) FROM table2;

Ví dụ

Để lấy ra tên của bác sĩ và bệnh nhân:

SELECT `name`, 'bn'

FROM patient

UNION ALL

SELECT last_name, 'bs'

FROM doctor;

Kết luận

Tổng kết lại, khi sử dụng câu lệnh truy vấn để thao tác với dữ liệu:

Nếu muốn kết hợp với tập giá trị hoặc câu lệnh truy vấn con thì sử dụng IN hoặc EXISTS.

Khi tìm kiếm dữ liệu trên một mẫu (pattern), như regex thì dùng LIKE.

Còn muốn kết hợp nhiều câu SELECT thì sử dụng UNION để làm việc này.

Và những bài tiếp theo, vẫn là chuỗi bài về DML với các lệnh JOIN để kết hợp dữ liệu từ nhiều table.

Download - Giáo trình thuật toán

5 + 2 =

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

2 + 2 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM