Bài tập SQL có đáp án gồm 4 câu với các câu hỏi cơ bản được sắp xếp từ dễ đến khó phù hợp với các bạn học CSDL. Các bạn sau khi tham khảo nên thử tối ưu lại câu truy vấn sao cho tốt nhất. Chúc các bạn thành công.
Trang 1Bài t p SQL ập SQL
Đ bài: ề bài:
Câu 1:
NCC(MSNCC, TênNCC, Đ ach )ịachỉ) ỉ)
MH(MSMH, TênMH, Màus c)ắc)
CC(MSNCC, MSMH, Giáti n)ền)
a Đ a ra tên c a nh ng hãng có cung ng ít ưa ra tên của những hãng có cung ứng ít ủa những hãng có cung ứng ít ững hãng có cung ứng ít ứng ít
nh t 1 m t hàng màu đất 1 mặt hàng màu đỏ ặt hàng màu đỏ ỏ
b Đ a ra mã s c a các hãng có cung ng ít ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít
nh t 1 m t hàng màu đ ho c 1 m t hàng ất 1 mặt hàng màu đỏ ặt hàng màu đỏ ỏ ặt hàng màu đỏ ặt hàng màu đỏ
màu xanh
c Đ a ra mã s c a hãng có cung ng ít nh t 1 ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
m t hàng màu đ và 1 m t hàng màu xanhặt hàng màu đỏ ỏ ặt hàng màu đỏ
d Đ a ra mã s c a hãng cung ng t t c các ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các
m t hàng màu đặt hàng màu đỏ ỏ
e Đ a ra mã s c a hãng cung ng t t c các ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các
m t hàng màu đ và màu xanhặt hàng màu đỏ ỏ
f Đ a ra mã s c a hãng cung ng t t c các ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các
m t hàng màu đ ho c t t c các m t hàng ặt hàng màu đỏ ỏ ặt hàng màu đỏ ất 1 mặt hàng màu đỏ ả các ặt hàng màu đỏ
màu xanh
g L u ý dùng toán t UNION nó sẽ lo i b các ưa ra tên của những hãng có cung ứng ít ử UNION nó sẽ loại bỏ các ại bỏ các ỏ
b n ghi gi ng nhau.ả các ố của các hãng có cung ứng ít
h Đ a ra c p mã s c a hãng cung ng sao cho ưa ra tên của những hãng có cung ứng ít ặt hàng màu đỏ ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít
hãng cung ng tứng ít ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng ng v i mã s th nh t ứng ít ới mã số thứ nhất ố của các hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
Trang 2cung c p m t m t hàng nào đó v i giá cao ất 1 mặt hàng màu đỏ ột mặt hàng nào đó với giá cao ặt hàng màu đỏ ới mã số thứ nhất
h n so v i giá mà hãng tơng ứng với mã số thứ nhất ới mã số thứ nhất ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng ng v i mã s ứng ít ới mã số thứ nhất ố của các hãng có cung ứng ít
th hai cung c p cũng m t hàng đóứng ít ất 1 mặt hàng màu đỏ ặt hàng màu đỏ
i Đ a ra mã s c a m t hàng đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c cung c p ất 1 mặt hàng màu đỏ
b i ít nh t hai hãng cung ngởi ít nhất hai hãng cung ứng ất 1 mặt hàng màu đỏ ứng ít
j Đ a ra mã s c a m t hàng đ t nh t đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ắc) ất 1 mặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c
cung c p b i hãng Dustinất 1 mặt hàng màu đỏ ởi ít nhất hai hãng cung ứng
k Đ a ra mã s c a m t hàng đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c cung ng ứng ít
b i t t c các hãng mà giá ti n đ u nh h n ởi ít nhất hai hãng cung ứng ất 1 mặt hàng màu đỏ ả các ền) ền) ỏ ơng ứng với mã số thứ nhất
200
Câu 2:
Nhânviên(MSNV, H tên, Tu i, Lọtên, Tuổi, Lương) ổi, Lương) ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng)
Phòng(MSP, TênPhòng, Đ ađi m, Ngânquỹ, ịachỉ) ểm, Ngânquỹ,
MSTrưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngngphòng)
Làmvi c (ệc ( MSNV, MSP, Th igian)ờigian)
Câu 1:
NCC(MSNCC, TênNCC, Đ ach )ịachỉ) ỉ)
MH(MSMH, TênMH, Màus c)ắc)
CC(MSNCC, MSMH, Giáti n)ền)
Trang 3a Đ a ra tên c a nh ng hãng có cung ng ít nh t ưa ra tên của những hãng có cung ứng ít ủa những hãng có cung ứng ít ững hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
1 m t hàng màu đặt hàng màu đỏ ỏ
SELECT TENNCC
FROM NCC,CC, MH
WHERE NCC.MSNCC=CC.MSNCC
AND MH.MSMH=CC.MSMH
AND MH.Màu s c=N’đ ’;ắc) ỏ
b Đ a ra mã s c a các hãng có cung ng ít nh t 1ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
m t hàng màu đ ho c 1 m t hàng màu xanhặt hàng màu đỏ ỏ ặt hàng màu đỏ ặt hàng màu đỏ
c SELECT MSNCC
FROM NCC, CC, MH
WHERE NCC.MSNCC=CC.MSNCC
AND MH.MSMH=CC.MSMH
AND (MH.Màu s c=N’đ ’ OR MH.Màu ắc) ỏ
s c=N’xanh’);ắc)
d Đ a ra mã s c a hãng có cung ng ít nh t 1 ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
m t hàng màu đ và 1 m t hàng màu xanhặt hàng màu đỏ ỏ ặt hàng màu đỏ
SELECT MSNCC
FROM CC, MH
WHERE MH.MSMH=CC.MSMH
AND MH.Màu s c=N’đ ’ắc) ỏ
AND MSNCC IN(
SELECT MSNCC
FROM CC C1,MH MH1
WHERE C1.MSMH=MH1.MSMH
AND MH1.Màu s c=N’xanh’;ắc)
Trang 4e Đ a ra mã s c a hãng cung ng t t c các m t ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các ặt hàng màu đỏ
hàng màu đỏ
SELECT MSNCC
FROM CC, MH
WHERE CC.MSMH=MH.MSMH
AND MH.Màu s c=’đ ’ắc) ỏ
GROUP BY MSNCC
HAVING COUNT(MSMH)=(
SELECT COUNT(MSMH)
FROM MH
WHERE Màu s c=N’đ ’);ắc) ỏ
f Đ a ra mã s c a hãng cung ng t t c các m t ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các ặt hàng màu đỏ
hàng màu đ và màu xanhỏ
SELECT MSNCC
FROM CC, MH
WHERE CC.MSMH=MH.MSMH
AND MH.Màu s c=N’đ ’ắc) ỏ
GROUP BY MSNCC
HAVING COUNT(MSMH)=(
SELECT COUNT(MSMH)
FROM MH
WHERE Màu s c=N’đ ’)ắc) ỏ
INTERSECT
SELECT MSNCC
FROM CC, MH
WHERE CC.MSMH=MH.MSMH
Trang 5AND MH.Màu s c=N’xanh’ắc)
GROUP BY MSNCC
HAVING COUNT(MSMH)=(
SELECT COUNT(MSMH)
FROM MH
WHERE Màu s c=N’xanh’);ắc)
g Đ a ra mã s c a hãng cung ng t t c các m t ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ ả các ặt hàng màu đỏ
hàng màu đ ho c t t c các m t hàng màu ỏ ặt hàng màu đỏ ất 1 mặt hàng màu đỏ ả các ặt hàng màu đỏ
xanh
h L u ý dùng toán t UNION nó sẽ lo i b các b nưa ra tên của những hãng có cung ứng ít ử UNION nó sẽ loại bỏ các ại bỏ các ỏ ả các
ghi gi ng nhau.ố của các hãng có cung ứng ít
SELECT MSNCC
FROM CC, MH
WHERE CC.MSMH=MH.MSMH
AND MH.Màu s c=N’đ ’ắc) ỏ
GROUP BY MSNCC
HAVING COUNT(MSMH)=(
SELECT COUNT(MSMH)
FROM MH
WHERE Màu s c=N’đ ’)ắc) ỏ
UNION
SELECT MSNCC
FROM CC, MH
WHERE CC.MSMH=MH.MSMH
AND MH.Màu s c=N’xanh’ắc)
GROUP BY MSNCC
Trang 6HAVING COUNT(MSMH)=(
SELECT COUNT(MSMH)
FROM MH
WHERE Màu s c=N’xanh’);ắc)
i Đ a ra c p mã s c a hãng cung ng sao cho ưa ra tên của những hãng có cung ứng ít ặt hàng màu đỏ ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ứng ít
hãng cung ng tứng ít ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng ng v i mã s th nh t ứng ít ới mã số thứ nhất ố của các hãng có cung ứng ít ứng ít ất 1 mặt hàng màu đỏ
cung c p m t m t hàng nào đó v i giá cao h n ất 1 mặt hàng màu đỏ ột mặt hàng nào đó với giá cao ặt hàng màu đỏ ới mã số thứ nhất ơng ứng với mã số thứ nhất
so v i giá mà hãng tới mã số thứ nhất ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng ng v i mã s th hai ứng ít ới mã số thứ nhất ố của các hãng có cung ứng ít ứng ít
cung c p cũng m t hàng đóất 1 mặt hàng màu đỏ ặt hàng màu đỏ
j SELECT MSNCC
FROM CC C1, CC C2
WHERE C1.MSMH=C2.MSMH
AND C1.GiaTri>C2.GIATRI;
k Đ a ra mã s c a m t hàng đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c cung c p b i ất 1 mặt hàng màu đỏ ởi ít nhất hai hãng cung ứng
ít nh t hai hãng cung ngất 1 mặt hàng màu đỏ ứng ít
SELECT MSMH
FROM CC
GROUP BY MSMH
HAVING COUNT(MSNCC)>2;
l Đ a ra mã s c a m t hàng đ t nh t đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ắc) ất 1 mặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c cung
c p b i hãng Dustinất 1 mặt hàng màu đỏ ởi ít nhất hai hãng cung ứng
SELECT MSMH
FROM CC, NCC
WHERE CC.MSNCC=NCC.MSNCC
AND TENNCC=N’Dustin’
AND GIATRI>=ALL(
Trang 7SELECT GIATRI
FROM CC,NCC
WHERE CC.MSNCC=NCC.MSNCC
AND TENNCC=N’Dustin’);
m Đ a ra mã s c a m t hàng đưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ặt hàng màu đỏ ưa ra tên của những hãng có cung ứng ít ợc cung cấp c cung ng ứng ít
b i t t c các hãng mà giá ti n đ u nh h n ởi ít nhất hai hãng cung ứng ất 1 mặt hàng màu đỏ ả các ền) ền) ỏ ơng ứng với mã số thứ nhất
200
SELECT MSMH
FROM CC
WHERE GIATRI<200
GROUP BY MSMH
HAVING COUNT(MSNCC)=(
SELECT COUNT(MSNCC)
FROM NCC);
Câu 2:
Nhânviên(MSNV, H tên, Tu i, Lọtên, Tuổi, Lương) ổi, Lương) ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng)
Phòng(MSP, TênPhòng, Đ ađi m, Ngânquỹ, ịachỉ) ểm, Ngânquỹ,
MSTrưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngngphòng)
Làmvi c (MSNV, MSP, Th igian)ệc ( ờigian)
a Đ a ra tên và tu i c a các nhân viên làm vi c ưa ra tên của những hãng có cung ứng ít ổi, Lương) ủa những hãng có cung ứng ít ệc (
cho c phòng T ch c và K ho chả các ổi, Lương) ứng ít ế hoạch ại bỏ các
Trang 8L u ý dùng toán t =ANY ý nghĩa gi ng v i toán ưa ra tên của những hãng có cung ứng ít ử UNION nó sẽ loại bỏ các ố của các hãng có cung ứng ít ới mã số thứ nhất
t INử UNION nó sẽ loại bỏ các
Dùng ANY thì không ph i đ t tên l i nh IN.ả các ặt hàng màu đỏ ại bỏ các ưa ra tên của những hãng có cung ứng ít
SELECT HOTEN, TUOI
FROM NV, LV, P
WHERE NV.MSNV=LV.MSNV
AND P.MSP=LV.MSP
AND P.TENPHONG=N’T ch c’ổi, Lương) ứng ít
AND NV.MSNV = ANY(
SELECT NV.MSNV
FROM NV, LV, P
WHERE NV.MSNV=LV.MSNV
AND P.MSP=LV.MSP
AND P.TENPHONG=N’K ho ch’);ế hoạch ại bỏ các
b V i m i phòng v i trên 20 nhân viên, hãy đ a raới mã số thứ nhất ỗi phòng với trên 20 nhân viên, hãy đưa ra ới mã số thứ nhất ưa ra tên của những hãng có cung ứng ít
mã s phong và s nhân viên làm trong phòng ố của các hãng có cung ứng ít ố của các hãng có cung ứng ít
đó
SELECT MSP, COUNT(MSNV)
FROM P, NV, LV
WHERE P.MSP=LV.MSP
AND NV.MSNV=LV.MSNV
GROUP BY MSP
HAVING COUNT(MSNV)>20;
Trang 9c Đ a ra tên c a các nhân viên mà lưa ra tên của những hãng có cung ứng ít ủa những hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ơng ứng với mã số thứ nhất ng c a h ủa những hãng có cung ứng ít ọtên, Tuổi, Lương)
cao h n c ngân quỹ c a t t c các phòng mà ơng ứng với mã số thứ nhất ả các ủa những hãng có cung ứng ít ất 1 mặt hàng màu đỏ ả các
nhân viên đó làm vi cệc (
d
SELECT HOTEN
FROM NV, P ,LV
WHERE NV.MSNV=LV.MSNV
AND P.MSP=LV.MSP
AND LUONG >= MAX(NGANQUY);
e Đ a ra mã s trưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngng phòng c a nh ng ngủa những hãng có cung ứng ít ững hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ờigian)i
trưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngng phòng mà các phòng h qu n lý đ u có ọtên, Tuổi, Lương) ả các ền)
ngân quỹ > 1,000,000
SELECT MS_TRUONGPHONG
FROM P
GROUP BY MS_TRUONGPHONG
HAVING MIN(NGANQUY)>1000000;
f Đ a ra tên c a ngưa ra tên của những hãng có cung ứng ít ủa những hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ờigian)i trưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngng phòng mà phòng
đó có ngân quỹ l n nh tới mã số thứ nhất ất 1 mặt hàng màu đỏ
SELECT HOTEN
FROM NV, P
WHERE P.MS_TRUONGPHONG=NV.MSNV
AND NGANQUY>=ALL(
SELECT MAX(NGANQUY)
FROM P);
Trang 10g N u m t ngế hoạch ột mặt hàng nào đó với giá cao ưa ra tên của những hãng có cung ứng ít ờigian)i có th qu n lý nhi u phòng, ểm, Ngânquỹ, ả các ền)
ngưa ra tên của những hãng có cung ứng ít ờigian)i đó có quy n ki m soát ngân quỹ c a t t ền) ểm, Ngânquỹ, ủa những hãng có cung ứng ít ất 1 mặt hàng màu đỏ
c các phògn đó Hãy đ a ra mã s c a ngả các ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ờigian)i
trưa ra tên của những hãng có cung ứng ít ởi ít nhất hai hãng cung ứngng phòng mà t ng s ngân quỹ đổi, Lương) ố của các hãng có cung ứng ít ưa ra tên của những hãng có cung ứng ít ợc cung cấp c ki m ểm, Ngânquỹ,
soát b i ngởi ít nhất hai hãng cung ứng ưa ra tên của những hãng có cung ứng ít ờigian)i đó > 5,000,000
SELECT MS_TRUONGPHONG
FROM P
GROUP BY MS_TRUONGPHONG
HAVING SUM(NGANQUY)>5000000;
Câu 3:
Nhânviên(MãNV, H tên, Ngày sinh, MãP)ọtên, Tuổi, Lương)
Phòng(MãP, TênP, Đ ađi m, S ĐT)ịachỉ) ểm, Ngânquỹ, ố của các hãng có cung ứng ít
D án(MãDA, TênDA, Ngân sách)ự án(MãDA, TênDA, Ngân sách)
Thamgia(MãNV, MãDA, S gi thamgia)ố của các hãng có cung ứng ít ờigian)
a Đ a ra tên c a các d án có ngân sách n m ưa ra tên của những hãng có cung ứng ít ủa những hãng có cung ứng ít ự án(MãDA, TênDA, Ngân sách) ằm
trong kho ng t 50,000 đ n 100,000ả các ừ 50,000 đến 100,000 ế hoạch
SELECT TENDA
FROM DA
WHERE NGANSACH>50000 AND
NGANSACH<100000;
b Đ a ra h tên c a các nhân viên có tham gia làmưa ra tên của những hãng có cung ứng ít ọtên, Tuổi, Lương) ủa những hãng có cung ứng ít
d án “Qu n lý đào t o”ự án(MãDA, TênDA, Ngân sách) ả các ại bỏ các
SELECT HOTEN
Trang 11FROM NV, TG, DA
WHERE NV.MANV=TG.MANV
AND DA.MADA=TG.MADA
AND TENDA=N’Qu n lý đào t o’;ả các ại bỏ các
c Đ a ra mã s c a các nhân viên tham gia c hai ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ả các
d án “Qu n lý đào ta ” và “Đào t o t xa”ự án(MãDA, TênDA, Ngân sách) ả các ọtên, Tuổi, Lương) ại bỏ các ừ 50,000 đến 100,000
SELECT MANV
FROM TG, DA
WHERE TG.MADA=DA.MADA
AND TENDA=N’Qu n lý đào t o’ ả các ại bỏ các
AND MANV = ANY(
SELECT MANV
FROM TG, DA
WHERE TG.MADA=DA.MADA
AND TENDA=N’Đào t o t xa’);ại bỏ các ừ 50,000 đến 100,000
d Đ a ra mã s c a các nhân viên tham gia d án ưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít ự án(MãDA, TênDA, Ngân sách)
“Qu n lý đào t o” nh ng không tham gia d án ả các ại bỏ các ưa ra tên của những hãng có cung ứng ít ự án(MãDA, TênDA, Ngân sách)
“Đào t o t xa” ại bỏ các ừ 50,000 đến 100,000
SELECT MSNV
FROM TG, DA
WHERE TG.MSDA=DA.MSDA
AND TENDA=N’Qu n lý đào t o’ả các ại bỏ các
MINUS
SELECT MSNV
FROM TG, DA
WHERE TG.MSDA=DA.MSDA
Trang 12AND TENDA=N’Đào t o t xa’ại bỏ các ừ 50,000 đến 100,000
e Đ a ra mã s c a phòng không có nhân viên nàoưa ra tên của những hãng có cung ứng ít ố của các hãng có cung ứng ít ủa những hãng có cung ứng ít
tham gia d ánự án(MãDA, TênDA, Ngân sách)
SELECT MSP
FROM P
MINUS
SELECT MSP
FROM NV, P, TG
WHERE NV.MANV=TG.MANV
AND NV.MAP=P.MAP
f D án nào có t t c các nhân viên c a phòng ự án(MãDA, TênDA, Ngân sách) ất 1 mặt hàng màu đỏ ả các ủa những hãng có cung ứng ít
‘NCKH’ tham gia?
SELECT TENDA
FROM NV, P, TG, DA
WHERE NV.MANV=TG.MANV
AND TG.MADA=DA.MADA
AND NV.MAP=P.MAP
AND P.TENP=’NCKH’
GROUP BY TENDA, P.MAP
HAVING COUNT(TG.MANV) =(
SELECT COUNT(MANV)
FROM NV, P
WHERE NV.MAP=P.MAP
AND TENP=’NCKH’);
g Ngân sách trung bình c a các d án mà nhân ủa những hãng có cung ứng ít ự án(MãDA, TênDA, Ngân sách)
viên có mã s NV001 tham gia là bao nhi u?ố của các hãng có cung ứng ít ểm, Ngânquỹ,