bài giảng cơ sở dữ liệu quan hệ và sql - chương 5: truy vấn con - cđ cntt hữu nghị việt hàn - Pdf 16

Chương 5. Truy vấn con
5 - 1
Chương 5 TRUY VẤN CON
- Lý thuyết: 3 tiết
- Thực hành: 2 tiết
Chương 5. Truy vấn con
5 - 2
5.1 Định nghĩa
5.2 Truy vấn con hàng đơn
5.3 Truy vấn con nhiều hàng
5.4 Truy vấn con trên nhiều cột
5.5 Truy vấn con tương quan
5.6 Truy vấn con phân cấp
Truy vấn con
Chương 5. Truy vấn con
5 - 3
5.1 Định nghĩa
câu lệnh SELECT được lồng vào trong một mệnh đề
của câu lệnh khác.
SELECT select_list
FROM table
WHERE expr operator (
SELECT sel_list FROM
table
);
Truy vấn con
Chương 5. Truy vấn con
5 - 4
5.1 Định nghĩa

Mục đích

Tìm những nhân viên làm cùng công việc với BLAKE
SELECT Fname, JobId FROM Emp
WHERE JobId =
Fname JobId
BLAKE MANAGER
CLARK MANAGER
(SELECT JobId FROM Emp
WHERE Fname = ‘BLAKE’);
Truy vấn con
Chương 5. Truy vấn con
5 - 7
5.1 Định nghĩa

Trong mệnh đề HAVING
Ví dụ
Tìm phòng có mức lương tb > mức lương tb của phòng
30.
SELECT DeptId, AVG(Sal)
FROM Emp
GROUP BY DeptId
HAVING AVG(Sal) > (SELECT AVG(Sal)
FROM Emp
WHERE DeptId =30);
DEPTNO AVG(SAL)
10 2916.66667
20 2175
Truy vấn con
Chương 5. Truy vấn con
5 - 8
5.2 Truy vấn con hàng đơn

Chương 5. Truy vấn con
5 - 10
5.3 Truy vấn con nhiều hàng

kết quả trả về nhiều hơn một hàng.
Một số toán tử thường được sử dụng
Trả về TRUE nếu có tồn tạiEXISTS
So sánh với tất cả các giá trị trong
kết quả lệnh truy vấn con
ALL
So sánh với bất kỳ giá trị nào
trong kết quả của lệnh truy vấn con
ANY
Nằm trong danh sáchIN
Diễn giảiToán tử
Truy vấn con
Chương 5. Truy vấn con
5 - 11
5.3 Truy vấn con nhiều hàng
Ví dụ:
Tìm những nhân viên có thu nhập bằng với mức lương
tối thiểu của các phòng ban.
SELECT ename, salary, dept_id
FROM Emp
WHERE salary IN (SELECT MIN(salary)
FROM emp
GROUP BY dept_id);
Truy vấn con
Chương 5. Truy vấn con
5 - 12

Chương 5. Truy vấn con
5 - 14
5.4 Truy vấn con trên nhiều cột
Mỗi hàng trong câu truy vấn chính được so sánh với
giá trị của câu truy vấn con nhiều hàng và nhiều cột.
SELECT col1, col2,
FROM table
WHERE (col1, col2, ) IN
(SELECT col1, col2,
FROM table
WHERE condition);
Truy vấn con
Chương 5. Truy vấn con
5 - 15
5.4 Truy vấn con trên nhiều cột
Ví dụ: Hiển thị các nhân viên do cùng một người quản lý và
làm việc cùng phòng với nhân viên có mã số 178 hoặc 174.
SELECT emp_id, manager_id, dept_id
FROM Emp
WHERE (manager_id, dept_id) IN
(SELECT manager_id, dept_id
FROM Emp
WHERE emp_id IN (178,174))
AND emp_id NOT IN (178,174);
Truy vấn con
Chương 5. Truy vấn con
5 - 16
5.5 Truy vấn con tương quan
được sử dụng trong trường hợp xử lý từng hàng


FROM Emp
WHERE deptid = outer.dept_id);
Truy vấn con
Chương 5. Truy vấn con
5 - 19
5.5 Truy vấn con tương quan

Tương quan UPDATE
cập nhật các hàng trong một bảng dựa trên cơ sở các
hàng từ bảng khác
UPDATE table1 alias1
SET col = (SELECT expression
FROM table2 alias2
WHERE alias1.col = alias2.co);
Truy vấn con
Chương 5. Truy vấn con
5 - 20
5.5 Truy vấn con tương quan

Tương quan UPDATE
Ví dụ Cập nhật dữ liệu cột Deptid của bang Emp dựa vào bảng
Dept.
UPDATE Emp e
SET deptid =
(SELECT deptid
FROM Dept d
WHERE e.deptid = d.deptid);
Truy vấn con
Chương 5. Truy vấn con
5 - 21

FROM table
[WHERE condition(s)]
[START WITH condition(s)]
[CONNECT BY PRIOR condition(s)];
Truy vấn con
Chương 5. Truy vấn con
5 - 24
5.6 Truy vấn phân cấp
Trong đó:

Cột giả LEVEL cho biết cấp của mẫu tin hay cấp của nút
trong quan hệ thừa kế.

START WITH Xác định điểm đầu của hình cây (bắt
buộc).

CONNECT BY PRIOR Chỉ định cột và định hướng trong
mối liên hệ hình cây (bắt buộc).
Truy vấn con
Chương 5. Truy vấn con
5 - 25
5.6 Truy vấn phân cấp
Ví dụ: Hiển thị danh sách những người quản lý bắt đầu với
nhân viên tên ‘King’.
(
Thứ tự trên xuống)
SELECT ename||' reports to '||
PRIOR ename "Walk Top Down“
FROM emp
TART WITH ename = 'King’


Nhờ tải bản gốc
Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status