Bài giảng Cơ sở dữ liệu - Chương 5: Ngôn ngữ truy vấn có cấu trúc - Trịnh Hoàng Nam

Liệt kê tên, tuổi, mức lương của các nhân viên trong phòng Kinh doanh  Liệt kê các dự án do phòng Kinh doanh quản lý  Liệt kê tên, tuổi của các nhân viên đã từng tham gia các dự án do phòng Kinh doanh quản lý

pdf23 trang | Chia sẻ: huongthu9 | Lượt xem: 455 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở dữ liệu - Chương 5: Ngôn ngữ truy vấn có cấu trúc - Trịnh Hoàng Nam, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
11/22/2018 1 NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC CƠ SỞ DỮ LIỆU Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u NỘI DUNG • Định nghĩa dữ liệu và các kiểu dữ liệu1 • Các ràng buộc cơ bản trong SQL2 • Các câu lệnh thay đổi lược đồ cơ sở dữ liệu3 • Các câu truy vấn cơ bản trong SQL4 • Các câu truy vấn phức tạp5 • Các lệnh cập nhật dữ liệu trong SQL6 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u ĐỊNH NGHĨA DỮ LIỆU & CÁC KIỂU DỮ LIỆU • Tập hợp các bảng dữ liệu phục vụ cho một ứng dụng Định nghĩa lược đồ CSDL trong SQL • Bảng dữ liệu • Ràng buộc toàn vẹn • Khung nhìn • Thành phần của lược đồ CSDL Câu lệnh tạo lược đồ CSDL CREATE SCHEMA COMPANY AUTHORIZATION SA 11/22/2018 2 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u ĐỊNH NGHĨA DỮ LIỆU & CÁC KIỂU DỮ LIỆU • Quan hệ và các bộ dữ liệu của nó được tạo và lưu trữ vật lý trong tệp dữ liệu của DBMS Bảng dữ liệu trong SQL • Các thuộc tính • Miền giá trị của từng thuộc tính • Các ràng buộc toàn vẹn trên bảng • Thành phần của bảng dữ liệu Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u ĐỊNH NGHĨA DỮ LIỆU & CÁC KIỂU DỮ LIỆU • Cho phép có các bộ trùng nhau Bảng dữ liệu trong SQL Câu lệnh tạo bảng dữ liệu trong SQL CREATE TABLE tên_bảng () Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u ĐỊNH NGHĨA DỮ LIỆU & CÁC KIỂU DỮ LIỆU • Kiểu dữ liệu số • Kiểu dữ liệu chuỗi ký tự • Kiểu dữ liệu chuỗi bit • Kiểu dữ liệu Boolean • Kiểu dữ liệu Datetime Các kiểu dữ liệu trong SQL 11/22/2018 3 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u ĐỊNH NGHĨA DỮ LIỆU & CÁC KIỂU DỮ LIỆU Ví dụ về lệnh tạo bảng dữ liệu Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Yêu cầu một thuộc tính không được phép có giá trị là null • Một thuộc tính là thành phần của khóa chính thì mặc nhiên là not null Ràng buộc NOT NULL Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Giá trị được sử dụng trong trường hợp bộ mới thêm vào nhận giá trị null tại thuộc tính được khai báo là mặc định Giá trị mặc định Ví dụ 11/22/2018 4 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Giá trị của một thuộc tính phải nằm trong miền giá trị của thuộc tính đó Ràng buộc miền giá trị Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Hai bộ dữ liệu trong quan hệ không thể có giá trị bằng nhau tại (các) thuộc tính của khóa • Quan hệ có thể có nhiều khóa, gồm một khóa chính và nhiều khóa phụ (duy nhất) Ràng buộc khóa trong SQL Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Một giá trị muốn xuất hiện trong khung cảnh này cần phải xuất hiện trong một khung cảnh khác • Thuộc tính tham chiếu đi là khóa ngoại, thuộc tính được tham chiếu tới phải là khóa (chính hoặc phụ) Ràng buộc tham chiếu trong SQL Ví dụ 11/22/2018 5 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Tên tường minh của ràng buộc toàn vẹn rất hữu ích khi có nhu cầu muốn chỉnh sửa hoặc xóa các ràng buộc hiện hữu Đặt tên cho ràng buộc toàn vẹn trong SQL Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LOẠI RÀNG BUỘC TOÀN VẸN DỮ LIỆU • Ràng buộc liên quan đến các giá trị thành phần của từng bộ dữ liệu được xét Ràng buộc toàn vẹn trên bộ trong SQL Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU LỆNH THAY ĐỔI LƯỢC ĐỒ CƠ SỞ DỮ LIỆU • Xóa toàn bộ dữ liệu trong bảng cùng với lược đồ của bảng đó • Việc xóa bảng chỉ thành công khi không nó không được tham chiếu tới bởi bất kỳ bảng nào khác Lệnh xóa bảng dữ liệu trong SQL Ví dụ 11/22/2018 6 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU LỆNH THAY ĐỔI LƯỢC ĐỒ CƠ SỞ DỮ LIỆU • Thay đổi cấu trúc bảng dữ liệu bằng cách thêm mới, sửa, xóa thuộc tính, ràng buộc toàn vẹn, Lệnh sửa cấu trúc bảng dữ liệu trong SQL Ví dụ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL Phát biểu Ví dụ SELECT FROM WHERE SELECT EName, ESalary FROM EMPLOYEE WHERE dNum=1 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL SQL vs Đại số quan hệ Ví dụ 1 SELECT L FROM R WHERE C SELECT EName, ESalary FROM EMPLOYEE WHERE dNum=1 EName, ESalarydNum = 1 (EMPLOYEE) L C (R) Điều kiện chọn 11/22/2018 7 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Cho biết mã số và tên các dự án do phòng Kinh doanh quản lý Ví dụ 2 SELECT FROM WHERE PROJECT, DEPARTMENT AND DName = N’Phòng Kinh doanh’ DNumber = dNum PNumber, PName Điều kiện chọn Điều kiện kết Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Cho biết họ tên nhân viên và họ tên của người trực tiếp quản lý anh ta Ví dụ 3 SELECT FROM WHERE EMPLOYEE, EMPLOYEE supervisorSSN = ESSN EName, EName ? Nhân viên đang xét Người trực tiếp quản lý anh ta Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Cho biết họ tên nhân viên và họ tên của người trực tiếp quản lý anh ta Ví dụ 4 SELECT FROM WHERE EMPLOYEE e, EMPLOYEE s e.supervisorSSN = s.ESSN e.EName, s.EName 11/22/2018 8 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Với mỗi dự án tại ‘TP. Hồ Chí Minh’, liệt kê số hiệu dự án, số hiệu đơn vị quản lý dự án, và tên, mức lương của trưởng đơn vị quản lý dự án Ví dụ 5 SELECT FROM WHERE PROJECT p, DEPARTMENT d, EMPLOYEE e p.DNum = d.DNumber e.EName, s.EName AND mgrSSN = ESSN AND Location = N'TP. Hồ Chí Minh' Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Chỉ áp dụng trong trường hợp hai quan hệ khả hợp • Bao gồm phép hợp (UNION), phép giao (INTERSECT) và phép trừ (EXCEPT) SQL và các phép toán tập hợp • Tìm các nhân viên tham gia cả hai dự án số 1 và số 2 Ví dụ 6 SELECT FROM WHERE EMPLOYEE e, WORKSON w e.ESSN=w.ESSN AND w.PNum=1 AND w.PNum=2 e.EName Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Tìm các nhân viên tham gia cả hai dự án số 1 và số 2 Ví dụ 6 (tt) SELECT FROM WHERE EMPLOYEE e, WORKSON w e.ESSN=w.ESSN AND w.PNum=1 e.EName SELECT FROM WHERE EMPLOYEE e, WORKSON w e.ESSN=w.ESSN AND w.PNum=2 e.EName INTERSECT 11/22/2018 9 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Toán tử LIKE và NOT LIKE • Ký tự đặc biệt _ và % SQL và phép toán so sánh chuỗi • Liệt kê các nhân viên có tên là Anh Ví dụ 7 SELECT FROM WHERE EMPLOYEE EName LIKE N‘%Anh’ * Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN CƠ BẢN TRONG SQL • Sử dụng mệnh đề ORDER BY • Sắp xếp tăng dần (ASC), giảm dần (DESC) SQL và phép sắp xếp các bộ dữ liệu • Liệt kê các nhân viên trong phòng số 1 theo thứ tự giảm dần của lương Ví dụ 8 SELECT FROM WHERE ORDER BY EMPLOYEE dNum = 5 * ESalary DESC Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Null là giá trị đặc biệt, không phải là hằng số, mà là giá trị không biết • Các phép toán số học liên quan tới Null cho giá trị là Null • Các phép toán so sánh liên quan tới Null cho giá trị là Unknown • Phép toán so sánh IS NULL và IS NOT NULL SQL và giá trị NULL • Liệt kê danh sách nhân viên không có lãnh đạo trực tiếp Ví dụ 9 SELECT FROM WHERE EMPLOYEE supervisorSSN IS NULL * 11/22/2018 10 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Kết quả trả về của câu truy vấn này được sử dụng trong một mệnh đề của câu truy vấn khác • Kết quả trả về của một câu truy vấn có thể là một giá trị đơn hoặc một quan hệ với nhiều bộ, nhiều thuộc tính • Một số toán tử so sánh: IN, NOT IN, ANY, SOME, ALL Truy vấn lồng trong SQL Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Cho biết danh sách các dự án có sự tham gia của nhân viên tên là ‘Lê Duy Anh’ Ví dụ 10 SELECT FROM WHERE PROJECT p, EMPLOYEE e, WORKSON w p.ProNum = w.PNum AND w.ESSN = e.ESSN AND e.EName = N’Lê Duy Anh’ p.* ? Độ phức tạp của truy vấn Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Cho biết danh sách các dự án có sự tham gia của nhân viên tên là ‘Lê Duy Anh’ Ví dụ 10 (tt) ? Độ phức tạp của truy vấn (SELECT w.PNum FROM WORKSON w, EMPLOYEE e WHERE w.ESSN=e. ESSN AND e.EName = N’Lê Duy Anh’) SELECT * FROM PROJECT WHERE PNumber IN 11/22/2018 11 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Cho biết danh sách các dự án có sự tham gia của nhân viên tên là ‘Lê Duy Anh’ Ví dụ 10 (tt) ? Độ phức tạp của truy vấn (SELECT w.PNum FROM WORKSON w WHERE w.ESSN IN ) SELECT * FROM PROJECT WHERE PNumber IN (SELECT e.ESSN FROM EMPLOYEE e WHERE e.EName = N’’) Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Được sử dụng để kiểm tra kết quả của câu truy vấn lồng xem có rỗng hay không Hàm EXISTS trong SQL • Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào của công ty Ví dụ 11 SELECTEName FROM EMPLOYEE E WHERE NOT EXISTS (SELECT * FROM WOKRSON WHERE E.ESSN=ESSN) Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Được sử dụng để kiểm tra kết quả của câu truy vấn lồng xem có rỗng hay không • Có thể được viết lại bằng cách sử dụng toán tử so sánh IN Hàm EXISTS trong SQL • Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào của công ty Ví dụ 11 SELECTEName FROM EMPLOYEE WHERE ESSN NOT IN (SELECT ESSN FROM WOKRSON) 11/22/2018 12 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Được sử dụng để đổi tên cột hiển thị trong phần kết quả của câu truy vấn mà không ảnh hưởng đến bản thân các quan hệ trong mệnh đề WHERE của câu truy vấn đó Toán tử AS trong SQL Ví dụ 12 SELECTE.EName AS ‘Tên nhân viên’, S.EName AS ‘Tên lãnh đạo trực tiếp’ FROM EMPLOYEE E, EMPLOYEE S WHERE E.supervisorSSN=S.ESSN Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Phép kết thể hiện thông qua việc sử dụng nhiều quan hệ trong mệnh đề FROM và các điều kiện kết tương ứng trong mệnh đề WHERE • Phép kết được thực hiện ngay trong mệnh đề FROM thông qua việc sử dụng các toán tử INNER JOIN, OUTER JOIN đi kèm điều kiện kết tương ứng Bảng kết trong SQL Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Hiển thị tên và mức lương của các nhân viên trong phòng ‘Nghiên cứu’ • Sử dụng phép nhân chéo và phép chọn: • Sử dụng bảng kết: Ví dụ 13 SELECTEName, ESalary FROM EMPLOYEE, DEPARTMENT WHERE DNum = DNumber AND DName=N’Phòng Nghiên cứu’ SELECTEName, ESalary FROM EMPLOYEE JOIN DEPARTMENT ON DNum = DNumber WHERE DName=N’Phòng Nghiên cứu’ 11/22/2018 13 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL Ví dụ 13 (tt) SELECTEName, ESalary FROM EMPLOYEE, DEPARTMENT WHERE DNum = DNumber AND DName=N’Phòng Nghiên cứu’ SELECTEName, ESalary FROM EMPLOYEE JOIN DEPARTMENT ON DNum = DNumber WHERE DName=N’Phòng Nghiên cứu’ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi nhân viên hãy hiển thị tên của người đó và tên của lãnh đạo trực tiếp của họ • Sử dụng phép nhân chéo và phép chọn: • Sử dụng bảng kết: Ví dụ 14 SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e, EMPLOYEE s WHERE e.supervisorSSN = s.ESSN SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL Ví dụ 14 (tt) SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e, EMPLOYEE s WHERE e.supervisorSSN = s.ESSN SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN 11/22/2018 14 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi nhân viên hãy hiển thị tên của người đó và tên của lãnh đạo trực tiếp của họ • Tuy nhiên, trong bảng EMPLOYEE có tất cả 21 bộ với 15 bộ có giá trị khác NULL tại thuộc tính supervisor ứng với 15 bộ trả về bởi câu truy vấn • Làm thế nào để hiển thị hết đầy đủ 21 bộ của quan hệ EMPLOYEE theo yêu cầu đề bài? Ví dụ 14 (tt) SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi nhân viên hãy hiển thị tên của người đó và tên của lãnh đạo trực tiếp của họ • Sử dụng bảng kết trong: • Sử dụng bảng kết ngoài Ví dụ 14 (tt) SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e LEFT JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL Ví dụ 14 (tt) SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’ FROM EMPLOYEE e LEFT JOIN EMPLOYEE s ON e.supervisorSSN = s.ESSN 11/22/2018 15 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi dự án tại ‘TP. Hồ Chí Minh’, liệt kê số hiệu dự án, số hiệu đơn vị quản lý dự án, và tên, ngày sinh của trưởng đơn vị quản lý dự án Ví dụ 15 SELECT PNumber, DNumber, EName, EBirthdate FROM ((PROJECT JOIN DEPARTMENT ON dNum=DNumber) JOIN EMPLOYEE ON mgrSSN=ESSN) WHERE PLocation = N’TP Hồ Chí Minh’ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Các hàm số học được thực hiện theo từng nhóm • Các hàm MAX, MIN, AVG, SUM thực hiện trên một thuộc tính số học • Hàm COUNT thực hiện trên một hoặc nhiều thuộc tính Toán tử AS trong SQL • Cho biết tổng lương, lương trung bình của nhân viên trong công ty Ví dụ 16 SELECTSUM(ESalary) AS ‘Tổng lương’, AVG(ESalary) AS ‘Lương trung bình’ FROM EMPLOYEE Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Cho biết tổng lương, mức lương cao nhất, mức lương thấp nhất, và của các nhân viên tham gia dự án có mã số là 1 Ví dụ 17 SELECTSUM(E.ESalary), MAX(E.ESalary), MIN(E.ESalary) FROM (EMPLOYEE E JOIN WORKSON W ON E.ESSN=W.ESSN) WHERE W.PNUM = 1 11/22/2018 16 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Gom các bộ trong quan hệ thành từng nhóm theo một (số) thuộc tính • Các bộ có giá trị bằng nhau tại (các) thuộc tính gom nhóm sẽ được xếp ở gần nhau • Điều kiện để chọn các nhóm được đặt trong mệnh đề HAVING • Các hàm kết hợp được áp dụng cho các nhóm sau khi đã gom GROUP BY và HAVING trong SQL Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi phòng ban hãy cho biết mã số phòng ban, số nhân viên thuộc quyền quản lý của phòng ban đó, và mức lương trung bình của họ Ví dụ 18 SELECT DNum, COUNT(*), AVG(ESalary) FROM EMPLOYEE GROUP BY DNum Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi dự án, cho biết mã số dự án, tên dự án, số nhân viên tham gia dự án đó Ví dụ 19 SELECT p. PNumber, p. PName, COUNT(*) FROM PROJECT p, WORKSON w WHERE p.PNumber = w.PNum GROUP BY p. PNumber, p.PName 11/22/2018 17 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL • Với mỗi dự án có nhiều hơn hai nhân viên tham gia, cho biết mã số dự án, tên dự án, và số nhân viên tham gia dự án đó Ví dụ 20 SELECT p.PNumber, p.PName, COUNT(*) FROM PROJECT p, WORKSON w WHERE p.PNumber = w.PNum GROUP BY p.PNumber, p.PName HAVING COUNT(*) > 2 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC CÂU TRUY VẤN PHỨC TẠP TRONG SQL Công thức chung của câu truy vấn SQL SELECT FROM [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Thêm mới một (số) bộ dữ liệu vào quan hệ • Bộ dữ liệu với các giá trị được liệt kê cùng trình tự với các thuộc tính tương ứng được xác định trong câu lệnh tạo quan hệ. • Bắt buộc phải cung cấp giá trị đối với các thuộc tính được khai báo là khác NULL và không có giá trị mặc định Lệnh INSERT 11/22/2018 18 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Thêm mới một bộ dữ liệu vào quan hệ EMPLOYEE Ví dụ 21 INSERT INTO EMPLOYEE VALUES (‘30121050004’,N’Mai Duy An’, 30000, ‘F’, ’17/02/1968’, ‘30121050037’, 1, ‘15/06/2010’) INSERT INTO EMPLOYEE (ESSN, EName, DNum) VALUES (‘30121050004’, N‘Mai Duy An’,1) Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Xóa một (số) bộ thỏa mãn điều kiện được xác định trong mệnh đề WHERE ra khỏi quan hệ • Xóa tất cả các bộ ra khỏi quan hệ khi không có mệnh đề WHERE trong câu lệnh Lệnh DELETE • Câu lệnh sau đây xóa các thân nhân của nhân viên có mã số ‘30121050180’ Ví dụ 21 DELETEFROM DEPENDENT WHERE ESSN = ‘30121050180’ Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Xóa một (số) bộ thỏa mãn điều kiện được xác định trong mệnh đề WHERE ra khỏi quan hệ • Xóa tất cả các bộ ra khỏi quan hệ khi không có mệnh đề WHERE trong câu lệnh Lệnh DELETE • Câu lệnh sau đây xóa tất cả thân nhân của các nhân viên trong phòng có mã số 1 Ví dụ 22 DELETEFROM DEPENDENT WHERE ESSN IN (SELECT ESSN FROM EMPLOYEE WHERE DNum=1) 11/22/2018 19 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Thay đổi giá trị một (số) thuộc tính của một (số) bộ thỏa mãn điều kiện được xác định trong mệnh đề WHERE • Thay đổi tất cả các bộ trong quan hệ khi không có mệnh đề WHERE trong câu lệnh Lệnh UPDATE • Thay đổi địa điểm và đơn vị quản lý của dự án có mã số là 10 với các giá trị mới lần lượt là ‘Hà Nội’ và 5 Ví dụ 23 UPDATE PROJECT SET PLocation = N’Hà Nội’, DNum=5 WHERE PNumber = 10 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u CÁC LỆNH CẬP NHẬT TRONG SQL • Thay đổi giá trị một (số) thuộc tính của một (số) bộ thỏa mãn điều kiện được xác định trong mệnh đề WHERE • Thay đổi tất cả các bộ trong quan hệ khi không có mệnh đề WHERE trong câu lệnh Lệnh UPDATE • Tăng lương cho mọi nhân viên của phòng Nghiên cứu lên 10% lương hiện tại Ví dụ 23 UPDATEEMPLOYEE SET ESalary = ESalary *1.1 WHERE DNum IN (SELECT DNumber FROM DEPARTMENT WHERE DName = N’Phòng Nghiên cứu’) Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP • Hotel(hotelNo, hotelName, city) • Room(roomNo, hotelNo, type, price) • Booking(hotelNo, guestNo, dateFrom, dateTo, roomNo) • Guest(guestNo, guestName, guestAddress) Cơ sở dữ liệu • Liệt kê danh sách tất cả khách sạn trong hệ thống. • Liệt kê danh sách phòng đơn có giá từ 300.000 đến 450.000 • Liệt kê số lượng phòng đơn của từng khách sạn • Liệt kê giá và loại phòng của những phòng còn trống tại khách sạn Yasaka trong khoảng thời gian từ 01/09/2011 đến 08/09/2011. Yêu cầu 11/22/2018 20 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP • Product(maker, model, type) • PC(model, speed, ram, hd, price) • Laptop(model, speed, ram, hd, screen, price) • Printer(model, color, type, price) Cơ sở dữ liệu mẫu • Liệt kê các máy tính xách tay có RAM từ 2.0GB trở lên • Liệt kê các máy in laser trắng đen • Liệt kê các nhà cung cấp máy tính để bàn có ổ cứng dưới 160GB Các yêu cầu truy vấn Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP • Product(maker, model, type) • PC(model, speed, ram, hd, price) • Laptop(model, speed, ram, hd, screen, price) • Printer(model, color, type, price) Cơ sở dữ liệu mẫu • Liệt kê những sản phẩm (mã sản xuất, giá) do công ty SS sản xuất • Liệt kê những công ty sản xuất máy tính để bàn nhưng không sản xuất máy tính xách tay • Liệt kê những cặp máy tính để bàn có cùng tốc độ xử lý và kích thước ổ cứng Các yêu cầu truy vấn Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP • Product(maker, model, type) • PC(model, speed, ram, hd, price) • Laptop(model, speed, ram, hd, screen, price) • Printer(model, color, type, price) Cơ sở dữ liệu mẫu • Liệt kê những công ty sản xuất máy tính, nhưng không sản xuất máy tính có tốc độ dưới 1.6GHz • Liệt kê những công ty sản xuất ra ít nhất ba sản phẩm máy tính để bàn có tốc độ xử lý khác nhau • Liệt kê những máy để bàn có tốc độ xử lý nhanh nhất Các yêu cầu truy vấn 11/22/2018 21 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê tất cả nhân viên nữ trong công ty  Liệt kê tất cả nhân viên nữ có mức lương trên 30.000  Liệt kê tất cả nhân viên nữ ở độ tuổi từ 25 đến 40  Liệt kê tất cả nhân viên nữ vừa được tuyển dụng trong năm nay DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê tên, tuổi của các nhân viên có từ 5 năm kinh nghiệm trở lên  Liệt kê tên, số năm công tác của các nhân viên có mức lương trên 45.000 DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê các nhân viên đã từng tham gia cùng dự án với nhân viên có mã số 001  Liệt kê các nhân viên chưa từng tham gia dự án do đơn vị số 1 quản lý DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours 11/22/2018 22 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê các dự án không có nhân viên phòng số 1 tham gia  Liệt kê các nhân viên cùng đơn vị với nhân viên mã số 001 nhưng chưa từng tham gia cùng dự án với người đó DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê tên, tuổi, mức lương của các nhân viên trong phòng Kinh doanh  Liệt kê các dự án do phòng Kinh doanh quản lý  Liệt kê tên, tuổi của các nhân viên đã từng tham gia các dự án do phòng Kinh doanh quản lý DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Liệt kê tên, tuổi, mức lương, đơn vị công tác của các trưởng đơn vị  Liệt kê tên, tuổi, mức lương của các nhân viên trong phòng Kinh doanh nhưng chưa từng tham gia bất kỳ dự án do phòng này quản lý DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours 11/22/2018 23 Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Cho biết tên đơn vị, tên dự án do đơn vị đó quản lý (nếu có)  Cho biết tên đơn vị, tên trưởng đơn vị, tên dự án do đơn vị đó quản lý (nếu có) DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours Ths. Trịnh Hoàng Nam, namth@buh.edu.vn C ơ s ở d ữ l i ệ u – T ổ n g q u a n h ệ t h ố n g c ơ s ở d ữ l i ệ u BÀI TẬP TỔNG HỢP  Cho biết tên, mã số và mức lương trung bình của mỗi đơn vị  Cho biết tên, mã số và số giờ tham gia dự án của từng nhân viên DEPARTMENT DNumber DName mgrSSN mgrStartdate DEPENDENT DName ESSN DSex DBirthdate DRelationship DEPLOCATION DNum DLocation EMPLOYEE ESSN EName ESalary ESex EBirthdate EStartdate DNum supervisorSSN PROJECT PNumber PName PLocation DNum WORKSON ESSN PNum workHours

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_co_so_du_lieu_chuong_5_ngon_ngu_truy_van_co_cau_tr.pdf