1. Trang chủ
  2. » Công Nghệ Thông Tin

SLIDE GIẢNG DẠY CƠ SỞ DỮ LIỆU QUAN HỆ VÀ SQL CHƯƠNG 5 TRUY VẤN CON

28 288 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 552 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

5.1 Định nghĩa Mục đích  Cung cấp giá trị cho WHERE, HAVING và START WITH  Định nghĩa một tập hợp các hàng để chèn vào bảng trong câu lệnh INSERT hay CREATE TABLE.. 5.2 Truy vấn

Trang 1

TRUY VẤN CON

- Lý thuyết: 3 tiết

- Thực hành: 2 tiết

Trang 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

Trang 4

5.1 Định nghĩa

 Mục đích

 Cung cấp giá trị cho WHERE, HAVING và START WITH

 Định nghĩa một tập hợp các hàng để chèn vào bảng trong câu lệnh INSERT hay CREATE TABLE

 Định nghĩa một hay nhiều giá trị để gán cho một hàng đã tồn tại trong câu lệnh UPDATE

Truy vấn con

Trang 5

5.1 Định nghĩa

 Một số quy tắc

 trong cặp dấu ngoặc đơn ()

 bên phải điều kiện so sánh

 Mệnh đề ORDER BY trong câu lệnh truy vấn con là không cần thiết trừ khi chúng ta thực hiện phân tích top-n

 Sử dụng các phép toán

Truy vấn con

Trang 7

FROM Emp WHERE DeptId

=30);

DEPTNO AVG(SAL)

10 2916.66667

20 2175

Truy vấn con

Trang 8

5.2 Truy vấn con hàng đơn

 chỉ trả về một hàng từ câu lệnh SELECT con.

Ví dụ

Tìm nhân viên có mã công việc giống với nhân viên số

141 SELECT Ename, job_id

FROM Emp WHERE job_id = (SELECT job_id

FROM EmpWHERE emp_id = 141);

Truy vấn con

Trang 9

5.2 Truy vấn con hàng đơn

Chú ý: Một số lỗi thường gặp

 Câu lệnh con trả về nhiều hơn một hàng

 Câu lệnh con không trả về hàng nào

Các phép toán thường dùng Toán tử Diễn giải

Trang 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

Toán tử Diễn giải

IN Nằm trong danh sáchANY

So sánh với bất kỳ giá trị nào trong kết quả của lệnh truy vấn con

ALL So sánh với tất cả các giá trị trong kết quả lệnh truy vấn conEXISTS Trả về TRUE nếu có tồn tại

Truy vấn con

Trang 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

Trang 12

5.3 Truy vấn con nhiều hàng

Ví dụ: Tìm nhân viên không phải lập trình viên (ST_PROG’)

và mức lương thấp hơn bất kỳ một lập trình viên nào (sử dụng toán tử ANY)

SELECT emp_id, ename, job_id, salary

FROM Emp

WHERE salary < ANY (SELECT salary

FROM emp WHERE job_id = 'ST_PROG')

AND job_id <> ‘ST_PROG’;

Truy vấn con

Trang 13

5.3 Truy vấn con nhiều hàng

Chú ý:

 < ANY: nhỏ hơn phần tử lớn nhất

 > ANY: lớn phần tử nhỏ nhất

 = ANY: tương đương với bất kỳ phần tử nào

 < ALL: nhỏ hơn phần tử nhỏ nhất

 > ALL: lớn hơn phần tử lớn nhất

 điều kiện so sánh với giá trị NULL trả về NULL (dùng IN)

Truy vấn con

Trang 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

FROM table WHERE condition);

Truy vấn con

Trang 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

Trang 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

Trang 17

5.5 Truy vấn con tương quan

SELECT column1, column2,

FROM table1 outer

WHERE column1 operator

(SELECT colum1, column2 FROM table2

WHERE expr1 = outer.expr2);

có thể sử dụng toán tử ANY và ALL trong câu lệnh truy vấn con tương quan

Truy vấn con

Trang 18

5.5 Truy vấn con tương quan

Ví dụ: Tìm tất cả các nhân viên có thu nhập cao hơn mức lương trung bình trong phòng ban của họ

SELECT ename, salary, deptid

FROM Emp outerWHERE salary > (SELECT AVG(salary)

FROM Emp

WHERE deptid = outer.dept_id);

Truy vấn con

Trang 19

5.5 Truy vấn con tương quan

cập nhật các hàng trong một bảng dựa trên cơ sở các

Trang 20

5.5 Truy vấn con tương quan

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

Trang 21

5.5 Truy vấn con tương quan

xóa các hàng trong một bảng dựa trên cơ sở các

hàng từ bảng khác

DELETE FROM table1 alias1

WHERE col operator

(SELECT expression FROM table2 alias2 WHERE alias1.col = alias2.col);

Truy vấn con

Trang 22

5.5 Truy vấn con tương quan

Ví dụ: Xóa những hàng trong bảng EMP mà các hàng đó tồn tại trong bảng EMP_HISTORY

DELETE FROM Emp E

WHERE emp_id =

(SELECT emp_id FROM emp_history

WHERE emp_id = E.emp_id);

Truy vấn con

Trang 23

[START WITH condition(s)]

[CONNECT BY PRIOR condition(s)];

Truy vấn con

Trang 24

 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

Trang 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’

CONNECT BY PRIOR emp_id = manager_id;

Truy vấn con

Trang 26

5.6 Truy vấn phân cấp

Ví dụ: Lập báo cáo hiển thị các cấp quản lý công ty, bắt đầu từ cấp cao nhất và thụt đầu dòng theo từng cấp.(Định dạng phân cấp báo cáo sử dụng LEVEL và LPAD)

SELECT LPAD(ename, LENGTH(ename) + (LEVEL*2)

-2,'_') AS org_chart FROM Emp

START WITH ename='King'

CONNECT BY PRIOR emp_id=manager_id

Truy vấn con

Trang 27

5.6 Truy vấn phân cấp

Truy vấn con

Trang 28

Câu hỏi và bài tập

 Trả lời câu hỏi phần 6.7 trong giáo trình

 Thực hành viết các câu lệnh truy vấn con trong phần bài tập

 Chuẩn bị nội dung chương 6.

Truy vấn con

Ngày đăng: 29/06/2017, 22:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN