Professional Documents
Culture Documents
SQL
SQL
go
select TENSV
from SVIEN
where MAKHOA='TOAN'
go
select TENMH,TINCHI
from MHOC
go
select MASV,MAHP,DIEM
from KQUA
where MASV='K26.0008'
go
select TENSV,MAMH
from KQUA Q,SVIEN S,HPHAN H
where (Q.DIEM>=7 and ((Q.MAHP = H.MAHP) and (
S.MASV=Q.MASV )))
go
select TENSV
from MHOC M,SVIEN S
where (TENMH = 'Toán rời rạc' and ( M.MAKHOA =
S.MAKHOA))
go
select TENSV,TENMH,DIEM
from HPHAN H,SVIEN S,KQUA K,MHOC M
where ((hocky =1) and (H.NAM = 1996) and
(H.MAMH=M.MAMH) and (H.MAHP=K.MAHP) and
(K.MASV=S.MASV))
go
--Cau 7: Liet ke mon hoc phai hoc ngay truoc mon CSDL
--Thuộc tính: TENMH, MAMH, MAMH_TRUOC
--Quan hệ: MHOC, DKIEN
--Điều kiện: Mhoc phai hoc truoc mon csdl
select tenmh
from mhoc
where mamh in
(select mamh_truoc
from mhoc m, dkien d
where tenmh='Cơ sở dữ liệu' and m.mamh=d.mamh)
go
select tenmh
from mhoc
where mamh in
(select d.mamh
from mhoc m, dkien d
where tenmh='Cơ sở dữ liệu' and d.mamh_truoc = m.mamh)
go
select TENSV,DIEM
from svien s,kqua k,hphan h,mhoc m
where ((TENMH='Cơ sở dữ liệu') and (h.HOCKY =1 ) and
(h.nam =1996) and (m.mamh = h.mamh) and (k.mahp=h.mahp)
and (k.masv=s.masv))
order by diem desc ,s.tensv
go
select MAHP, count (masv) as SL
from kqua
group by mahp
--Cau 12: Liệt kê tên Sinh viên và điểm trung bình của
SV đó ở từng học kỳ của từng niên học
--Thuộc tính: TENSV, MASV, HOCKY, NAM, DIEM
--Quan hệ: KQUA, SVIEN, HPHAN
--Điều kiện: điểm trong từng học kỳ của từng niên học
go
select Tensv,avg(diem) as DTB
from kqua k, svien s, hphan h
where k.masv=s.masv and k.mahp = h.mahp
group by k.masv,tensv,hocky,h.nam
go
select tensv, diem
from svien s,kqua k
where diem>=all(select diem from kqua) and
kqua.masv=svien.masv
go
--Cau 14: Liệt kê tên sinh viên đạt điểm cao nhất ở học
kỳ một năm 1996 của môn CSDL
--Thuộc tính: MAMH, MAHP, HOCKY, NAM, DIEM, TENMH
--Quan hệ: HPHAN, SVIEN, KQUA, MHOC
--Điều kiện: Điểm lớn nhất của môn CSDL ở HK 1 năm 1996
select TENSV
from HPHAN H,SVIEN S,KQUA K,MHOC M
where ((hocky =1) and (H.NAM = 1996) and
(H.MAMH=M.MAMH) and (H.MAHP=.MAHP) and (K.MASV=S.MASV))
and (diem>=all(select diem from kqua)) and tenmh = 'Cơ
sở dữ liệu'
go
go
select masv,tensv
from svien
where masv not in (select kq.masv from kqua kq, hphan
hp, mhoc mh where kq.mahp=hp.mahp and mh.tenmh = 'Toán
rời rạc' and mh.mamh = hp.mamh)
--Cau 18: liệt kê những môn học thuộc khoa toán nhưng
không được dạy ở HK 1 năm 1996
--Thuộc tính: MAKHOA, HOCKY, NAM, MAMH
--Quan hệ: MHOC, HPHAN
--Điều kiện: MAKHOA = ‘TOAN’ ^ HOCKY =1 ^ NAM = 1996
go
select *
from mhoc
where makhoa = 'toan' and mamh not in (select m.mamh
from mhoc m, hphan h where(hocky =1) and (H.NAM = 1996)
and (H.MAMH=m.MAMH))
--Cau 19: Liệt kê danh sách sinh viên năm 3 thuộc khoa
toán mà chưa đăng ký học môn cơ sở dữ liệu ở HK1 năm
1996
--Thuộc tính: MAKHOA, MASV, MAHP, MAMH, TENMH
--Quan hệ: MHOC, HPHAN, SVIEN, KQUA
--Điều kiện: SV năm 3 thuộc khoa toán mà chưa đăng ký
học môn CSDL
go
select Masv,Tensv
from svien
where nam=3 and makhoa = 'TOAN' and (masv not in
(select kq.masv from kqua kq, hphan hp, mhoc mh where
kq.mahp=hp.mahp and mh.tenmh ='Cơ sở dữ liệu' and
mh.mamh = hp.mamh))
select TENSV
from SVIEN s, KQUA q, HPHAN h
where s.masv=q.masv and h.mahp = q.mahp and h.hocky =1
and h.nam =1996
group by tensv, q.masv
having count (q.masv) >=3
Câu 1:Liệt kê MaDatPhong, MaDV, SoLuong của tất cả các dịch vụ có số lượng
lớn hơn 3 và
1. Đưa ra thông tin gồm mã số, họ tênvà tên khoa của tất cả các giảng viên
2. Đưa ra thông tin gồm mã số, họ tênvà tên khoa của các giảng viên của khoa
‘DIA LY va QLTN’
3. Cho biết số sinh viên của khoa ‘CONG NGHE SINH HOC’
4. Đưa ra danh sách gồm mã số, họ tênvà tuổi của các sinh viên khoa ‘TOAN’
5. Cho biết số giảng viên của khoa ‘CONG NGHE SINH HOC’
6. Cho biết thông tin về sinh viên không tham gia thực tập
7. Đưa ra mã khoa, tên khoa và số giảng viên của mỗi khoa
8. Cho biết số điện thoại của khoa mà sinh viên có tên ‘Le van son’ đang theo
học
II
9. Cho biết mã số và tên của các đề tài do giảng viên ‘Tran son’ hướng dẫn
10. Cho biết tên đề tài không có sinh viên nào thực tập
11. Cho biết mã số, họ tên, tên khoa của các giảng viên hướng dẫn từ 3 sinh
viên trở lên.
12. Cho biết mã số, tên đề tài của đề tài có kinh phí cao nhất
13. Cho biết mã số và tên các đề tài có nhiều hơn 2 sinh viên tham gia thực tập
14. Đưa ra mã số, họ tên và điểm của các sinh viên khoa ‘DIALY và QLTN’
15. Đưa ra tên khoa, số lượng sinh viên của mỗi khoa
16. Cho biết thông tin về các sinh viên thực tập tại quê nhà
17. Hãy cho biết thông tin về những sinh viên chưa có điểm thực tập
18. Đưa ra danh sách gồm mã số, họ tên các sinh viên có điểm thực tập bằng 0
ĐÁP ÁN
0
1 --Câu 1:
2 SELECT GV.Magv, GV.Hotengv, K.Tenkhoa
3 FROM TBLGiangVien GV join TBLKhoa K
4 ON GV.Makhoa = K.Makhoa
5 --Câu 2:
6 SELECT GV.Magv, GV.Hotengv, K.Tenkhoa
7 FROM TBLGiangVien GV JOIN TBLKhoa K
8 ON GV.Makhoa = K.Makhoa
9 WHERE K.Tenkhoa = 'Dia ly va QLTN'
10 --Câu 3:
11 SELECT COUNT(SV.MASV) AS SỐ_SV
12 FROM TBLSinhVien SV
13 --Câu 4:
14 SELECT SV.Masv, SV.Hotensv
15 FROM TBLSinhVien SV JOIN TBLKhoa K
16 ON SV.Makhoa = K.Makhoa
17 WHERE K.Tenkhoa='TOAN'
18 --Câu 5:
19 SELECT COUNT(GV.Magv) AS SỐ_GV
20 FROM TBLGiangVien GV join TBLKhoa K
21 ON GV.Makhoa = K.Makhoa
22 WHERE K.Tenkhoa='CONG NGHE SINH HOC'
23 --Câu 6:
24 SELECT SV.Masv,SV.Hotensv
25 FROM TBLSinhVien SV
26 WHERE NOT EXISTS(
27 SELECT HD.Masv
28 FROM TBLHuongDan HD
29 WHERE SV.Masv = HD.Masv)
30 --Câu 7:
31 SELECT K.Makhoa,K.Tenkhoa, COUNT(K.Makhoa) AS SỐ_GV
32 FROM TBLGiangVien GV JOIN TBLKhoa K
33 ON GV.Makhoa = K.Makhoa
34 GROUP BY K.Makhoa,K.Tenkhoa
35 --CÂU 8:
36 SELECT k.Dienthoai
37 FROM TBLKhoa K join TBLSinhVien SV
38 ON K.Makhoa = SV.Makhoa
39 WHERE SV.Hotensv = 'Le Van Son'
40 --CÂU 9:
41 SELECT DT.Madt,DT.Tendt
42 FROM TBLGiangVien GV join TBLHuongDan HD
43 ON GV.Magv = HD.Magv
44 join TBLDeTai DT
45 ON DT.Madt = HD.Madt
46 WHERE GV.Hotengv = 'Tran Son'
47 --Câu 10:
48 SELECT DT.Madt,DT.Tendt
49 FROM TBLDeTai DT
50 WHERE NOT EXISTS(
51 SELECT HD.Madt
52 FROM TBLHuongDan HD
53 WHERE HD.Madt = DT.Madt)
54 --Câu 11:
55 SELECT GV.Magv,GV.Hotengv,K.Tenkhoa
56 FROM TBLGiangVien GV JOIN TBLKhoa K
57 ON GV.Makhoa = K.Makhoa
58 WHERE GV.Magv IN (
59 SELECT HD.Magv
60 FROM TBLHuongDan HD
61 GROUP BY HD.Magv
62 HAVING COUNT(HD.Magv)>3)
63 --Câu 12:
64 SELECT DT.Madt,DT.Tendt
65 FROM TBLDeTai DT
66 WHERE DT.Kinhphi = (
67 SELECT MAX(DT.Kinhphi)
68 FROM TBLDeTai DT)
69 --Câu 13:
70 SELECT DT.Madt,DT.Tendt
71 FROM TBLDeTai DT
72 WHERE DT.Madt in (
73 SELECT HD.Madt
74 FROM TBLHuongDan HD
75 GROUP BY HD.Madt
76 HAVING COUNT(HD.Madt) > 2)
77 --Câu 14:
78 SELECT SV.Masv,SV.Hotensv,HD.KetQua
79 FROM TBLSinhVien SV JOIN TBLHuongDan HD
80 ON SV.Masv = HD.Masv
81 JOIN TBLKhoa K
82 ON K.Makhoa = SV.Makhoa
83 WHERE K.Tenkhoa = 'Dia ly va QLTN'
84 --Câu 15:
85 SELECT K.Tenkhoa, COUNT(SV.Masv) AS Số_SV
86 FROM TBLSinhVien SV JOIN TBLKhoa K
87 ON SV.Makhoa = K.Makhoa
88 GROUP BY K.Tenkhoa
89 --Câu 16:
90 SELECT *
91 FROM TBLSinhVien SV JOIN TBLHuongDan HD
92 ON HD.Masv = SV.Masv
93 JOIN TBLDeTai DT
94 ON DT.Madt = HD.Madt
95 WHERE SV.Quequan = DT.Noithuctap
96 --Câu 17:
97 SELECT *
98 FROM TBLSinhVien SV JOIN TBLHuongDan HD
99 ON HD.Masv = SV.Masv
100 WHERE HD.KetQua is Null
101 --Câu 18:
102 SELECT SV.Masv,SV.Hotensv
103 FROM TBLSinhVien SV JOIN TBLHuongDan HD
104 ON HD.Masv = SV.Masv
105 WHERE HD.KetQua = 0
106
Câu 1:Liệt kê MaDatPhong, MaDV, SoLuong của tất cả các dịch vụ có số lượng
lớn hơn 3 và nhỏ hơn 10. (1 điểm)
Câu 2: Cập nhật dữ liệu trên trường GiaPhong thuộc bảng PHONG tăng lên
10,000 VNĐ so với giá phòng hiện tại, chỉ cập nhật giá phòng của những phòng
có số khách tối đa lớn hơn 10. (1 điểm)
Câu 3: Xóa tất cả những đơn đặt phòng (từ bảng DAT_PHONG) có trạng thái
đặt (TrangThaiDat) là “Da huy”. (1 điểm)
II.
Câu 4: Hiển thị TenKH của những khách hàng có tên bắt đầu là một trong các
ký tự “H”, “N”, “M” và có độ dài tối đa là 20 ký tự. (1 điểm)
Câu 5: Hiển thị TenKH của tất cả các khách hàng có trong hệ thống, TenKH nào
trùng nhau thì chỉ hiển thị một lần. Sinh viên sử dụng hai cách khác nhau để
thực hiện yêu cầu trên, mỗi cách sẽ được 0,5 điểm. (1 điểm)
Câu 6: Hiển thị MaDV, TenDV, DonViTinh, DonGia của những dịch vụ đi kèm có
DonViTinh là “lon” và có DonGia lớn hơn 10,000 VNĐ hoặc những dịch vụ đi
kèm có DonViTinh là “Cai” và có DonGia nhỏ hơn 5,000 VNĐ. (1 điểm)
Câu 7: Hiển thị MaDatPhong, MaPhong, LoaiPhong, SoKhachToiDa, GiaPhong,
MaKH, TenKH, SoDT, NgayDat, GioBatDau, GioKetThuc, MaDichVu, SoLuong,
DonGia của những đơn đặt phòng có năm đặt phòng là “2016”, “2017” và đặt
những phòng có giá phòng > 50,000 VNĐ/ 1 giờ. (1 điểm)
III.
Câu 9: Hiển thị MaKH, TenKH, DiaChi, SoDT của những khách hàng đã
từng đặt phòng karaoke có địa chỉ ở “Hoa xuan”. (1 điểm)
Câu 10: Hiển thị MaPhong, LoaiPhong, SoKhachToiDa, GiaPhong, SoLanDat của
những phòng được khách hàng đặt có số lần đặt lớn hơn 2 lần và trạng thái đặt
là “Da dat”. (1 điểm)
Câu 1:
Câu 2:
UPDATE phong
SET GIAPHONG = GIAPHONG + 10
WHERE SOKHACHTOIDA > 10
Câu 3:
DELETE
FROM dat_phong
WHERE TRANGTHAIDAT = 'DA HUY'
Câu 4:
SELECT TENKH
FROM khach_hang
WHERE TENKH LIKE '[HNM]%' and LEN(TENKH) <= 20
Câu 5:
SELECT TENKH
FROM khach_hang
GROUP BY TENKH
Câu 6:
Câu 7: // Sử dụng JOIN kết nối các bảng và dùng hàm hỗ trợ của SQL thôi ^^!
Câu 8: // trong thực tế k tính thời gian bằng GIOKETHUC - GIOBATDAU đâu đây là người ta cho
sẵn biểu thức thế thôi, mà chúng ta phải dùng hàm TIMEDIFF(time_end, time_start ) để
tính chính xác thời gian và lấy ra Giờ phút giây của nó bằng hàm DATEPART(), tiếp đó tính
tổng số giây. Nó cho giá phòng trong 1 giờ thì chúng ta phải đổi ra 1 giây bao nhiêu tiền,
Tổng tiền phòng bằng tổng giây * tiền phòng 1 giây ^^!
Câu 9: // Câu này có thể dùng IN hoặc EXIST khuyến khích dùng EXISTS vì SQL SERVER sẽ đưa
ra kết quả nhanh hơn
Câu 10: // Câu 10 điểm này theo mình thì là câu cho điểm 10 :D