Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
552 KB
Nội dung
TRUYVẤNCON - Lý thuyết: tiết - Thực hành: tiết ChươngTruyvấn 5-1 Truyvấn 5.1 Định nghĩa 5.2 Truyvấn hàng đơn 5.3 Truyvấn nhiều hàng 5.4 Truyvấn nhiều cột 5.5 Truyvấn tương quan 5.6 Truyvấn phân cấp ChươngTruyvấn 5-2 Truyvấn 5.1 Định nghĩa câu lệnh SELECT lồng vào mệnh đề câu lệnh khác SELECT select_list FROM table WHERE expr operator (SELECT sel_list FROM table); ChươngTruyvấn 5-3 Truyvấn 5.1 Định nghĩa Mục đích Cung cấp giá trị cho WHERE, HAVING START WITH Định nghĩa tập hợp hàng để chèn vào bảng câu lệnh INSERT hay CREATE TABLE Định nghĩa hay nhiều giá trị để gán cho hàng đã tồn tại câu lệnh UPDATE ChươngTruyvấn 5-4 Truyvấn 5.1 Định nghĩa Một số quy tắc cặp dấu ngoặc đơn () bên phải điều kiện so sánh Mệnh đề ORDER BY câu lệnh truyvấn không cần thiết trừ chúng ta thực phân tích top-n Sử dụng phép toán ChươngTruyvấn 5-5 Truyvấn 5.1 Định nghĩa Trong mệnh đề WHERE Ví dụ Tìm nhân viên làm 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ươngTruyvấn 5-6 Truyvấn 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 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ươngTruyvấn 5-7 Truyvấn 5.2 Truyvấn hàng đơn trả hàng từ câu lệnh SELECT 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ươngTruyvấn 5-8 Truyvấn 5.2 Truyvấn hàng đơn Chú ý: Một số lỗi thường gặp Câu lệnh trả nhiều hàng Câu lệnh không trả hàng Các phép toán thường dùng Toán tử Diễn giải = Bằng > Lớn >= Lớn hoặc < Nhỏ (SELECT AVG(salary) FROM Emp WHERE deptid = outer.dept_id); ChươngTruyvấn - 18 Truyvấn 5.5 Truyvấn tương quan Tương quan UPDATE cập nhật hàng bảng dựa sở hàng từ bảng khác UPDATE table1 alias1 SET col = (SELECT expression FROM table2 alias2 WHERE alias1.col = alias2.co); ChươngTruyvấn - 19 Truyvấn 5.5 Truyvấn tương quan Tương quan UPDATE Ví dụ Cập nhật liệu cột Deptid 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ươngTruyvấn - 20 Truyvấn 5.5 Truyvấn tương quan Tương quan DELETE xóa hàng bảng dựa sở 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ươngTruyvấn - 21 Truyvấn 5.5 Truyvấn tương quan Tương quan DELETE Ví dụ: Xóa hàng bảng EMP mà hàng tồn tại bảng EMP_HISTORY DELETE FROM Emp E WHERE emp_id = (SELECT emp_id FROM emp_history WHERE emp_id = E.emp_id); ChươngTruyvấn - 22 Truyvấn 5.6 Truyvấn phân cấp bảng có thể thể cấu trúc hình nhờ truyvấn phân cấp SELECT [LEVEL], column, expr FROM table [WHERE condition(s)] [START WITH condition(s)] [CONNECT BY PRIOR condition(s)]; ChươngTruyvấn - 23 Truyvấn 5.6 Truyvấn phân cấp Trong đó: Cột giả LEVEL cho biết cấp mẫu tin hay cấp nút quanhệ thừa kế START WITH Xác định điểm đầu hình (bắt buộc) CONNECT BY PRIOR Chỉ định cột định hướng mối liên hệ hình (bắt buộc) ChươngTruyvấn - 24 Truyvấn 5.6 Truyvấn phân cấp Ví dụ: Hiển thị danh sách người quản lý bắt đầu với nhân viên tên ‘King’ (Thứ tự 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ươngTruyvấn - 25 Truyvấn 5.6 Truyvấn phân cấp Ví dụ: Lập báo cáo hiển thị cấp quản lý công ty, bắt đầu từ cấp cao 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 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ươngTruyvấn - 26 Truyvấn 5.6 Truyvấn phân cấp ChươngTruyvấn - 27 Truyvấn Câu hỏi tập Trả lời câu hỏi phần 6.7 giáo trình Thực hành viết câu lệnh truyvấn phần tập Chuẩn bị nội dung chươngChươngTruyvấn - 28 .. .Truy vấn 5. 1 Định nghĩa 5. 2 Truy vấn hàng đơn 5. 3 Truy vấn nhiều hàng 5. 4 Truy vấn nhiều cột 5. 5 Truy vấn tương quan 5. 6 Truy vấn phân cấp Chương Truy vấn 5- 2 Truy vấn 5. 1 Định nghĩa... org_chart FROM Emp START WITH ename='King' CONNECT BY PRIOR emp_id=manager_id Chương Truy vấn - 26 Truy vấn 5. 6 Truy vấn phân cấp Chương Truy vấn - 27 Truy vấn Câu hỏi tập Trả lời câu hỏi phần... alias2 WHERE alias1.col = alias2.co); Chương Truy vấn - 19 Truy vấn 5. 5 Truy vấn tương quan Tương quan UPDATE Ví dụ Cập nhật liệu cột Deptid bang Emp dựa vào bảng Dept UPDATE Emp e SET deptid