intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Cơ sở dữ liệu: SQL nâng cao - ThS. Trịnh Hoàng Nam

Chia sẻ: Ye Ye | Ngày: | Loại File: PDF | Số trang:9

83
lượt xem
9
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Cơ sở dữ liệu: SQL nâng cao trình bày những nội dung chính sau: Giá trị null, toán tử AS, truy vấn lồng, bảng kết trong SQL, bảng kết, các hàm thống kê trong SQL, mệnh đề gom nhóm. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cơ sở dữ liệu: SQL nâng cao - ThS. Trịnh Hoàng Nam

9/5/2016<br /> <br /> CƠ SỞ DỮ LIỆU<br /> SQL NÂNG CAO<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> GIÁ TRỊ NULL<br /> Định nghĩa<br /> • Null là giá trị đặc biệt, không phải là hằng số, mà là giá trị không<br /> biết<br /> Đặc trưng<br /> • Các phép toán số học liên quan tới Null cho giá trị là Null<br /> • Các phép toán so sánh liên quan tới Null cho giá trị là Unknown<br /> • Phép toán so sánh IS NULL và IS NOT NULL<br /> Ví dụ<br /> • Liệt kê danh sách nhân viên không có lãnh đạo trực tiếp<br /> SELECT *<br /> FROM<br /> EMPLOYEE<br /> WHERE supervisorSSN IS NULL<br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TOÁN TỬ AS<br /> Toán tử AS trong SQL<br /> • Được sử dụng để đổi tên cột hiển thị trong phần kết<br /> quả của câu truy vấn mà không ảnh hưởng đến bản<br /> thân các quan hệ trong mệnh đề WHERE của câu<br /> truy vấn đó<br /> Ví dụ<br /> • Liệt kê danh sách nhân viên và tên lãnh đạo trực tiếp<br /> SELECT E.EName AS ‘Tên nhân viên’,<br /> S.EName AS ‘Tên lãnh đạo trực tiếp’<br /> FROM EMPLOYEE E, EMPLOYEE S<br /> WHERE E.supervisorSSN=S.ESSN<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> 1<br /> <br /> 9/5/2016<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Định nghĩa<br /> • Câu lệnh truy vấn chứa câu lệnh truy vấn khác bên<br /> trong các thành phần của nó<br /> Đặc trưng<br /> • Kết quả trả về của câu truy vấn này được sử dụng<br /> trong một mệnh đề của câu truy vấn khác<br /> • Kết quả trả về của một câu truy vấn có thể là một giá<br /> trị đơn hoặc một quan hệ với nhiều bộ, nhiều thuộc<br /> tính<br /> • Một số toán tử so sánh: IN, NOT IN, ANY, SOME, ALL<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Ví dụ<br /> • Cho biết danh sách các dự án có sự tham gia của<br /> nhân viên tên là ‘Lê Duy Anh’<br /> SELECT<br /> <br /> p.*<br /> <br /> FROM<br /> <br /> PROJECT p, EMPLOYEE e, WORKSON w<br /> <br /> WHERE<br /> <br /> p.ProNum = w.PNum AND w.ESSN = e.ESSN<br /> AND e.EName = N’Lê Duy Anh’<br /> <br /> ?<br /> <br /> Độ phức tạp của truy vấn<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Ví dụ<br /> • Cho biết danh sách các dự án có sự tham gia của<br /> nhân viên tên là ‘Lê Duy Anh’<br /> SELECT *<br /> FROM PROJECT<br /> WHERE PNumber IN (SELECT w.PNum<br /> FROM<br /> WORKSON w, EMPLOYEE e<br /> WHERE w.ESSN=e. ESSN<br /> AND e.EName = N’Lê Duy Anh’)<br /> <br /> ?<br /> <br /> Độ phức tạp của truy vấn<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> 2<br /> <br /> 9/5/2016<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Ví dụ<br /> • Cho biết danh sách các dự án có sự tham gia của<br /> nhân viên tên là ‘Lê Duy Anh’<br /> SELECT *<br /> FROM PROJECT<br /> WHERE PNumber IN (SELECT w.PNum<br /> FROM<br /> WORKSON w<br /> WHERE w.ESSN IN (SELECT e.ESSN<br /> FROM<br /> EMPLOYEE e<br /> WHERE e.EName = N’…’)<br /> )<br /> <br /> ?<br /> <br /> Độ phức tạp của truy vấn<br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Hàm EXISTS trong SQL<br /> • Được sử dụng để kiểm tra kết quả của câu truy vấn lồng<br /> xem có rỗng hay không<br /> Ví dụ<br /> • Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào<br /> của công ty<br /> SELECT EName<br /> FROM EMPLOYEE E<br /> WHERE NOT EXISTS (SELECT *<br /> FROM WOKRSON<br /> WHERE E.ESSN=ESSN)<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> TRUY VẤN LỒNG<br /> Hàm EXISTS trong SQL<br /> • Được sử dụng để kiểm tra kết quả của câu truy vấn lồng xem<br /> có rỗng hay không<br /> • Có thể được viết lại bằng cách sử dụng toán tử so sánh IN<br /> Ví dụ<br /> • Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào<br /> của công ty<br /> SELECT EName<br /> FROM EMPLOYEE<br /> WHERE ESSN NOT IN (SELECT ESSN<br /> FROM WOKRSON)<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> 3<br /> <br /> 9/5/2016<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT TRONG SQL<br /> Giới thiệu<br /> • Phép kết thể hiện thông qua việc sử dụng<br /> nhiều quan hệ trong mệnh đề FROM và các<br /> điều kiện kết tương ứng trong mệnh đề<br /> WHERE<br /> • Phép kết được thực hiện ngay trong mệnh<br /> đề FROM thông qua việc sử dụng các toán<br /> tử INNER JOIN, OUTER JOIN đi kèm điều<br /> kiện kết tương ứng<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT<br /> Ví dụ<br /> • Hiển thị tên và mức lương của các nhân viên trong<br /> phòng ‘Nghiên cứu’<br /> • Sử dụng phép nhân chéo và phép chọn:<br /> SELECT EName, ESalary<br /> FROM EMPLOYEE, DEPARTMENT<br /> WHERE DNum = DNumber AND DName=N’Phòng Nghiên cứu’<br /> <br /> • Sử dụng bảng kết:<br /> SELECT EName, ESalary<br /> FROM EMPLOYEE JOIN DEPARTMENT ON DNum = DNumber<br /> WHERE DName=N’Phòng Nghiên cứu’<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT<br /> Ví dụ<br /> <br /> SELECT EName, ESalary<br /> FROM EMPLOYEE, DEPARTMENT<br /> WHERE DNum = DNumber<br /> AND DName=N’Phòng Nghiên cứu’<br /> <br /> SELECT EName, ESalary<br /> FROM EMPLOYEE JOIN DEPARTMENT<br /> ON DNum = DNumber<br /> WHERE DName=N’Phòng Nghiên cứu’<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> 4<br /> <br /> 9/5/2016<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT<br /> Ví dụ<br /> • Với mỗi nhân viên hãy hiển thị tên của người đó và<br /> tên của lãnh đạo trực tiếp của họ<br /> • Sử dụng phép nhân chéo và phép chọn:<br /> SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’<br /> FROM EMPLOYEE e, EMPLOYEE s<br /> WHERE e.supervisorSSN = s.ESSN<br /> <br /> • Sử dụng bảng kết:<br /> SELECT e.EName as ‘Employee’, s.EName as ‘Supervisor’<br /> FROM EMPLOYEE e JOIN EMPLOYEE s<br /> ON e.supervisorSSN = s.ESSN<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT<br /> Ví dụ<br /> <br /> SELECT e.EName as ‘Employee’,<br /> s.EName as ‘Supervisor’<br /> FROM EMPLOYEE e, EMPLOYEE s<br /> WHERE e.supervisorSSN = s.ESSN<br /> <br /> SELECT e.EName as ‘Employee’,<br /> s.EName as ‘Supervisor’<br /> FROM EMPLOYEE e JOIN EMPLOYEE s<br /> ON e.supervisorSSN = s.ESSN<br /> <br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> Cơ sở dữ liệu – Tổng quan hệ thống cơ sở dữ liệu<br /> <br /> BẢNG KẾT<br /> Ví dụ<br /> • Với mỗi nhân viên hãy hiển thị tên của người đó và<br /> tên của lãnh đạo trực tiếp của họ<br /> • Tuy nhiên, trong bảng EMPLOYEE có tất cả 21 bộ với<br /> 15 bộ có giá trị khác NULL tại thuộc tính supervisor<br /> ứng với 15 bộ trả về bởi câu truy vấn<br /> SELECT e.EName as ‘Employee’,<br /> s.EName as ‘Supervisor’<br /> FROM EMPLOYEE e JOIN EMPLOYEE s<br /> ON e.supervisorSSN = s.ESSN<br /> <br /> • Làm thế nào để hiển thị hết đầy đủ 21 bộ của quan hệ<br /> EMPLOYEE theo yêu cầu đề bài?<br /> Ths. Trịnh Hoàng Nam, namth@buh.edu.vn<br /> <br /> 5<br /> <br />
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2