1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Phân Tích Và Thiết Kế Hệ Thống Thông Tin Truy Vấn Con

28 151 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 549,5 KB

Nội dung

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-1 Truy vấn con 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 Chương 5. Truy vấn con 5-2 Truy vấn con 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); Chương 5. Truy vấn con 5-3 Truy vấn con 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.  Chương 5. Truy vấn con 5-4 Truy vấn con 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. Chương 5. Truy vấn con 5-5 Truy vấn con 5.1 Định nghĩa  Trong mệnh đề WHERE Ví dụ 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 = (SELECT JobId FROM Emp WHERE Fname = ‘BLAKE’); Fname JobId BLAKE MANAGER CLARK Chương 5. Truy vấn con 5-6 Truy vấn con 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) DEPTNO AVG(SAL) FROM Emp 10 GROUP BY DeptId 2916.66667 HAVING AVG(Sal) > (SELECT AVG(Sal) 20 2175 FROM Emp WHERE DeptId =30); Chương 5. Truy vấn con 5-7 Truy vấn con 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 Emp WHERE emp_id = 141); Chương 5. Truy vấn con 5-8 Truy vấn con 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 = Bằng > Lớn hơn >= Lớn hơn hoặc bằng < Nhỏ hơn 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) Chương 5. Truy vấn con 5 - 13 Truy vấn con 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); Chương 5. Truy vấn con 5 - 14 Truy vấn con 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); Chương 5. Truy vấn con 5 - 15 Truy vấn con 5.5 Truy vấn con tương quan được sử dụng trong trường hợp xử lý từng hàng Lấy một hàng ứng viên.  Thực thi câu lệnh con sử dụng giá trị của các hàng ứng viên.  Sử dụng kết quả từ câu lệnh con để loại hoặc không các hàng ứng viên.  Lặp lại cho đến khi không còn hàng ứng viên nào. 5 - 16  Chương 5. Truy vấn con Truy vấn con 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. Chương 5. Truy vấn con 5 - 17 Truy vấn con 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 outer WHERE salary > (SELECT AVG(salary) FROM Emp WHERE deptid = outer.dept_id); Chương 5. Truy vấn con 5 - 18 Truy vấn con 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); Chương 5. Truy vấn con 5 - 19 Truy vấn con 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); Chương 5. Truy vấn con 5 - 20 Truy vấn con 5.5 Truy vấn con tương quan  Tương quan DELETE 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); Chương 5. Truy vấn con 5 - 21 Truy vấn con 5.5 Truy vấn con tương quan  Tương quan DELETE 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); Chương 5. Truy vấn con 5 - 22 Truy vấn con 5.6 Truy vấn phân cấp một bảng có thể thể hiện cấu trúc hình cây nhờ truy vấn phân cấp SELECT [LEVEL], column, expr... FROM table [WHERE condition(s)] [START WITH condition(s)] [CONNECT BY PRIOR condition(s)]; Chương 5. Truy vấn con 5 - 23 Truy vấn con 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).  Chương 5. Truy vấn con 5 - 24 Truy vấn con 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; Chương 5. Truy vấn con 5 - 25 Truy vấn con 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 Chương 5. Truy vấn con 5 - 26 Truy vấn con 5.6 Truy vấn phân cấp Chương 5. Truy vấn con 5 - 27 Truy vấn con 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. Chương 5. Truy vấn con 5 - 28 [...]... tử ANY và ALL trong câu lêônh truy vấn con tương quan Chương 5 Truy vấn con 5 - 17 Truy vấn con 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 outer WHERE salary > (SELECT AVG(salary) FROM Emp WHERE deptid = outer.dept_id); Chương 5 Truy vấn con 5 - 18 Truy vấn con 5.5 Truy vấn con tương... Chương 5 Truy vấn con 5 - 21 Truy vấn con 5.5 Truy vấn con tương quan  Tương quan DELETE 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); Chương 5 Truy vấn con 5 - 22 Truy vấn con 5.6 Truy vấn phân cấp một bảng có thể thể hiện cấu trúc hình cây nhờ truy vấn phân cấp... [WHERE condition(s)] [START WITH condition(s)] [CONNECT BY PRIOR condition(s)]; Chương 5 Truy vấn con 5 - 23 Truy vấn con 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)  Chương 5 Truy vấn con. .. Chương 5 Truy vấn con 5 - 15 Truy vấn con 5.5 Truy vấn con tương quan được sử dụng trong trường hợp xử lý từng hàng Lấy một hàng ứng viên  Thực thi câu lệnh con sử dụng giá trị của các hàng ứng viên  Sử dụng kết quả từ câu lệnh con để loại hoặc không các hàng ứng viên  Lặp lại cho đến khi không còn hàng ứng viên nào 5 - 16  Chương 5 Truy vấn con Truy vấn con 5.5 Truy vấn con tương... 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 Chương 5 Truy vấn con 5 - 26 Truy vấn con 5.6 Truy vấn phân cấp Chương 5 Truy vấn con 5 - 27 Truy vấn con Câu hỏi và bài tập  Trả lời câu hỏi phần... FROM table2 alias2 WHERE alias1.col = alias2.co); Chương 5 Truy vấn con 5 - 19 Truy vấn con 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); Chương 5 Truy vấn con 5 - 20 Truy vấn con 5.5 Truy vấn con tương quan  Tương quan DELETE xóa các hàng trong một... ‘ST_PROG’; Chương 5 Truy vấn con 5 - 12 Truy vấn con 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) Chương 5 Truy vấn con 5 - 13 Truy vấn con 5.4 Truy vấn con trên nhiều... 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); Chương 5 Truy vấn con 5 - 14 Truy vấn con 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ó... buộc)  Chương 5 Truy vấn con 5 - 24 Truy vấn con 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; Chương 5 Truy vấn con 5 - 25 Truy vấn con 5.6 Truy vấn phân cấp Ví dụ: Lập báo cáo hiển thị.. .Truy vấn con 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); Chương 5 Truy vấn con 5 - 11 Truy vấn con 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

Ngày đăng: 16/10/2015, 21:34

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w