Minh hoạt Đại số quan hệ và SQL song song

Danh sách mã, tên của các phòng ban có chủtrì đềán

tên là “SPX” mà không có chủtrì đềán tên là “SPY”.

KQ1 ← ∏PHONG(σTENDA=’SPX’DEAN) - ∏PHONG(σTENDA=’SPY’DEAN)

∏MAPB, TENPB (KQ1 PHONG = MAPB(PHONGBAN))

SELECT MAPB, TENPB

FROM PHONGBAN, DEAN

WHERE MAPB = PHONG AND TENDA = ‘SPX’ AND

MAPB NOT IN (SELECT PHONG

FROM DEAN

WHERE TENDA = ‘SPY’)

pdf15 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2639 | Lượt tải: 1download
Tóm tắt nội dung Minh hoạt Đại số quan hệ và SQL song song, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ADA = 5)} 
5. Hiệu: Cho ds các mã nhân viên có tham gia đề án số 4 mà không có tham gia đề 
án số 5. 
∏MANV (σMADA =4 (PHANCONG)) - ∏MANV (σMADA =5 (PHANCONG)) 
SELECT MANV 
FROM PHANCONG 
WHERE MADA =4 AND MANV NOT IN (SELECT MANV 
FROM PHANCONG 
WHERE MADA =5) 
6. Cho biết danh sách thể hiện mọi nhân viên đều tham gia tất cả các đề án. 
∏MANV(NHANVIEN) × ∏MADA (DEAN) 
SELECT MANV, MADA 
FROM NHANVIEN, DEAN 
7. Cho ds các nhân viên và thông tin phòng ban mà nhân viên đó trực thuộc. 
∏ MANV, HONV, TENLOT, TENNV, MAPB, TENPB (NHANVIEN ⋈ PHG = MAPB PHONGBAN) 
SELECT MANV, HONV, TENLOT, TENNV, MAPB, TENPB 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
8. Cho ds các phòng ban và địa điểm phòng ban. 
∏MAPB, TENPB, DIADIEM (PHONGBAN * DIADIEM_PHG) 
SELECT MAPB, TENPB, DIADIEM 
FROM PHONGBAN PB, DIADIEM_PHG DD 
WHERE PB.MAPB = DD.MAPB 
9. GÁN: 
KQ1 ← (PHONGBAN * DIADIEM_PHG) 
 KQ ← ∏MAPB, TENPB, DIADIEM ( KQ1) 
CREATE VIEW DDPHONG 
AS SELECT * 
FROM PHONGBAN PB, DIADIEM DD 
WHERE PB.MAPB = DD.MAPB 
SELECT MAPB, TENPB, DIADIEM 
FROM DDPHONG 
10. Cho biết có tất cả bao nhiêu nhân viên. 
ρSOLUONGNV(ℑCOUNT(*) (NHANVIEN)) 
KQ là 1 quan hệ có 1 cột (SOLUONGNV) và 1 dòng 
SELECT COUNT(*) AS SOLUONGNV 
FROM NHANVIEN 
11. Cho biết mỗi phòng ban có bao nhiêu nhân viên (MAPB, TENPB, SLNV). 
PHG ℑCOUNT(*) (NHANVIEN) là 1 quan hệ có 2 trường: PHG, COUNT(*) 
∏MAPB,TENPB, SLNV ( ρPHG, SLNV((PHG ℑCOUNT(*) (NHANVIEN))) ⋈ PHG = MAPB 
PHONGBAN ) 
SELECT PHG, TENPB, COUNT(*) AS SLNV 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
GROUP BY PHG, TENPB 
12. Cho biết tổng lương, số lượng nv, lương trung bình, lương bé nhất trong toàn 
công ty. 
ρTONGLUONG,SLNV, LUONGTB, MINLUONG, MAXLUONG (ℑSUM(LUONG), COUNT(*), AVG(LUONG), 
MIN(LUONG), MAX (LUONG) (NHANVIEN)) 
SELECT SUM(LUONG) AS TONGLUONG, COUNT(*) AS SLNV, 
AVG(LUONG) AS LUONGTB, MIN(LUONG) AS MINLUONG, MAX (LUONG) 
AS MAXLUONG 
FROM NHANVIEN 
13. Cho danh sách các nhân viên thuộc phòng ‘Nghiên cứu’ 
∏MANV, HONV, TENLOT, TENNV, PHAI (NHANVIEN ⋈ PHG = MAPB (σTENPB=’NGHIEN CUU’ (PHONGBAN))) 
SELECT MANV, HONV, TENLOT, TENNV, PHAI 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB AND TENPB = N‘Nghiên cứu’ 
14. Đối với từng nv, cho biết họ tên ngày sinh và tên của nv phụ trách trực tiếp nhân 
viên đó. 
∏NV1.MANV, NV1.HONV, NV1.TENLOT, NV1.TENNV, NV1.NGAYSINH, NV2.HONV, NV2.TENLOT, NV2.TENNV 
(ρNV1(NHANVIEN)) ⋈NV1.MANQL = NV2.MANV (ρNV2 (NHANVIEN)) 
SELECT NV1.MANV, NV1.HONV, NV1.TENLOT, NV1.TENNV, NV1.NGAYSINH, NV2.HONV, 
NV2.TENLOT, NV2.TENNV 
FROM NHANVIEN NV1, NHANVIEN NV2 
WHERE NV1.MANQL = NV2.MANV 
15. Ds nv thuộc phòng 5 có tham gia đề án tên là ‘Sản phẩm X’. 
∏ MANV, HONV, TENLOT, TENNV (((σPHG =5 NHANVIEN) ⋈ MANV = MA_NVIEN 
PHANCONG)) * (σTENDA= ‘SAN PHAM X’ DEAN)) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM NHANVIEN, PHANCONG PC, DEAN DA 
WHERE MANV = MA_NVIEN AND PC.MADA = DA.MADA AND PHG = 5 
AND TENDA = ‘San pham X’ 
16. Tương tự 5, thuộc phòng ‘nghiên cứu’ có tham gia đề án tên là ‘Sản phẩm X’. 
∏ MANV, HONV, TENLOT, TENNV (( NHANVIEN ⋈PHG = MAPHG (σTENPHG= ‘NGHIEN CUU’ 
PHONGBAN) ⋈ MANV = MA_NVIEN PHANCONG) * (σTENDA= ‘SAN PHAM X’ 
DEAN)) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM NHANVIEN, PHONGBAN, PHANCONG PC, DEAN DA 
WHERE PHG = MAPHG AND MANV = MA_NVIEN AND PC.MADA = 
DA.MADA AND TENPHG = ‘NGHIEN CUU’ AND TENDA = ‘San pham X’ 
17. Ds nhân viên có tham gia đề án. 
∏ MANV, HONV, TENLOT, TENNV (NHANVIEN ⋈ MANV = MA_NVIEN PHANCONG) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM NHANVIEN, PHANCONG 
WHERE MANV = MA_NVIEN 
18. Ds nhân viên không có tham gia đề án nào. 
∏ MANV, HONV, TENLOT, TENNV ((∏ MANV(NHANVIEN) - ∏ MA_NVIEN(PHANCONG)) * 
NHANVIEN) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM NHANVIEN 
WHERE MANV NOT IN (SELECT MA_NVIEN FROM PHANCONG) 
19. Mỗi nv tham gia bao nhiêu đề án với tổng thời gian là 
bao nhiêu. 
∏ MANV, HONV, TENLOT, TENNV ((ρMANV,SOLUONGDA, TONGTG (MA_NVIEN ℑCOUNT(*), 
SUM(THOIGIAN) (PHANCONG))) * NHANVIEN) 
SELECT MA_NVIEN, HONV, TENLOT, TENNV, COUNT(*) AS SOLUONGDA, 
SUM(THOIGIAN) AS TONGTG 
FROM PHANCONG, NHANVIEN 
WHERE MA_NVIEN = MANV 
GROUP BY MA_NVIEN, HONV, TENLOT, TENNV 
20. Ds nv có tham gia đề án tên là ‘Sản phẩm X ’ hoặc ‘Sản 
phẩm Y’. 
KQ1 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM X’ DEAN)) 
KQ2 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM Y’ DEAN)) 
∏ MANV, HONV, TENLOT, TENNV ((KQ1 ∪ KQ2 ) ⋈ MA_NVIEN = MANV NHANVIEN) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM DEAN DA, PHANCONG PC, NHANVIEN 
WHERE (TENDA = ‘SAN PHAM X’ OR TENDA = ‘SAN PHAM Y’) AND 
DA.MADA = PC.MADA AND MANV = MA_NVIEN 
21. Ds nv vừa có tham gia đề án tên ‘Sản phẩm X’ vừa có 
tham gia đề án ‘Sản phẩm Y’. 
KQ1 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM X’ DEAN)) 
KQ2 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM Y’ DEAN)) 
∏ MANV, HONV, TENLOT, TENNV ((KQ1 ∩ KQ2 ) ⋈ MA_NVIEN = MANV NHANVIEN) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM PHANCONG PC, DEAN DA, NHANVIEN 
WHERE PC.MADA = DA.MADA AND MA_NVIEN = MANV AND TENDA = 
‘SAN PHAM X’ AND MANV IN (SELECT MA_NVIEN 
FROM PHANCONG PC1, DEAN DA1 
WHERE PC1.MADA = DA1.MADA AND TENDA = ‘SAN PHAM Y’) 
22. Ds nv có tham gia đề án tên ‘Sản phẩm X’ mà không có 
tham gia đề án tên là ‘Sản phẩm Y’. 
KQ1 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM X’ DEAN)) 
KQ2 ← ∏ MA_NVIEN (PHANCONG * (σTENDA= ‘SAN PHAM Y’ DEAN)) 
∏ MANV, HONV, TENLOT, TENNV ((KQ1 - KQ2 ) ⋈ MA_NVIEN = MANV NHANVIEN) 
SELECT MANV, HONV, TENLOT, TENNV 
FROM PHANCONG PC, DEAN DA, NHANVIEN 
WHERE PC.MADA = DA.MADA AND MA_NVIEN = MANV AND TENDA = 
‘SAN PHAM X’ AND MANV NOT IN (SELECT MA_NVIEN 
FROM PHANCONG PC1, DEAN DA1 
WHERE PC1.MADA = DA1.MADA AND TENDA = ‘SAN PHAM Y’) 
23. Ds nv chỉ có tham gia đề án tên ‘Sản phẩm X’. 
SELECT MANV, HONV, TENLOT, TENNV 
FROM PHANCONG PC, DEAN DA, NHANVIEN NV 
WHERE PC.MADA = DA.MADA AND MA_NVIEN = MANV AND TENDA = 
‘SAN PHAM X’ AND (SELECT COUNT(*) 
FROM PHANCONG 
WHERE MA_NVIEN = NV.MANV) =1 
24. Ds các đề án chỉ do các nv thuộc phòng “Nghiên cứu” 
thực hiện. 
SELECT MADA, TENDA 
FROM DEAN DA, PHANCONG PC, NHANVIEN, 
PHONGBAN 
WHERE DA.MADA = PC. MADA AND MA_NVIEN = 
MANV AND PHG = MAPB AND TENPB = ‘NGHIEN CUU’ 
AND NOT EXISTS 
(SELECT * 
FROM PHANCONG, NHANVIEN, PHONGBAN 
WHERE MA_NVIEN = MANV AND PHG = MAPB AND 
TENPB ‘NGHIEN CUU’) 
25. Ds các nv có tham gia tất cả các đề án. 
KQ1 ← ∏ MA_NVIEN, MADA (PHANCONG) : ∏ MADA (DEAN) 
∏ MANV, HONV, TENLOT, TENNV (KQ1 ⋈ MA_NVIEN = MANV NHANVIEN) 
SELECT MA_NVIEN, HONV, TENLOT, TENNV 
FROM PHANCONG PC1, NHANVIEN 
WHERE MA_NVIEN = MANV AND 
NOT EXISTS (SELECT * 
FROM DEAN DA 
WHERE NOT EXISTS (SELECT * FROM PHANCONG PC2 
WHERE PC2.MADA = DA.MADA AND PC2.MA_NVIEN = 
PC1.MANVIEN)) 
{nv.MANV, nv.HONV, nv.TENLOT, nv.TENNV| 
NHANVIEN(nv) ∧ (∀d) DEAN(d) (∃p) PHANCONG(p) ∧ 
p.MA_NVIEN = nv.MANV∧ p.MADA=d.MADA}
 R: A, B ; S:B 
R:S 
SELECT A 
FROM R R1 
WHERE NOT EXISTS (SELECT * 
 FROM S 
 WHERE NOT EXISTS (SELECT * 
 FROM R R2 
 WHERE R2.B = S.B 
 AND R2.A = R1.A)) 
 26. Ds nv thuộc phòng ‘Nghiên cứu’ có tham gia tất cả các 
đề án do phòng số 5 chủ trì. 
KQ1 ← ∏ MA_NVIEN, MADA (PHANCONG) : ∏ MADA (σPHONG=5 DEAN) 
∏ MANV, HONV, TENLOT, TENNV (KQ1 ⋈ MA_NVIEN = MANV (NHANVIEN ⋈ PHG = MAPB 
σTENPB=’NGHIEN CUU’ PHONGBAN)) 
SELECT MA_NVIEN, HONV, TENLOT, TENNV 
FROM PHANCONG PC1, NHANVIEN, PHONGBAN 
WHERE MA_NVIEN = MANV AND PHG = MAPB AND 
TENPB = ‘NGHIEN CUU’ 
AND NOT EXISTS (SELECT * 
FROM DEAN DA 
WHERE PHONG = 5 
AND NOT EXISTS (SELECT * FROM PHANCONG PC2 
WHERE PC2.MADA = DA.MADA AND PC2.MA_NVIEN = 
PC1.MANVIEN)) 
27. Cho biết lương trung bình của các phòng ban (mã, tên, 
lương TB). 
SELECT PHG, TENPB, AVG(LUONG) AS LUONGTB 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
GROUP BY PHG,TENPB 
28. Cho biết các phòng ban có lương trung bình > 2500. 
SELECT PHG, TENPB, AVG(LUONG) AS LUONGTB 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
GROUP BY PHG,TENPB 
HAVING AVG(LUONG) >= 2500 
29. Cho biết các phòng ban có chủ trì đề án có số nhân 
viên > 3 và có lương trung bình lớn hơn 2500. 
SELECT MAPB, TENPB 
FROM PHONGBAN PB, DEAN 
WHERE MAPB = PHONG AND (SELECT COUNT(*) FROM 
PHONGBAN WHERE MAPB = PB.MABP) > 3 AND 
(SELECT AVG(LUONG) FROM PHONGBAN WHERE 
MAPB = PB.MAPB> > 2500 
30. Cho biết nhân viên nào có lương cao nhất trong từng 
phòng ban. 
SELECT MANV, HONV, TENLOT, TENNV, LUONG 
FROM NHANVIEN NV 
WHERE LUONG = (SELECT MAX(LUONG) 
FROM NHANVIEN 
WHERE PHG = NV.PHG) 
31. Cho biết phòng ban nào có lương trung bình cao nhất. 
SELECT PHG, TENPB, AVG(LUONG) AS LUONGTB 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
GROUP BY PHG,TENPB 
HAVING AVG(LUONG) >= ALL (SELECT AVG(LUONG) 
FROM NHANVIEN 
GROUP BY PHG) 
32. Cho biết phòng ban nào có ít nhân viên nhất. 
SELECT PHG, TENPB, COUNT(*) AS SONV 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB 
GROUP BY PHG,TENPB 
HAVING COUNT(*) <= ALL (SELECT COUNT(*) 
FROM NHANVIEN 
GROUP BY PHG) 
33. Cho biết phòng ban nào có đông nhân viên nữ nhất. 
SELECT PHG, TENPB, COUNT(*) AS SONVNU 
FROM NHANVIEN, PHONGBAN 
WHERE PHG = MAPB AND PHAI = ‘NU’ 
GROUP BY PHG,TENPB 
HAVING COUNT(*) >= ALL (SELECT COUNT(*) 
FROM NHANVIEN 
WHERE PHAI = ‘NU’ 
GROUP BY PHG) 
34. Danh sách mã, tên của các phòng ban có chủ trì đề án 
tên là “SPX” lẫn “SPY”. 
 KQ1 ← ∏PHONG (σTENDA=’SPX’ DEAN) ∩ ∏PHONG (σTENDA=’SPY’ DEAN) 
∏MAPB, TENPB (KQ1 ⋈ PHONG = MAPB (PHONGBAN)) 
SELECT MAPB, TENPB 
FROM PHONGBAN, DEAN 
WHERE MAPB = PHONG AND TENDA = ‘SPX’ AND 
MAPB IN (SELECT PHONG 
FROM DEAN 
WHERE TENDA = ‘SPY’) 
35. Danh sách mã, tên của các phòng ban có chủ trì đề án 
tên là “SPX” mà không có chủ trì đề án tên là “SPY”. 
KQ1 ← ∏PHONG (σTENDA=’SPX’ DEAN) - ∏PHONG (σTENDA=’SPY’ DEAN) 
∏MAPB, TENPB (KQ1 ⋈ PHONG = MAPB (PHONGBAN)) 
SELECT MAPB, TENPB 
FROM PHONGBAN, DEAN 
WHERE MAPB = PHONG AND TENDA = ‘SPX’ AND 
MAPB NOT IN (SELECT PHONG 
FROM DEAN 
WHERE TENDA = ‘SPY’) 

File đính kèm:

  • pdfMINH_HOA_DSQH_VA_SQL_SONG_SONG.pdf
Tài liệu liên quan