Bài tập thực hành SQL SERVER có đáp án. Hướng dẫn chi tiết về đáp án. bài tập củng cố thêm kiến thức về viết câu lệnh sql, ôn tập câu truy vấn, toán tử gộp, điều kiện, nhóm trong ngôn ngữ sql. Bài tập thực hành SQL này rất hữu ích.
Trang 1Bài tập SQL SERVER
Bài t p th c hành c s d li u SQL SERVER ập thực hành cơ sở dữ liệu SQL SERVER ực hành cơ sở dữ liệu SQL SERVER ơ sở dữ liệu SQL SERVER ở dữ liệu SQL SERVER ữ liệu SQL SERVER ệu SQL SERVER
1 Nội dung
- Viết scrip thêm/xóa/sửa d liữ li ệu
- Kiểm tra ràng buộc khóa chính, khóa ngo iại
- Tạio rule để kiểm tra ràng buộc miền giá trị
- Truy v nấn d liữ li ệu v i ới công c Quụ Qu ery Analyzer
- Truy v nấn d liữ li ệu v i pới hép tích, phép kết
- Truy v nấn d liữ li ệu nâng cao
2 File c s d li u ơ sở dữ liệu SQL SERVER ở dữ liệu SQL SERVER ữ liệu SQL SERVER ệu SQL SERVER
Các b n down file c s d li u t i link:ại ơ sở dữ liệu tại link: ở dữ liệu tại link: ữ li ệ ại
https://www.dropbox.com/s/9r0ax2p64bs53co/ CSDL.zip?dl=0
Các b n restore c s d li u vào trình qu n lý c a ại ơ sở dữ liệu tại link: ở dữ liệu tại link: ữ li ệ ản lý của ủa sql server:
sql server management studio.
3 Quan h gi a các b ng ệu SQL SERVER ữ liệu SQL SERVER ảng
Trang 2Bài tập SQL SERVER
Trang 34 Đ bài ề bài
a Truy v n ấn cơ b n ản
1 Cho biết thông tin (mã c uầu th ,ủa họ tên, số áo, vị trí, ngày sinh, địa ch )ỉ) c aủa t tấn cản lý của các c u ầu th ’.ủa
2 Hiển thị thông tin t tấn cản lý của các c u thầu ủa có số áo là 7
ch iơ sở dữ liệu tại link: ở dữ liệu tại link: vị trí Ti n ề bài v ệu SQL SERVER
3 Cho biết tên, ngày sinh, đ aị ch ,ỉ) điện tho iại c aủa
t tấn cản lý của các hu n lấn uyện viên
4 Hiển thi thông tin t tấn cản lý của các c u thầu ủa có quốc tịch Việt Nam thuộc câu l cại bộ Becamex Bình Dư ng.ơ sở dữ liệu tại link:
5 Cho biết mã số, h ọ tên, ngày sinh, đ aị chỉ) và vị trí của a các c u thầu ủa thuộc đội bóng ‘SHB Đà N ng’ẵng’ có quốc tịch “Bra–xin”
Trang 46 Hiển thị thông tin t tấn cản lý của các c u thầu ủa đang thi đ uấn trong câu l cại bộ có sân nhà là “Long An”
7 Cho biết kết quản lý của (MATRAN, NGAYTD, TENSAN, TENCLB1, TENCLB2, KETQUA) các tr nận đ uấn vòng 2
c aủa mùa bóng năm 2009
8 Cho biết mã hu n luấn yện viên, họ tên, ngày sinh, địa ch ,ỉ) vai trò và tên CLB đang làm vi c ệ c aủa các hu nấn luyện viên có quốc t chị “ViệtNam”
9 L y ấn tên 3 câu lạic bộ có điể m cao nhấnt sau vòng 3 năm 2009
10 Cho biết mã hu n luấn yện viên, họ tên, ngày sinh,
đ aị ch ,ỉ) vai trò và tên CLB đang làm việc mà câu l cại
bộ đó đóng ở dữ liệu tại link: tỉ)nh Binh Dư ng.ơ sở dữ liệu tại link:
b Các phép
toán trên nhóm
1 Thống kê số lư ngợng c uầu thủa c aủa mỗi câu l cại b ộ
2 Thống kê số lư ngợng c uầu thủa nư cới ngoài (có quốc tịch Việt Nam) c aủa mỗi câu l cại b ộ
3 Cho biết mã câu l cại bộ, tên câu l cại bộ, tên sân
v nận động, đ aị chỉ) và số lư ng cợng ầuu thủa nư cới ngoài (có quốc t chị khác Việt Nam) tư ngơ sở dữ liệu tại link: ứng c aủa các câu l cại
bộ có nhiều h n 2 ơ sở dữ liệu tại link: c u th nầu ủa ư cới ngoài
4 Cho biết tên t nh,ỉ) số lư ngợng c u thầu ủa đang t hi
đ uấn ở dữ liệu tại link: vị trí tiền đạio trong các câu l cại b ộ thuộc
đ aị bàn t nhỉ) đó qu n ản lý của lý
Trang 55 Cho biết tên câu l cại bộ, tên t nh ỉ) mà CLB đang đóng nằm ở dữ liệu tại link: vị trí cao nh tấn c aủa b ng ản lý của xếp h ng ại vòng 3, năm 2009
c Các toán t nâng ử nâng cao
1 Cho biết tên hu n lấn uyện viên đang n mắm giữ li
một vị trí trong một câu l cại bộ mà chưa có s ố điện tho i.ại
2 Liệt kê các hu n luấn yện viên thuộc quốc gia
Vi t ệu SQL SERVER Nam chưa làm công tác hu n luấn yện t iại b tấn
kỳ một câu lạic bộ nào
3 Liệt kê các c uầu th ủa đang thi đ u ấn trong các câu lạic
bộ có th h ng ứ ại ở dữ liệu tại link: vòng 3 năm 2009 l n ới h n 6ơ sở dữ liệu tại link: ho cặc nhỏ h n 3.ơ sở dữ liệu tại link:
4 Cho biết danh sách các trậnn đ u (NGấn AYTD,
TENSAN, TENCLB1, TENCLB2, KETQUA) c aủa câu lạic
bộ (CLB) đang xếp h ng ại cao nhấnt tính đến hết vòng
3 năm 2009
Trang 65 Đáp án
a Truy v n c b n ấn cơ bản ơ sở dữ liệu SQL SERVER ảng
1 Cho biết thông tin (mã c uầu th ,ủa họ tên, số áo,
vị trí, ngày sinh, địa ch )ỉ) c aủa t tấn cản lý của các c u ầu th ’.ủa
SQL:
SELECT * FROM CAUTHU;
2 Hiển thị thông tin t tấn cản lý của các c u thầu ủa có số áo là
7 ch iơ sở dữ liệu tại link: ở dữ liệu tại link: vị trí Ti n ề bài v ệu SQL SERVER
SQL:
SELECT * FROM CAUTHU WHERE VITRI=N'Ti n ề
v ' and SO='7';ệ
3 Cho biết tên, ngày sinh, đ aị ch ,ỉ) điện tho iại c aủa
t tấn cản lý của các hu n lấn uyện viên
SQL: SELECT
TENHLV,NGAYSINH,DIACHI,DIENTHOAI from
HUANLUYENVIEN;
Trang 74 Hiển thi thông tin t tấn cản lý của các c u thầu ủa có quốc tịch Việt Nam thuộc câu l cại bộ Becamex Bình
Dư ngơ sở dữ liệu tại link:
SQL:
SELECT
MACT,HOTEN,VITRI,NGAYSINH,DIACHI,SO
FROM CAUTHU, QUOCGIA, CAULACBO
WHERE CAUTHU.MAQG=QUOCGIA.MAQG
AND CAUTHU.MACLB=CAULACBO.MACLB
AND TENQG = N'Vi t Nam'ệ
AND TENCLB=N'Becamex Bình Dươ sở dữ liệu tại link:ng';
5 Cho biết mã số, h ọ tên, ngày sinh, đ aị chỉ) và vị trí của a các c u thầu ủa thuộc đội bóng ‘SHB Đà N ng’ẵng’
có quốc tịch “Bra –xin”
SELECT MACT,HOTEN,NGAYSINH,DIACHI,SO
FROM CAUTHU, CAULACBO, QUOCGIA
WHERE CAUTHU.MACLB=CAULACBO.MACLB
AND CAUTHU.MAQG=QUOCGIA.MAQG
AND CAULACBO.TENCLB=N'SHB Đà N ng'ẵng’
AND QUOCGIA.TENQG='Brazil';
Trang 86 Hiển thị thông tin t tấn cản lý của các c u thầu ủa đang thi
đ uấn trong câu l cại bộ có sân nhà là “Long An”
SELECT
MACT,HOTEN,NGAYSINH,CAUTHU.DIACHI,
SO
FROM CAUTHU, CAULACBO, SANVD
WHERE CAUTHU.MACLB=CAULACBO.MACLB
AND CAULACBO.MASAN=SANVD.MASAN
AND TENSAN=N'Long An';
7 Cho biết kết quản lý của (MATRAN, NGAYTD, TENSAN, TENCLB1, TENCLB2, KETQUA) các tr nận đ uấn vòng
2 c aủa mùa bóng năm 2009
SELECT
MATRAN,NGAYTD,SANVD.TENSAN,a.TENCLB,b.TE NCLB, KETQUA
FROM TRANDAU,SANVD,CAULACBO as a,
CAULACBO as b
WHERE TRANDAU.MASAN=SANVD.MASAN
AND TRANDAU.MACLB1=a.MACLB
AND TRANDAU.MACLB2=b.MACLB
AND NAM='2009'
AND VONG='2';
Trang 98 Cho biết mã hu n luấn yện viên, họ tên, ngày sinh, địa ch ,ỉ) vai trò và tên CLB đang làm vi c ệ c aủa các
hu n lấn uyện viên có quốc t chị “ViệtNam”
SELECT HLV.MAHLV,HLV.TENHLV,NGAYSINH, DIACHI,VAITRO,TENCLB
FROM HLV_CLB,QUOCGIA,HUANLUYENVIEN AS HLV,CAULACBO
WHERE QUOCGIA.MAQG=HLV.MAQG
AND HLV.MAHLV=HLV_CLB.MAHLV
AND HLV_CLB.MACLB=CAULACBO.MACLB
AND QUOCGIA.TENQG=N'Vi t Nam';ệ
9 L y ấn tên 3 câu lạic bộ có điể m cao nhấnt sau vòng
3 năm 2009
SELECT TOP 3 TENCLB
FROM BANGXH,CAULACBO
WHERE BANGXH.MACLB=CAULACBO.MACLB
AND VONG='3'
ORDER BY DIEM desc;
Trang 1010 Cho biết mã hu n luấn yện viên, họ tên, ngày sinh, đ aị ch ,ỉ) vai trò và tên CLB đang làm việc mà câu l cại bộ đó đóng ở dữ liệu tại link: tỉ)nh Binh Dư ngơ sở dữ liệu tại link:
SELECT
HUANLUYENVIEN.MAHLV,TENHLV,DIACHI,NGAY SINH,VAITRO,TENCLB
FROM HUANLUYENVIEN,HLV_CLB,CAULACBO, TINH
WHERE
HUANLUYENVIEN.MAHLV=HLV_CLB.MAHLV
AND HLV_CLB.MACLB=CAULACBO.MACLB
AND CAULACBO.MATINH=TINH.MATINH
AND TENTINH=N'Bình Dươ sở dữ liệu tại link:ng';
b Các phép toán trên nhóm
1 Thống kê số lư ngợng c uầu thủa c aủa mỗi câu l cại bộ
SELECT TENCLB, COUNT(TENCLB)
FROM CAUTHU,CAULACBO
WHERE CAULACBO.MACLB=CAUTHU.MACLB GROUP BY TENCLB;
2 Thống kê số lư ngợng c uầu thủa nư cới ngoài (có quốc tịch Việt Nam) c aủa mỗi câu l cại b ộ
Trang 11SELECT TENCLB,COUNT(HOTEN)
FROM CAUTHU , CAULACBO, QUOCGIA
WHERE CAULACBO.MACLB=CAUTHU.MACLB
AND CAUTHU.MAQG=QUOCGIA.MAQG
AND TENQG !=N'Vi t Nam'ệ
GROUP BY TENCLB
3 Cho biết mã câu l cại bộ, tên câu l cại bộ, tên sân
v nận động, đ aị chỉ) và số lư ng cợng ầuu thủa nư cới ngoài (có quốc t chị khác Việt Nam) tư ngơ sở dữ liệu tại link: ứng c aủa các câu l cại bộ có nhiều h n 2 ơ sở dữ liệu tại link: c u th nầu ủa ư cới ngoài
4 Cho biết tên t nh,ỉ) số lư ngợng c u thầu ủa đang t hi
đ uấn ở dữ liệu tại link: vị trí tiền đạio trong các câu l cại b ộ thuộc
đ aị bàn t nhỉ) đó qu n ản lý của lý
SELECT TENTINH,COUNT(HOTEN)
FROM TINH,CAUTHU,CAULACBO
WHERE CAULACBO.MATINH=TINH.MATINH
AND CAUTHU.MACLB=CAULACBO.MACLB
AND VITRI=N'Ti n đ o'ề ại
GROUP BY TENTINH
Trang 125 Cho biết tên câu l cại bộ, tên t nh ỉ) mà CLB đang đóng nằm ở dữ liệu tại link: vị trí cao nh tấn c aủa b ng ản lý của xếp h ng ại vòng 3, năm 2009
SELECT TENCLB,TENTINH
FROM CAULACBO,TINH,BANGXH
WHERE CAULACBO.MATINH=TINH.MATINH AND BANGXH.MACLB=CAULACBO.MACLB
AND NAM='2009'
AND VONG='3'
AND HANG='1'
c Các toán t nâng caoử
1 Cho biết tên hu n lấn uyện viên đang n mắm giữ li một vị trí trong một câu l cại bộ mà chưa có s ố điện tho iại
SELECT TENHLV
FROM HUANLUYENVIEN, HLV_CLB
WHERE HUANLUYENVIEN.MAHLV=
HLV_CLB.MAHLV
AND DIENTHOAI IS NULL
Trang 132 Liệt kê các hu n luấn yện viên thuộc quốc gia
Vi t ệu SQL SERVER Nam chưa làm công tác hu n luấn yện t iại b tấn
kỳ một câu lạic bộ nào
SELECT TENHLV
FROM HUANLUYENVIEN, QUOCGIA
WHERE
HUANLUYENVIEN.MAQG=QUOCGIA.MAQG
AND TENQG=N'Vi t Nam'ệ
AND MAHLV NOT IN(
SELECT MAHLV
FROM HLV_CLB
WHERE HUANLUYENVIEN.MAHLV=
HLV_CLB.MAHLV)
3 Liệt kê các c uầu th ủa đang thi đ u ấn trong các câu lạic bộ có th h ng ứ ại ở dữ liệu tại link: vòng 3 năm 2009 l n ới h n 6ơ sở dữ liệu tại link:
ho cặc nhỏ h n 3.ơ sở dữ liệu tại link:
SELECT HOTEN
Trang 14FROM CAULACBO,CAUTHU
WHERE CAUTHU.MACLB=CAULACBO.MACLB GROUP BY CAULACBO.MACLB, HOTEN
HAVING CAULACBO.MACLB IN(
SELECT MACLB
FROM BANGXH
WHERE CAULACBO.MACLB=BANGXH.MACLB AND VONG='3' and NAM='2009'
AND HANG>6 or HANG<3)
4 Cho biết danh sách các trậnn đ u (NGấn AYTD, TENSAN, TENCLB1, TENCLB2, KETQUA) c aủa câu lạic bộ (CLB) đang xếp h ng ại cao nhấnt tính đến hết vòng 3 năm 2009
Câu này ta s d ng toán t UNION ALL đ g p 2 ử ụ Qu ử ể ộ
t p b n ghi có các trận ản lý của ường hoàn toàn giống nhau ng hoàn toàn gi ng nhau ố
N u các b n bi t d li u các b n ghi c a 2 t p ế ại ế ữ li ệ ản lý của ủa ận
b n ghi là khác nhau thì s d ng UNION ALL sẽ ản lý của ử ụ Qu nhanh h n vì toán t UNION sau ghi g p xong nó ơ sở dữ liệu tại link: ử ộ
sẽ ti n hành lo i b các b n ghi có d li u gi ng ế ại ỏ ản lý của ữ li ệ ố nhau câu này ta truy v n tìm các tr n sân nhà Ở câu này ta truy vấn tìm các trận sân nhà ấn ận
trưới ủa c c a đ i có th h ng cao nh t sau đó ta ộ ứ ại ấn UNION v i câu truy v n tìm các tr n sân khách ới ấn ận
c a đ i có th h ng cao nh t.ủa ộ ứ ại ấn
SELECT DISTINCT NGAYTD,TENSAN,A.TENCLB ChuNha,B.TENCLB DoiKhach, KETQUA
Trang 15FROM TRANDAU,SANVD,CAULACBO A,CAULACBO B
WHERE TRANDAU.MASAN=SANVD.MASAN
AND TRANDAU.MACLB1=A.MACLB
AND TRANDAU.MACLB2=B.MACLB
AND TRANDAU.VONG <='3'
AND MACLB1 IN(
SELECT MACLB
FROM BANGXH
WHERE HANG='1' and VONG='3')
UNION ALL
SELECT DISTINCT NGAYTD,TENSAN,A.TENCLB ChuNha,B.TENCLB DoiKhach,KETQUA
FROM TRANDAU,SANVD,CAULACBO A,CAULACBO B
WHERE TRANDAU.MASAN=SANVD.MASAN
AND TRANDAU.MACLB1=A.MACLB
AND TRANDAU.MACLB2=B.MACLB
AND TRANDAU.VONG <='3'
AND MACLB2 IN(
SELECT MACLB
FROM BANGXH
WHERE HANG='1' and VONG='3')