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: Chương III - ThS. Lương Thị Ngọc Khánh

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

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

Bài giảng Cơ sở dữ liệu - Chương III: Ngôn ngữ SQL nâng cao trình bày về câu truy vấn dữ liệu phức tạp; bảng ảo view; hàm – thủ tục - trigger và phần bài tập củng cố kiến thức ở cuối chương. Đây là bài giảng do ThS. Lương Thị Ngọc Khánh thực hiện. Mời bạn đọc cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cơ sở dữ liệu: Chương III - ThS. Lương Thị Ngọc Khánh

  1. CƠ SỞ DỮ LIỆU GV: ThS. Lương Thị Ngọc Khánh Email: ltnkhanh@it.tdt.edu.vn Web: it.tdt.edu.vn/~ltnkhanh
  2. Chƣơng III NGÔN NGỮ SQL NÂNG CAO Câu truy vấn dữ liệu phức tạp Bảng ảo View Hàm – thủ tục - trigger Bài tập
  3. Cơ sở dữ liệu ví dụ • CSDL Quản lý đề án: – NhanVien(manv, honv, tenlot, tennv, ngaysinh, diachi, phai, luong, manql, maphong) – PhongBan(maphong, tenphong, trphong, ngnhanchuc) – DDPhong(maphong, diadiem) – DeAn(tenda, mada, ddiemda, maphong) – PhanCong(manv, mada, thoigian) – ThanNhan(manv, tentn, phai, ngaysinh, quanhe) 01-2014 504009 – Ngôn ngữ SQL nâng cao 3
  4. Truy vấn lồng • Các câu lệnh SELECT có thể lồng nhau ở nhiều mức • Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic • Câu truy vấn con thường trả về một tập các giá trị 01-2014 504009 – Ngôn ngữ SQL nâng cao 4
  5. Truy vấn lồng (tt) • Cú pháp: SELECT FROM WHERE ( SELECT FROM WHERE ) 01-2014 504009 – Ngôn ngữ SQL nâng cao 5
  6. Truy vấn lồng (tt) • Mệnh đề WHERE của câu truy vấn cha – – So sánh tập hợp thường đi cùng với một số toán tử • IN, NOT IN • ALL • ANY hoặc SOME – Kiểm tra sự tồn tại • EXISTS • NOT EXISTS 01-2014 504009 – Ngôn ngữ SQL nâng cao 6
  7. Truy vấn lồng (tt) – Có 2 loại truy vấn lồng: • Lồng phân cấp – Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các bảng trong mệnh đề FROM ở truy vấn cha – Câu truy vấn con sẽ được thực hiện trước, 1 lần • Lồng tương quan – Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các bảng trong mệnh đề FROM ở truy vấn cha – Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha 01-2014 504009 – Ngôn ngữ SQL nâng cao 7
  8. Truy vấn lồng (tt) – Ví dụ truy vấn lồng phân cấp: SELECT MANV, TENNV FROM NHANVIEN, DDPhong WHERE DIADIEM = ‘TP HCM’ AND phong = maphong – Tương đương với câu truy vấn lồng sau: SELECT MANV, TENNV FROM NHANVIEN WHERE PHONG IN (SELECT MAPHONG FROM DDPHONG WHERE DIADIEM = ‘TP HCM’ ) 01-2014 504009 – Ngôn ngữ SQL nâng cao 8
  9. Truy vấn lồng (tt) • Ví dụ: Tìm những nhân viên không có thân nhân nào 01-2014 504009 – Ngôn ngữ SQL nâng cao 9
  10. Truy vấn lồng (tt) – Ví dụ truy vấn lồng tương quan: SELECT MANV, TENNV FROM NHANVIEN WHERE EXISTS ( SELECT * FROM PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG)  Câu truy vấn trên cho kết quả gì? Tương đương với câu truy vấn đơn giản nào? SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHONG=‘Nghien cuu’ AND PHONG=MAPHONG 01-2014 Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTTNgônTĐT 504009 – - ĐH ngữ SQL nâng cao 10
  11. Truy vấn lồng (tt) • Tìm nhân viên có người thân cùng tên và cùng giới tính với nhân viên đó 01-2014 Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTTNgônTĐT 504009 – - ĐH ngữ SQL nâng cao 11
  12. Truy vấn lồng (tt) • Tìm những nhân viên có lương lớn hơn lương của ít nhất một nhân viên phòng 4 • Tìm những nhân viên có lương lớn hơn lương của tất cả nhân viên phòng 4 01-2014 Ths. Lƣơng Thị Ngọc Khánh – Khoa CNTTNgônTĐT 504009 – - ĐH ngữ SQL nâng cao 12
  13. Truy vấn lồng – Nhận xét • IN – IN – Thuộc tính ở mệnh đề SELECT của truy vấn con phải có cùng kiểu dữ liệu với thuộc tính ở mệnh đề WHERE của truy vấn cha • EXISTS – Không cần có thuộc tính, hằng số hay biểu thức nào khác đứng trước – Không nhất thiết liệt kê tên thuộc tính ở mệnh đề SELECT của truy vấn con – Những câu truy vấn có = ANY hay IN đều có thể chuyển thành câu truy vấn có EXISTS 01-2014 504009 – Ngôn ngữ SQL nâng cao 13 13
  14. Hàm kết hợp và gom nhóm • Hàm kết hợp: – Được sử dụng trong mệnh đề SELECT – Có các hàm kết hợp sau: • COUNT – COUNT(*) đếm số dòng – COUNT() đếm số giá trị khác NULL của thuộc tính – COUNT(DISTINCT ) đếm số giá trị khác nhau và khác NULL của thuộc tính • MIN, MAX, SUM, AVG 01-2014 504009 – Ngôn ngữ SQL nâng cao 14
  15. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Tìm tổng lương, lương cao nhất, lương thấp nhất và lương trung bình của các nhân viên – Select sum(luong) as ‘tong luong’, min(luong) as ‘luong nho nhat’, max(luong) as ‘luong lon nhat’, avg(luong) as ‘luong tb’ From NhanVien – Cho biết số lượng nhân viên của phòng „Nghien cuu‟ 01-2014 504009 – Ngôn ngữ SQL nâng cao 15
  16. Hàm kết hợp và gom nhóm (tt) • Gom nhóm: – Nhóm các bộ có cùng giá trị ở một tập các thuộc tính lại với nhau – Cú pháp: SELECT FROM WHERE GROUP BY 01-2014 504009 – Ngôn ngữ SQL nâng cao 16
  17. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết số lượng nhân viên của từng phòng ban – Cho biết thông tin của những phòng ban có nhiều hơn 10 nhân viên 01-2014 504009 – Ngôn ngữ SQL nâng cao 17
  18. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Với mỗi nhân viên cho biết mã số, họ tên, số lượng đề án và tổng thời gian mà họ tham gia SELECT HONV, TENNV, COUNT(*) AS SL_DA,SUM(THOIGIAN) AS TONG_TG FROM PHANCONG, NHANVIEN WHERE MANVIEN=MANV GROUP BY MA_NVIEN, HONV, TENNV – Cho biết những nhân viên tham gia từ 2 đề án trở lên 01-2014 504009 – Ngôn ngữ SQL nâng cao 18
  19. Hàm kết hợp và gom nhóm (tt) • Cú pháp: SELECT FROM WHERE GROUP BY HAVING • Ví dụ: Cho biết những nhân viên tham gia từ 2 đề án trở lên 01-2014 504009 – Ngôn ngữ SQL nâng cao 19
  20. Hàm kết hợp và gom nhóm (tt) • Ví dụ: – Cho biết những phòng ban (TENPHONG) có lương trung bình của các nhân viên lớn lơn 20000 01-2014 504009 – Ngôn ngữ SQL nâng cao 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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