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 287 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

Nội dung

TRUY VẤN CON - Lý thuyết: tiết - Thực hành: tiết Chương Truy vấn 5-1 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 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ương Truy vấn 5-3 Truy vấ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ương Truy vấn 5-4 Truy vấ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 truy vấ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ương Truy vấn 5-5 Truy vấ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ương Truy vấn 5-6 Truy vấn 5.1 Định nghĩa  Trong mệnh đề HAVING Ví dụ Tìm phòng 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ương Truy vấn 5-7 Truy vấn 5.2 Truy vấn hàng đơn  trả hàng từ câu lệnh SELECT Ví dụ Tìm nhân viên 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 Truy vấn 5-8 Truy vấn 5.2 Truy vấ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ương Truy vấn - 18 Truy vấn 5.5 Truy vấ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ươ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 = (SELECT deptid FROM Dept d WHERE e.deptid = d.deptid); Chương Truy vấn - 20 Truy vấn 5.5 Truy vấ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ương Truy vấn - 21 Truy vấn 5.5 Truy vấ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ương Truy vấn - 22 Truy vấn 5.6 Truy vấn phân cấp bảng thể thể cấu trúc hình 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 Truy vấn - 23 Truy vấn 5.6 Truy vấn phân cấp Trong đó: Cột giả LEVEL cho biết cấp mẫu tin hay cấp nút quan hệ 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ương Truy vấn - 24 Truy vấn 5.6 Truy vấ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ương Truy vấn - 25 Truy vấn 5.6 Truy vấ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ươ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 6.7 giáo trình Thực hành viết câu lệnh truy vấn phần tập   Chuẩn bị nội dung chương Chương Truy vấ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

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