Download as pdf or txt
Download as pdf or txt
You are on page 1of 20

lOMoARcPSD|37840653

4 - chương 4

Cơ sở dữ liệu (Trường Đại học Sư phạm Kỹ Thuật Thành phố Hồ Chí Minh)

Scan to open on Studocu

Studocu is not sponsored or endorsed by any college or university


Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)
lOMoARcPSD|37840653

Câu hỏi ôn tập chương 4

1. Ngôn ngữ SQL là gì?

Là ngôn ngữ truy vấn có cấu trúc.

2. Thứ tự viết các mệnh đề trong câu SQL?

Select-from-where-group by-having-order by

3. Thứ tự thực hiện các mệnh đề trong câu SQL?

from-where-group by-having-select-order by

4. Cho Q(A, B, C). Viết câu truy vấn tương đương với biểu thức đại số quan hệ A,B(Q)

Select A,B From Q;

5. Cho Q(A, B, C, D). Dấu * ở mệnh đề Select trong câu truy vấn SELECT * FROM Q có
nghĩa là gì?

Lấy tất cả các cột ở bảng Q

6. Cho Q(A: int, B: int, C: int). Viết 2 câu truy vấn tương đương với biểu thức đại số quan
hệ A,B,C(A>B(Q))

Select A,B,C from Q where A>B


Select * from Q where A>B

7. Cho Q(A: int, B: int, C: int). Tìm các chỗ sai trong câu truy vấn SELECT A.Q FROM Q
WHERE A.Q > ‘5’

5 không phải chuỗi nên k để trong dấu ‘’

8. Cho SV(MaSV: string, Hoten: string, MaKh:string, DiemTB:real). Câu truy vấn nào dưới
đây thực hiện lập danh sách SV thuộc Khoa có MaKh là ‘50’ và có điểm tb > 8:
a. SELECT MaSV, Hoten FROM SV WHERE MaKh = 50, DiemTB >8
b. SELECT MaSV, Hoten FROM SV WHERE MaKh = ‘50’, DiemTB >8
c. SELECT MaSV, Hoten FROM SV WHERE MaKh = ‘50’ DiemTB >8
d. SELECT MaSV, Hoten FROM SV WHERE MaKh = ‘50’ and DiemTB >8

9. Cho SV(MaSV: string, Hoten: string, MaKh:string, DiemTB:real). Câu truy vấn nào dưới
đây đúng:

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

a. SELECT MaSV, Hoten FROM SV WHERE MaKh = 50, DiemTB >8


b. SELECT MaSV.SV, Hoten.SV FROM SV WHERE DiemTB >8
c. SELECT SV.MaSV, SV.Hoten FROM SV WHERE DiemTB >8
d. Cả 3 câu trên đều sai

10. Cho NV(MaNV: string, Hoten: string, Luong: Real, MaPB:string). Câu SQL nào dưới
đây đúng:
a. SELECT MaNV, Hoten, Luong * 2 WHERE NV WHERE MAPB = ‘50’
b. SELECT MaNV, Hoten, Luong * 2 Thuong WHERE NV WHERE MAPB = ‘50’
c. SELECT MaNV, Hoten, Luong * 2 as Thuong WHERE NV WHERE MAPB = ‘50’
d. Cả 3 câu trên đều đúng

11. Cho NV(MaNV: string, Hoten: string, Luong: Real, MaPB:string). Hãy cho biết kết quả
của câu truy vấn: SELECT MaNV, Hoten, Luong * 2 as Thuong FROM NV

Cho ra 1 bảng có các thuộc tính MaNV, Hoten và cột Thuong là thuộc tính Luong nhân 2 từ
bảng NV.

12. Từ khóa AS trong câu truy vấn SELECT MaNV, Hoten, Luong * 2 as Thuong FROM NV
dùng để làm gì?

Đặt tên cho cột Luong*2 là Thuong.

13. Cho NhanVien(MaNV: string, Hoten: string, Luong: Real). câu truy vấn dưới thực hiện
việc gì: SELECT NV.MaNV, NV.Hoten, NV.Luong FROM NhanVien as NV WHERE Luong
>1000
Truy vẫn từ bảng Nhanvien đổi thành NV cho ra bảng có các thuộc tính NV.MaNV, NV.Hoten,
NV.Luong với điều kiện là lương nhân viên trên 1000

14. Từ khóa AS trong câu truy vấn SELECT MaNV, Hoten, Luong FROM NhanVien as NV
dùng để làm gì?

Đổi tên NhanVien thành NV

15. bí danh của thuộc tính được đặt ở mệnh đề SELECT có được dùng ở các mệnh đề khác
không? Tại sao?

Không vì theo thứ tự thực hiện select ở phía sau from, where, group by và having nên không
thể sử dụng các bí danh đặt ở select cho các mệnh đề khác được

16. Phát biểu nào dưới đây đúng:


a. Các biểu thức điều kiện ở mệnh đề WHERE phải được liên kết bằng AND hoặc OR

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

b. Các biểu thức điều kiện ở mệnh đề WHERE phải được phân cách bằng dấu phẩy

c. Cả a và b đều đúng

d. Cả a và b đều sai

17. LIKE hoặc NOT LIKE dùng để làm gì?

Dùng trong mệnh đề where, để so sánh chuỗi của thuộc tính

18. Ý nghĩa của ký tự đại diện ‘%’ hoặc ‘_’ trong biểu thức điều kiện so sánh chuỗi.

‘%’ số lượng kí tự bất kì, ‘_’ kí tự bất kì

19. Cho Q(A: nvarchar(4), B: int). câu SQL SELECT * FROM Q WHERE A like ‘%a% thực
hiện việc gì?

Tìm kiếm những bộ có kí tự ‘a’ trong thuộc tính A ở bảng Q

20. Cho Q(A: varchar(4), B: int). Câu SQL SELECT * FROM Q WHERE A like ‘_a% thực
hiện việc gì?

Tìm kiếm những bộ có kí tự ‘a’ đứng thứ 2 trong thuộc tính A ở bảng Q

21. Cho Q(A: varchar(4), B: int). Viết câu SQL tương đương với câu
SELECT * FROM Q WHERE B Between 10 and 20

SELECT A,B,C FROM Q WHERE B Between 10 and 20

22. Hàm gộp là gì và gồm những hàm nào?

Min,max,count,avg,sum

23. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


Câu SQL SELECT count(*), avg(luong) FROM NV thực hiện việc gì?

Đếm số nhân viên và trung bình lương của nhân viên.

24. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


Trong SQL Server, kết quả của câu SQL: SELECT count(*), avg(luong) FROM NV là gì?

Cho ra 2 ô số lượng nhân viên và lương trung bình.

25. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


Trong SQL Server, kết quả của câu SQL: SELECT count(*) Sonv, avg(luong) as Luongtb
FROM NV là gì?

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

1 bảng có có thuộc tính là số nhân viên với tên là Sonv và thuộc tính trung bình lương nhân
viên với tên là Luongtb

26. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


Câu SQL SELECT count(MaNV), avg(luong) FROM NV GROUP BY MaPB thực hiện
việc gì?

Tính số nhân viên và lương trung bình nhân viên của từng phòng

27. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


Trong SQL Server, kết quả của câu SQL: SELECT MaPB, count(MaNV), avg(luong)
FROM NV GROUP BY MaPB là gì?

1 bảng có thuộc tính MaPB,số lượng nhân viên và lương trung bình của nhân viên

28. Phát biểu nào dưới đây đúng khi câu SQL có sử dụng mệnh đề GROUP BY

a. Các thuộc tính có trong mệnh đề SELECT phải có trong mệnh đề GROUP BY hoặc trong
hàm gộp

b. Thuộc tính có trong mệnh đề GROUP BY có thể không có trong mệnh đề SELECT
c. Cả a và b đều đúng
d. Cả a và b đều sai

29. Phát biểu nào dưới đây đúng:

a. Trong câu SQL, mệnh đề HAVING được sử dụng khi điều kiện chọn liên quan tới hàm
gộp

b. Trong câu SQL, mệnh đề HAVING (nếu có) phải nằm sau mệnh đề GROUP BY
c. Cả a và b đều đúng
d. Cả a và b đều sai

30. Phát biểu nào dưới đây đúng:

a. Trong câu SQL, khi sử dụng mệnh đề HAVING thì phải có mệnh đề GROUP BY

b. Trong câu SQL, mệnh đề WHERE sử dụng với điều kiện không dùng hàm gộp

c. Trong câu SQL, có thể có cả mệnh đề WHERE và mệnh đề HAVING

d. Cả 3 câu trên đều đúng

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

31. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)).


câu SQL: SELECT MaPB, count(MaNV) FROM NV GROUP BY MaPB HAVING
count(MaNV) > 2; thực hiện việc gì?

Đếm số nhân viên của những phòng nhiều hơn 2 nhân viên

32. Cho Q(A: varchar(10), B: int, C: varchar(4)). Chỉ những chỗ sai của câu SQL:
SELECT A, count(b) as v FROM Q.A GROUP BY C HAVING v > 2;

From là lấy từ bảng nhưng Q.A là thuộc tính nên sai

Bí danh v ở select nên không được sử dụng ở having

33. Cho NV(MaNV: varchar(10), Luong: int, MaPB: varchar(4)). Chỉ những chỗ sai của câu
SQL: SELECT MaPB, count(MaNV) as sonv FROM NV n WHERE sonv > 2;

Bí danh sonv ở select nên không được sử dụng ở having

Ở From dư chứ n

34. Mệnh đề ORDER BY dùng để làm gì?

Sắp xếp các bộ

35. Cho NV (MaNV, Hoten, NgSinh). Câu SQL:


SELECT Hoten, NgSinh FROM NV ORDER BY Hoten, NgSinh DESC; thực hiện việc gì?

Truy vấn ra Hoten và NgSinh của nhân viên và sắp xếp giảm dần

36. Cho Q(A, B, C). Viết câu SQL cho kết quả tương đương với câu
SELECT * FROM Q ORDER BY A DESC, C

SELECT A,B,C FROM Q ORDER BY A DESC, C

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

37. Trình bày phép kết nội và phép kết ngoài

Phép kết được dùng ở From

Phép kết nội có cú pháp FROM R INNER JOIN S ON R.A =S.B

Phép kết ngoài gồm có kết trái/phải/2 bên có cú pháp FROM R LEFT/RIGHT/FULL OUTER
JOIN S ON R.A=S.B

38. Cho Q1(A: int, B: int) và Q2(C: int, D: int) và câu SQL
SELECT A, C FROM Q1 INNER JOIN Q2 ON A = C; thực hiện việc gì

Truy vấn 2 thuộc tính A,C trong phép kết theta Q1 Q2 với theta là A=C

39. Cho Q1(A: int, B: int) và Q2(C: int, D: int). Câu SQL nào dưới đây đúng
a. SELECT A, C FROM Q1 JOIN Q2 ON A = C;
b. SELECT A, C FROM Q1 INNER JOIN Q2 ON A = C;
c. Cả a và b đều đúng
d. Cả a và b đều sai

40. Cho Q1(A: int, B: int) và Q2(C: int, D: int). Câu SQL nào dưới đây đúng
a. SELECT A, C FROM Q1 LEFT JOIN Q2 ON A = C;
b. SELECT A, C FROM Q1 LEFT OUTER JOIN Q2 ON A = C;
c. Cả a và b đều đúng
d. Cả a và b đều sai

41. Cho Q1(A: int, B: int) và Q2(C: int, D: int). Câu SQL
SELECT * FROM Q1 FULL JOIN Q2 ON A = C; thực hiện việc gì?

Truy vấn toàn bộ thuộc tính của phép kết ngoại 2 bên Q1 Q2 với điều kiện A=C

42. Cho Q1(A: int, B: int) và Q2(C: int, D: int). Câu SQL
SELECT * FROM Q1 FULL OUTER JOIN Q2 ON A = C; tương đương với
a. SELECT * FROM Q1 JOIN Q2 ON A = C;
b. SELECT * FROM Q1 FULL JOIN Q2 ON A = C
c. Cả a và b đều đúng
d. Cả a và b đều sai

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

43. Cho Q1(A: int, B: int) và Q2(C: int, D: char(5)). Câu SQL
SELECT * FROM Q1 OUTER JOIN Q2 A = C WHERE D = null; sai ở những chỗ nào?

D là char nên phải là ‘null’ ở dòng WHERE

Kết ngoại thiếu là loại kết ngoại gì.

44. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL


(SELECT MaSV FROM SV) EXCEPT (SELECT MaSV FROM Dangky); thực hiện việc gì?

Cho biết mã sinh viên của những sinh viên không đăng kí môn học nào.

45. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL nào ở dưới tương đương
với câu truy vấn (SELECT MaSV FROM SV) EXCEPT (SELECT MaSV FROM Dangky)
a. SELECT SV.MaSV FROM SV LEFT JOIN Dangky ON SV.MaSV = Dangky.MaSV
b. SELECT SV.MaSV FROM SV LEFT JOIN Dangky ON SV.MaSV = Dangky.MaSV
WHERE Dangky.MaMH IS NULL
c. SELECT SV.MaSV FROM SV LEFT JOIN Dangky ON SV.MaSV = Dangky.MaSV
WHERE Dangky.MaMH = NULL
d. Cả 3 câu trên đều đúng

46. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL nào ở dưới tương đương
với câu truy vấn (SELECT MaSV FROM SV) EXCEPT (SELECT MaSV FROM Dangky)

a. SELECT SV.MaSV FROM SV LEFT JOIN Dangky ON SV.MaSV = Dangky.MaSV


WHERE Dangky.MaMH IS NULL

b. SELECT s.MaSV FROM SV s LEFT JOIN Dangky d ON s.MaSV = d.MaSV WHERE


Dangky.MaMH IS NULL

c. Cả a và b đều đúng

d. Cả a và b đều sai

47. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Chỉ những chỗ sai trong câu SQL
SELECT MaSV FROM SV OUTER JOIN Dangky ON SV.MaSV = Dangky.MaSV WHERE
Dangky.MaMH = NULL;

Sai cú pháp kết ngoài

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

48. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL nào ở dưới cho kết quả
tương đương với câu truy vấn (SELECT MaSV FROM SV) INTERSECT (SELECT MaSV
FROM Dangky)
a. SELECT MaSV FROM Dangky
b. (SELECT MaSV FROM SV) EXCEPT (SELECT MaSV FROM Dangky)
c. SELECT MaSV FROM SV
d. Cả 3 đều đúng

49. Cho Q1(A, B) và Q2(A, B). Câu SQL


(SELECT A, B FROM Q1) INTERSECT (SELECT A, B FROM Q2); thực hiện việc gì?

Cho ra những bộ vừa có ở Q1 vừa có ở Q2

50. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL dưới thực hiện việc gì
(SELECT MaSV FROM SV) UNION (SELECT MaSV FROM Dangky)

Cho ra những sinh viên đã đk môn học

51. Cho Q1(A, B) và Q2(A, B). Câu SQL


(SELECT * FROM Q1) UNION (SELECT * FROM Q2); thực hiện việc gì?
Cho ra các bộ có ở Q1 và Q2

52. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu truy vấn


SELECT Hoten FROM SV WHERE MaSV NOT IN (SELECT MaSV FROM Dangky);
thực hiện việc gì?

Cho ra họ tên sinh viên không đăng kí môn học

53. Cho SV(MaSV, Hoten) và Dangky(MaSV, MaMH). Câu SQL tương đương với câu:
SELECT MaSV FROM SV WHERE MaSV NOT IN (SELECT MaSV FROM Dangky)

(SELECT MaSV FROM SV) EXCEPT (SELECT MaSV FROM Dangky)

54. Cho NV(MaNV, Hoten, Luong). Câu SQL


SELECT * FROM NV WHERE Luong > (SELECT AVG(Luong) FROM NV); thực hiện
việc gì?
a. Liệt kê danh sách NV có lương cao nhất

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

b. Liệt kê danh sách NV có lương lớn hơn mức lương trung bình
c. Cả a và b đều đúng
d. Cả a và b đều sai

55. Cho NV(MaNV, Hoten, Luong). Câu SQL nào dưới đây tương đương với
SELECT * FROM NV WHERE Luong > (SELECT AVG(Luong) FROM NV);
a. SELECT * FROM NV, (SELECT AVG(Luong) as ltb FROM NV) Q WHERE Luong >
LTB
b. SELECT * FROM NV HAVING Luong > (SELECT AVG(Luong) FROM NV)
c. Cả a và b đều đúng
d. Cả a và b đều sai

56. Cho NV(MaNV, Hoten, Luong). Câu SQL


SELECT * FROM NV WHERE Luong >= all (SELECT Luong FROM NV); thực hiện việc
gì?

Tìm mã nhân viên,họ tên nhân viên và lương của nhân viên có lương cao nhất

57. Cho NV(MaNV, Hoten, Luong). Câu SQL


SELECT * FROM NV WHERE Luong = (SELECT max(Luong) FROM NV); thực hiện việc
gì?

Tìm mã nhân viên,họ tên nhân viên và lương của nhân viên có lương cao nhất

58. Cho NV(MaNV, Hoten, Luong). Câu SQL nào dưới đây tương đương với
SELECT * FROM NV WHERE Luong >= all (SELECT Luong FROM NV)
a. SELECT * FROM NV WHERE Luong >= any (SELECT Luong FROM NV);
b. SELECT * FROM NV WHERE Luong = (SELECT max(Luong) FROM NV)
c. Cả a và b đều đúng
d. Cả a và b đều sai

59. Truy vấn con tương quan là gì?

Là câu truy vấn cho phép so sánh giữa thuộc tính của quan hệ bên trong truy vấn con với thuộc
tính của quan hệ trong truy vấn bao bên ngoài

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

60. Công dụng của EXISTS

EXISTS được sử dụng để kiểm tra sự tồn tại của bất kỳ bản ghi nào trong truy vấn phụ.

61. Cho NV(MaNV, Hoten) và ThanNhan(MaNV, TenThannhan). Câu SQL nào dưới đây
đúng
a. SELECT Hoten FROM NV WHERE EXISTS (SELECT * FROM THANNHAN tn
WHERE NV.MaNV = tn.MaNV);
b. SELECT Hoten FROM NV WHERE MaNV EXISTS (SELECT * FROM THANNHAN
tn WHERE NV.MaNV = tn.MaNV);
c. Cả a và b đều đúng
d. Cả a và b đều sai

Câu 1:
1) SELECT TenDA
FROM DUAN LEFT OUTER JOIN PHANCONG ON
DUAN.MaDA=PHANCONG.MaDUAN
WHERE PHANCONG.MaNV=’NV01’;
2) SELECT MaNV, SUM(Thoigian) AS TongTG
FROM PHANCONG
GROUP BY MaNV;

3) SELECT HoNV,Tenlot,TenNV
FROM NHANVIEN LEFT OUTER JOIN PHANCONG ON
NHANVIEN.MaNV=PHANCONG.MaVN
WHERE MaDA=’NULL’;
a) SELECT NgSinh,DChi
FROM NHANVIEN
WHERE HoNV=’Nguyễn’ AND Tenlot=’Bảo’ AND TenNV=’Dũng’;
b) SELECT NHANVIEN.TenNV, NHANVIEN.DChi
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
WHERE PHONGBAN.TenPB=’Nghiên cứu’;

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

c) SELECT DUAN.MaDA, PHONGBAN.MaPB, NHANVIEN.HoNV,


NHANVIEN.Tenlot, NHANVIEN.TenNV,NHANVIEN.NgSinh
FROM DUAN INNER JOIN (SELECT *
FROM PHONGBAN LEFT OUTER JOIN
NHANVIEN ON

PHONGBAN.TrPhong=NHANVIEN.MaVN)
WHERE DUAN.Diadiem=’Gò Vấp’;
d) SELECT NHANVIEN.HoNV, NHANVIEN.Tenlot, NHANVIEN.TenNV,
QL.HoNV, QL.Tenlot, QL.TenNV
FROM NHANVIEN LEFT OUTER JOIN (NHANVIEN AS QL) ON
NHANVIEN.MaQL=QL.MaVN
WHERE QL.MaNV NOT LIKE ‘NULL’
e) SELECT NHANVIEN.MaNV, NHANVIEN.HoNV, NHANVIEN.TenNV
NHANVIEN.TenNV
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
WHERE PHONGBAN.TenPB=’Nghiên cứu’ AND NHANVIEN.LUONG
BETWEEN 30000 TO 50000;

f) SELECT NHANVIEN.MaNV NHANVIEN.HoNV, NHANVIEN.Tenlot,


NHANVIEN.TenNV, DUAN.MaDA, DUAN.TenDA
FROM DUAN INNER JOIN (SELECT *
FROM PHONGBAN LEFT OUTER JOIN
NHANVIEN ON

PHONGBAN.TrPhong=NHANVIEN.MaVN);
g) SELECT NHANVIEN.MaNV, NHANVIEN.HoNV, NHANVIEN.Tenlot,
NHANVIEN.TenNV,
FROM NHANVIEN LEFT OUTER JOIN (NHANVIEN AS QL) ON
NHANVIEN.MaQL=QL.MaVN
WHERE QL.MaNV=‘NULL’;

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

h) SELECT NHANVIEN.HoNV, NHANVIEN.Tenlot, NHANVIEN.TenNV


FROM NHANVIEN RIGHT OUTER JOIN (SELECT
PHONGBAN.TrPhong
FORM PHONGBAN INNER JOIN THANNHAN ON
PHONGBAN.TrPhong=THANNHAN.MaVN) ON
NHANVIEN.MaVN=PHONGBAN.TrPHONG;
i) SELECT SUM(LUONG) AS TONGLUONG, MAX(LUONG) AS
MAXLUONG, MIN(LUONG) AS MINLUONG, AVG(LUONG) AS
LUONGTB
FROM NHANVIEN;
j) SELECT count(MaNV) AS SONV,AVG(LUONG) AS LUONGTB
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
WHERE PHONGBAN.TenPB=’Nghiên cứu’ ;
k) SELECT PHONGBAN.MaPB, count(MaNV) AS SONV,AVG(LUONG) AS
LUONGTB
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
GROUP BY MaPB;
l) SELECT DUAN.MaDA, DUAN.TenDA, COUNT(PHANCONG.MaNV)
FROM PHANCONG INNER JOIN DUAN ON
DUAN.MaDA=PHANCONG.MaDA
GROUP BY MaDA;

m) SELECT DUAN.MaDA, DUAN.TenDA, COUNT(PHANCONG.MaNV)


FROM PHANCONG INNER JOIN DUAN ON
DUAN.MaDA=PHANCONG.MaDA
GROUP BY MaDA
HAVE TO PHANCONG.MaNV>2;
n) SELECT DUAN.MaDA, DUAN.TenDA, COUNT(PHANCONG.MaNV)
FROM PHANCONG INNER JOIN DUAN ON
DUAN.MaDA=PHANCONG.MaDA
GROUP BY MaDA
HAVE TO DUAN.Phong=5;

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

o) SELECT NHANVIEN.Phong, count(MaNV) AS SONV


FROM NHANVIEN
WHERE Luong>25000
GROUP BY Phong
HAVE TO COUNT(MaNV)>2 AND
p) SELECT PHONGBAN.MaPB, count(MaNV) AS SONV
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
GROUP BY MaPB
HAVE TO AVG(LUONG)>30000;
q) SELECT PHONGBAN.MaPB, count(MaNV) AS SONV
FROM NHANVIEN LEFT OUTER JOIN PHONGBAN ON
NHANVIEN.Phong=PHONGBAN.MaPB
WHERE NHANVIEN.Phai=’NAM’
GROUP BY MaPB
HAVE TO AVG(LUONG)>30000;
2. -- Thêm hai khóa ngoại cho bảng CuonSach
alter table CuonSach with check add foreign key(MaSach) references
DauSach(MaSach)
alter table DauSach with check add foreign key(MaNXB) references
NXB(MaNXB)

--Cho biết Địa chỉ và số điện thoại của Nhà xuất bản “Addison Wesley”
select Diachi, SoDT
From NXB
where TenNXB = 'Addison Wesley'

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

--Cho biết mã sách và Tựa sách của những cuốn sách được xuất bản bởi nhà xuất
bản “Addison Wesley"
select DauSach.MaSach, DauSach.Tua
from NXB INNER JOIN DauSach on NXB.MaNXB = DauSach.MaNXB
where TenNXB = 'Addison Wesley'
--Cho biết mã sách và Tựa sách của những cuốn sách có tác giả là “Hemingway”
select DauSach.MaSach, Tua
from TacGia INNER JOIN DauSach ON TacGia.MaSach = DauSach.MaSach
where Tentacgia='Hemingway'
--Với mỗi đầu sách, cho biết tựa và số lượng cuốn sách mà thư viện đang sở hữu
select DauSach.MaSach, DauSach.Tua, count(MaCuon) as SL
from CuonSach INNER JOIN DauSach ON CuonSach.MaSach =
DauSach.MaSach
group by DauSach.MaSach, DauSach.Tua
--Với mỗi độc giả, hãy cho biết Tên, địa chỉ và số lượng cuốn sách mà người đó đã
mượn
select DocGia.TenDG, DocGia.DiaChi, count(MaCuon) as SL
from DocGia INNER JOIN Muon ON DocGia.MaDG = Muon.MaDG
group by DocGia.TenDG, DocGia.DiaChi
--Cho biết mã cuốn, tựa sách và vị trí của những cuốn sách được xuất bản bởi nhà
xuất bản “Addison Wesley”
select CuonSach.MaCuon,DauSach.Tua, CuonSach.ViTri
from NXB, DauSach, CuonSach
where NXB.MaNXB=DauSach.MaNXB and
DauSach.MaSach=CuonSach.MaSach and NXB.TenNXB = 'Addison Wesley'
--Với mỗi đầu sách, hãy cho biết Tên nhà xuất bản và số lượng tác giả
select NXB.MaNXB,NXB.TenNXB, count(Tentacgia) as SL

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

from NXB, DauSach, TacGia


where NXB.MaNXB = DauSach.MaNXB and DauSach.MaSach=TacGia.MaSach
group by NXB.MaNXB,NXB.TenNXB
--Hãy cho biết Tên, địa chỉ, số điện thoại của những độc giả đã mượn từ 2 cuốn
sách trở lên
select DocGia.TenDG, DocGia.DiaChi, DocGia.SDT
from DocGia INNER JOIN Muon ON DocGia.MaDG = Muon.MaDG
group by DocGia.TenDG, DocGia.DiaChi, DocGia.SDT
having count(Muon.MaCuon) >= 2
--Cho biết mã NXB, tên NXB và số lượng đầu sách của NXB đó trong CSDL
select NXB.MaNXB, NXB.TenNXB, count(DauSach.MaSach) as SL
from NXB INNER JOIN DauSach ON NXB.MaNXB = DauSach.MaNXB
group by NXB.MaNXB, NXB.TenNXB
--Cho biết mã NXB, tên NXB và địa chỉ của những NXB có từ 100 đầu sách trở
lên
select NXB.MaNXB, NXB.TenNXB, NXB.Diachi
from NXB INNER JOIN DauSach ON NXB.MaNXB=DauSach.MaNXB
group by NXB.MaNXB, NXB.TenNXB, NXB.Diachi
having count(DauSach.MaSach) > 1
--Cho biết mã NXB, tên NXB, và số lượng tác giả đã hợp tác với NXB đó

--cách 1
select NXB.Diachi, NXB.TenNXB, count(TacGia.Tentacgia) as SL
from NXB, DauSach, TacGia
where DauSach.MaSach = TacGia.MaSach and DauSach.MaNXB = NXB.MaNXB
group by NXB.Diachi, NXB.TenNXB

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

3. alter table NhanVien with check add foreign key(MasoCQ) references


CoQuan(MasoCQ)
go
UPDATE CoQuan SET DiaChi = '16 Dang Van Ngu' where MasoCQ = 'cq04'
UPDATE CoQuan SET DiaChi = '222 Linh Xuan' where MasoCQ = 'cq01'

--Tìm tên những nhân viên ở cơ quan có mã số là cq04


select Ten
from NhanVien
where MasoCQ = 'cq04'
--Tìm mã số tất cả các cơ quan từ quan hệ NV
select NhanVien.MasoCQ
from NhanVien
group by NhanVien.MasoCQ
--Tìm tên các nhân viên ở cơ quan có mã số là cq04, cq05 ,cq01
select Ten
from NhanVien
where MasoCQ = 'cq04' or MasoCQ = 'cq05' or MasoCQ = 'cq01'
--Tìm tên những người làm việc ở 16 Dang Van Ngu
select Ten
from NhanVien INNER JOIN CoQuan ON NhanVien.MasoCQ =
CoQuan.MasoCQ
where DiaChi = '16 Dang Van Ngu'
4. --Cho biết danh sách các người thợ hiện không tham gia vào một hợp đồng sửa
chữa nào
select * from Tho

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

except (select Tho.MaTho, TenTho, Nhom, NhomTrg from Tho INNER JOIN
CTHD on Tho.MaTho = CTHD.MaTho)
--Cho biết danh sách những hợp đồng đã thanh lý nhưng chưa được thanh toán tiền
đầy đủ.
select *
from Tho LEFT OUTER JOIN CTHD ON Tho.MaTho = CTHD.MaTho
where SoHD is NULL
--Cho biết danh sách những hợp đồng cần phải hoàn tất trước ngày 31/12/2002
select *
from HopDong
where NgayGiaoDK < '2014/12/21'
--Cho biết người thợ nào thực hiện công việc nhiều nhất.
select Tho.TenTho
from Tho JOIN CTHD ON Tho.MaTho = CTHD.MaTho
group by Tho.TenTho
having count(CTHD.MaCV) = (select max(A.SLCV) from
(select Tho.MaTho, count(CTHD.MaCV) as SLCV
from Tho JOIN CTHD ON Tho.MaTho = CTHD.MaTho
group by Tho.MaTho
) as A)
--Cho biết người thợ nào có tổng trị giá công việc được giao cao nhất.
select Tho.TenTho
from Tho JOIN CTHD ON Tho.MaTho = CTHD.MaTho
group by Tho.TenTho
having count(CTHD.TriGiaCV) = (select max(A.TGCV) from
(select Tho.MaTho, count(CTHD.TriGiaCV) as TGCV

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

from Tho JOIN CTHD ON Tho.MaTho = CTHD.MaTho


group by Tho.MaTho
) as A)
5.
--Danh sách các giáo viên dạy các môn học có số tiết từ 45 trở lên
select GiaoVien.TenGV
from GiaoVien INNER JOIN MonHoc ON GiaoVien.MaMH = MonHoc.MaMH
where MonHoc.SoTiet >= 45
--Danh sách giáo viên được phân công gác thi trong học kỳ 1
select GiaoVien.TenGV
from GiaoVien INNER JOIN CoiThi ON GiaoVien.MaGV = CoiThi.MaGV
where CoiThi.HK = 1

select GiaoVien.TenGV
from GiaoVien INNER JOIN (select * from CoiThi where HK = 1) as CT ON
GiaoVien.MaGV = CT.MaGV

--Danh sách giáo viên không được phân công gác thi trong học kỳ 1
select GiaoVien.TenGV
from GiaoVien LEFT OUTER JOIN (select * from CoiThi where HK = 1 ) as CT
ON GiaoVien.MaGV = CT.MaGV
where CT.HK = null
--Cho biết lịch thi môn văn (TENMH = ‘Van’)
select BuoiThi.Ngay, BuoiThi.Gio
from MonHoc INNER JOIN BuoiThi ON MonHoc.MaMH = BuoiThi.MaMH
where TenMH = 'Van'

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)


lOMoARcPSD|37840653

--Cho biết các buổi gác thi của các giáo viên chủ nhiệm môn văn (TENMH =
‘Van’)
select CoiThi.Ngay, CoiThi.Gio
from GiaoVien, CoiThi, MonHoc
where GiaoVien.MaGV = CoiThi.MaGV and GiaoVien.MaMH = MonHoc.MaMH
and MonHoc.TenMH = 'Van'

Downloaded by Nguyen Nhat Phat (23110053@student.hcmute.edu.vn)

You might also like