MỞ ĐẦU
ORACLE TABLE
ORACLE QUERY
ORACLE CONDITION
ORACLE CLAUSES
ORACLE OPERATORS
ORACLE JOINS
ORACLE REFERENCE
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Tìm hiểu Subquery trong Oracle

Trong bài viết này chúng ta sẽ tìm hiểu một phần khá hay đó là subquery trong Oracle. Subquery hay còn gọi là truy vấn con, nghĩa là bạn sẽ tạo ra những truy vấn nhỏ để đưa nó vào truy vấn cha.

1. Subquery trong Oracle

Như các bạn biết lệnh SELECT sẽ trả về một bảng dữ liệu mới, bảng này sẽ không lưu vào hệ thống mà là một bảng tạm (local temporary) và sẽ tự giải phóng khi câu truy vấn kết thúc. Như vậy ta hoàn toàn có thể thực hiện một truy vấn trên bảng kết quả đó, và ta chỉ thực hiện được truy vấn tìm kiếm trên nó mà thôi.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Ví dụ: Tìm nhân viên có mức lương cao nhất

SELECT * 
FROM employees 
WHERE salary = 
(
	SELECT max(salary) 
	FROM employees
);

Ở lệnh truy vấn con sẽ trả về row có mức lương cao nhất, sau đó sẽ thực hiện so sánh ở truy vấn cha và đưa ra kết quả chính xác.

Đây chỉ là một ví dụ giúp các bạn hiểu, chứ thực tế bài này bạn không nên sử dụng subquery vì sẽ không tối ưu.

2. Một vài ví dụ Subquery trong Oracle

Dưới đây sẽ là một vài ví dụ, mình sẽ không giải thích ý nghĩa của từng lệnh mà thay vào đó bạn hãy tự đọc và suy ngẫm nhé.

Sử dụng ở FROM

SELECT count(*) 
FROM 
(
	SELECT *
	FROM employees
	WHERE last_name LIKE 'A%'
);

Sử dụng ở WHERE

SELECT * 
FROM employees e1 
WHERE e1.salary = (
	SELECT max(salary) 
	FROM employees e2 
	WHERE e1.department_id = e2.department_id
);

Sử dụng ở SELECT

SELECT (
  	SELECT avg(salary) 
	FROM employees) AS avg_sal, 
	salary 
FROM employees;

Nested Subquery

Nested subquery tức là bạn sử dụng nhiều lệnh truy vấn con trong một lệnh cha.

SELECT count(*) 
FROM 
(
	SELECT salary, 
		(
			SELECT avg(salary) 
			FROM employees) avg_sal 
	FROM employees
)
WHERE salary > avg_sal;

Oracle chỉ cho phép bạn sử dụng 255 cấp truy vấn con, một con số không ai sử dụng hết được :)

3. Lời kết

Nếu một bài toán có thể giải quyết được ở cách thông thường mà không cần sử dụng subquery thì bạn nên dùng cách thông thường nhé, bởi subquery sẽ tốn nhiều tài nguyên hơn.

Bài này đã hướng dẫn bạn subquery và gì và cách sử dụng trong Oracle, hẹn gặp lại các bạn ở bài tiếp theo.

Cùng chuyên mục:

Hàm Hàm ASCII trong Oracle

Hàm Hàm ASCII trong Oracle

Cách sử dụng hàm Hàm ASCII trong 150

Hàm Hàm ASCIISTR trong Oracle

Hàm Hàm ASCIISTR trong Oracle

Cách sử dụng hàm Hàm ASCIISTR trong 150

Hàm Hàm CHR trong Oracle

Hàm Hàm CHR trong Oracle

Cách sử dụng hàm Hàm CHR trong 150

Hàm Hàm COMPOSE trong Oracle

Hàm Hàm COMPOSE trong Oracle

Cách sử dụng hàm Hàm COMPOSE trong 150

Hàm Hàm CONCAT trong Oracle

Hàm Hàm CONCAT trong Oracle

Cách sử dụng hàm Hàm CONCAT trong 150

Hàm Hàm CONVERT trong Oracle

Hàm Hàm CONVERT trong Oracle

Cách sử dụng hàm Hàm CONVERT trong 150

Hàm Hàm DECOMPOSE trong Oracle

Hàm Hàm DECOMPOSE trong Oracle

Cách sử dụng hàm Hàm DECOMPOSE trong 150

Hàm Hàm DUM trong Oracle

Hàm Hàm DUM trong Oracle

Cách sử dụng hàm Hàm DUM trong 150

Hàm Hàm INITCAP trong Oracle

Hàm Hàm INITCAP trong Oracle

Cách sử dụng hàm Hàm INITCAP trong 150

Hàm Hàm INSTR trong Oracle

Hàm Hàm INSTR trong Oracle

Cách sử dụng hàm Hàm INSTR trong 150

Hàm Hàm INSTR2 trong Oracle

Hàm Hàm INSTR2 trong Oracle

Cách sử dụng hàm Hàm INSTR2 trong 150

Hàm Hàm INSTR4 trong Oracle

Hàm Hàm INSTR4 trong Oracle

Cách sử dụng hàm Hàm INSTR4 trong 150

Hàm Hàm INSTRB trong Oracle

Hàm Hàm INSTRB trong Oracle

Cách sử dụng hàm Hàm INSTRB trong 150

Hàm Hàm INSTRC trong Oracle

Hàm Hàm INSTRC trong Oracle

Cách sử dụng hàm Hàm INSTRC trong 150

Hàm Hàm LENGTH trong Oracle

Hàm Hàm LENGTH trong Oracle

Cách sử dụng hàm Hàm LENGTH trong 150

Hàm Hàm LENGTH2 trong Oracle

Hàm Hàm LENGTH2 trong Oracle

Cách sử dụng hàm Hàm LENGTH2 trong 150

Hàm Hàm LOWER trong Oracle

Hàm Hàm LOWER trong Oracle

Cách sử dụng hàm Hàm LOWER trong 150

Hàm Hàm LPAD trong Oracle

Hàm Hàm LPAD trong Oracle

Cách sử dụng hàm Hàm LPAD trong 150

Hàm Hàm LTRIM trong Oracle

Hàm Hàm LTRIM trong Oracle

Cách sử dụng hàm Hàm LTRIM trong 150

Hàm Hàm NCHR trong Oracle

Hàm Hàm NCHR trong Oracle

Cách sử dụng hàm Hàm NCHR trong 150

Top