ĐỀ SÔ 1
Câu 1: Trình bày một số nhiệm vụ cơ bản của người quản trị SQL server (3 đ)
Câu 2:
Để quản lý việc kinh doanh, người ta xây dựng một cơ sở dữ liệu QTKD.MDF với các bảng có các trường sau:
Khach_hang MaKH (Char(5)); Ten_KH(Nvarchar(30)); Diachi(Nvarchar(30))
Don_dat_hang MaKH(Char(5)); MaDon(Smallint); Ngay_DH(Datetime);
Chi_tiet_DDH MaDon(Smallint); MaHG(Char(5)); SL(Smallint)
Mat_hang MaHG(Char(5)); Ten_hang(Nvarchar(30); Don_gia_ban(Smallint)
Dưới đây là một số dữ liệu mẫu của 4 bảng trên:
B
Bảng 2: Don_dat_hang
madon
|
makh
|
Ngay_DH
|
1
|
KH001
|
20/10/2004
|
2
|
KH002
|
16/07/2004
|
3
|
KH003
|
01/08/2004
|
4
|
KH003
|
02/10/2004
|
---
|
----
|
---
|
ảng 1: Khach_hang
Makh
|
Ten_KH
|
Dia_chi
|
KH001
|
Đoàn Thế Anh
|
Hải Phòng
|
KH002
|
Đỗ Thị Nhân Ái
|
Nam Định
|
KH003
|
Nguyễn Thành Công
|
Nam Định
|
KH004
|
Nguyễn Thị Cúc
|
TP Hồ Chí Minh
|
KH005
|
Trần Thị Kim
|
Thanh Hoá
|
---
|
--
|
----
|
B
Bảng 4: Mặt hàng
Mahg
|
ten_hang
|
Don_gia_ban
|
HH001
|
Sắt phi 6
|
4000
|
HH002
|
Xi măng
|
70000
|
HH003
|
Gạch men
|
55000
|
HH004
|
Tôn lạnh
|
55000
|
----
|
----
|
----
|
ảng 3: Chi_tiet_DDH
Madon
|
MaHG
|
SL
|
1
|
HH001
|
170
|
1
|
HH002
|
150
|
1
|
HH003
|
130
|
2
|
HH002
|
100
|
2
|
HH003
|
100
|
2
|
HH004
|
120
|
3
|
HH003
|
110
|
3
|
HH004
|
100
|
4
|
HH001
|
160
|
4
|
HH004
|
180
|
----
|
-----
|
-----
|
Dùng ngôn ngữ T-SQL thực hiện các yêu cầu sau:
Viết lệnh SQL tính số lượng các khách hàng ở mỗi tỉnh Hải phòng, Thanh hoá, Nam Định
Viết lệnh SQL lấy ra danh sách các mặt hàng có đơn giá bán bằng đơn giá của mặt hàng Xi măng hoặc Gạch men
Xây dựng một View có tên V_Tri_gia cho xem tên hàng, số lượng, đơn giá bán, trị giá (SL* don_gia_ban) từng mặt hàng trong các đơn đặt hàng
Xây dựng một View có tên V_Tongtien cho xem tổng tiền của mỗi đơn đặt hàng có trị giá trên 2000000 đồng.
Viết một thủ tục chứa có tên SP_huy_chi_tiet cho phép huỷ các mặt hàng ra khỏi bảng Chi_tiet_DDH với Madon được cho bởi tham số @Madon và có số lượng (SL) lớn hơn một giá trị @SL nào đó .
Viết một thủ tục chứa có tên SP_Sua_SL cho phép sửa lại số lượng hàng trong bảng Chi_tiet_DDH với Madon, MaHG, SL được đưa vào khi thực thi (execute) thủ tục.
Viết hàm F_So_luong( ) với tham số vào là @madon trả về (return) số lượng các mặt hàng có Madon = @madon và đơn giá bán lớn hơn một giá trị @Don_gia_ban nào đó trong bảng chi_tiet_DDH
ĐÁP ÁN ĐỀ 1
Câu 2
Ý
|
NỘI DUNG
|
a
|
Select Dia_chi, Count(*) as SL from Khach_hang where Dia_chi In (N’Hải phòng’, N’Thanh hoá’, N’Nam Định’) group by Dia_chi
|
b
|
Select Ten_hang, Don_gia from Mat_hang Where
Don_gia IN (Select Don_gia from Mat_hang where Ten_hang = ‘Xi măng’ or Ten_hang = ‘Gạch men’)
|
c
|
CREATE VIEW V_Tri_gia
AS SELECT A.Madon, Ten_hang, SL, Don_gia_ban, SL*Don_Gia_ban as Tri_gia From Don_dat_hang A Inner Join chi_tiet_DDH B ON A.Madon = B.Madon.
|
d
|
CREATE VIEW V_Tongtien AS
SELECT Madon, SUM(TRI_GIA) as Tong_tien from V_Tri_gia where SUM(TRI_GIA) >= 2000000 group by Madon
|
e
|
CREATE PROCEDURE SP_huy_chi_tiet
@Madon Smallint, @SL SmallInt
As Delete from Chi_tiet_DDH where Madon = @Madon and SL >= @SL
|
f
|
CREATE PROCEDURE SP_Sua_SL
@Madon Smallint, @MaHG Char(5), @SL Smallint
AS
Update Chi_tiet_DDH set SL = @SL where Madon = @Madon and MaHG = @MaHG
|
g
|
CREATE FUNCTION F_So_luong(@madon Smallint, @Don_gia_ban Smallint ) Returns smallint AS
Begin
Return (Select count(*) from Chi_tiet_DDH
where Madon = @madon and Don_Gia_ban >= @Don_gia_ban)
End
|
ĐỀ SÔ 2
Câu 1: Trình bày các khả năng bảo mật trong SQL Server. (3 điểm)
Câu 2: Để quản lý nhân viên người ta xây dựng một cơ sở dữ liệu QLNV.MDF với các bảng có các trường sau:
Nhanvien: MaNV (Char(5)) ; hoten (NVarChar(30)); Maph (Char(2)); MaCV (Char(2)), Hesl (real)
Phong: Maph (Char(2)); TenPhong (NVarChar(20))
Chucvu : MaCV (Char(2)); Tenchucvu (NVarChar(20)), Phucap(int)
Dưới đây là một số dữ liệu mẫu của các bảng trên:
Bảng: Phong Bảng: Chucvu
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANEAAAB/CAIAAAD+TrAmAAAACXBIWXMAAA7EAAAOxQGMMD9aAAALdklEQVR4nO1da6gWRRhePwT9kX9CzKgfpkHSIU6WZYmZBalJHq0kuxwvEeVRAssunKBIKSq6qD9Cj/3xkpRGFz1GHQ3KzDJLu0CGRV6IIiITyrLjn89ez+Q038zs7MzszOx8u+/DYfl2dnbeuTz7zDs37Z8kSb1eP/rb90kcGHzWyKjyg8gPaNMjv+6nt/0LzAqimkDOIUIDOYcIjQbOQb9Lf+/f98ngwWeyTx96ePHqtRvIb7Z71gdN3+71YGDrQYTbzDdLnThEA+eAZyNbxj6waMELS1fs2PnpTdOn0Ef79n03fPgwGs3OGFSrujnjwfKlT05rmzxo0Bkkw5DzY8f+2tzdc9+iR90aaqI6cYVGnesTtrYbJgHn3nyjm+Vc99tbb5nR9tjjz9BoJcYTSzrb75jBBQL/IBCYV0iWygSJP9fScsHkiRN6tm0HbYPfEPLTz78c/f3oiBHDHBres/fr3n96W1tboC0dJusE46+60uIRC6CmRbks6iTNEDTZueecbZqBMJCPIW66uQ04t2btq889uxhut2zZOnfObVycAwcOv/Z6Nygi/Ibu+O672on+0Z7ilfVd69ZtgHTgx8TrJrDvQo2MvrQVYt4551ZiIiqQL039CPixceNb4OC+tGop6RBowXd/0jNkyOD2WR2PdN5P4lvXyc6duzd3vwtWIHBa2/Xjxo1RGwK8uemd1osuBIGABhozdjKEfPXFB1HxT8658eOugCsUdeHCeQMHDDh48PD8jrlcHFIecEeOHDkKXuC+b75d/3JXwjgoI4YPgxCotek3z9n0xlpSXwS0CsBEhJzLBBBu8pSZPe9shMzD0Or438eh2/2/4H0dAhAL/sjIwK5OSDRihVgkrygMrexaA/4P+U2efvj+5qgIl6RxDhSLjCQ++/xLuJ0580YxDnxkvb0nktPuHRSbi0DKTKoVPla2fpsdoHBwBVlK+igCVzLgyHzRqE66Vq2mVsgVQtSvEIebxdXXTottRJw6P0dGEvfMWwS+HREwDqT6oEfQMdOkepYGwjN2vPnHn8dMHbjMOhE/YzGEA3TZt7d3gCgCR6FvTfrGQ0a5CoBUztGRRMe8O6URYITx9DPLVq54XqeuwR2xz2N8gOIAY3LqR2adECtGr4CPCLSDXpjckhmfPJn0gQbOgWdGrqS7JCMJKubkKY0AhCOfXZrUkaETOCXJqa7nel8l8AmuyDQcigNsACExHcsb1UnHvLlghYgWXEmI+hUQAhijHPphT4SzARQNnIOhALmSL/jyy0bBoIx7SiPMnn0rcG7+ggdBCMFRBb8BHFhwpWlpDx/68eJLrgGxpM4y7YzYXonbdBAVuCLTcCgOFGrbe9unDpwEtyd6TwD5dEpnVCeQJjjNXavWgG6BwsFvQnHFKzs+2gWNct75o2k49K3i+K9YNOpcY9vDF8kOebinIONsiMgbMsJSpB8/FBmG0nHuvE7pTOsESAY+H+f2KV6ZOnUSN4yAWwiMauhaxTX+mJU1Jzo7l3BjvvZZHVERLvHBOVb5o23awHkLVifg52zufhecv6FDh5CQ5cue8mfODqc4V6vVPKVut3rtLz8UJ0+e7Nevn28rUgRY0edGuzGALfUpztXr9eIyUwAIpwntqlb2GBCdPweECMYDpF0YcG0aHefsGGDNVKRdAHDVGx3nLNhDXkHaRYsS6lwewhEg7bwiQ+fEMSP3Aongr3lY9igGsDpxjMDSzncZq4YMneM0o9YH9pZE8Jc/rqU50/S3+i0FFJmnEyjINrcw8+c4hgVoDJZbaeZEIur3repvhp23Q7VzhbL5c5miSyOoU2aniCnb6LuaiSCkMNO5kLNlphZZHeJ8AA4KLQSqgbZxMaUJmgoqgkJL5wr8rI0ssr2wVPDUFFEvf0ldSYQFtHSuwCr218BcsnSUSqROcwUWyWeBsvlz+mBLbj0bh5pngVKtQ+iMW8W5nkSmeVTqpOlIE0FoIkPniFeUVq3cOM5H1Svsik498fTVqdE47HwvS1apraSRoFwiCCNk6Jy6TgPPz2Xa1clP2iQzd6uWOqRaHlTXn0MUhVL5cw4BRnHhyxNQ52I0XW7IdY7dgoZXvHq99meZiFe8BrhG17cW5c8h/AH9OURocG0aHedQ58oH1DlEaGTonLgWxL5Q879nmPsmarJdVVyg0aqUtY6qX8zztPTI0Dk6pqWx6W1auFtwaXL5kQaK2UuD+EVpQv1iJuHsjJYGZv5c/fReSK5aabhzWFNZyk5pHOvEpY/8GS0NLP25YF2DdccnhrCNzSWbFp4ZIa2vZ7XW2mhZYaZzaR+xPwdFmrJ+18a2uhiu/s1B6lGIv1lz+Y2WElo6V+AXKbWoZqH4VN3P6rh9mtlwaLTE0NI5dQV5/UztEvfnMFWZK66Qd37Od79gRzi223Kbn6r1gz6Qax1CnDxz3h6RtHGV3S/nyNA56cxIwuiH72lhqV3pRHGavLFZZSeNFeHS+T92qpmLyd5mJq5ptMTI0LnCXWBxIjAzM5l5syiU2kRmDu2MlhW43ooIjVz+XABUqtOpCFDnEKEh17lL791VRGYQVcR/nNv7otZ/Mx8G+AGUDBy7outboe8fteDjor4Bo614CB2AgjSBP4c6VzI0wbgVdK7oXCBcAnUOERoZOieukYuLTmIqDsHqnGLBni46Sbc5oUMWFZydh/DUrpzOpe15TJiVUNOlMERgmPlzip3WnsDqnM6SpXqnJCIGOPDnvLaxkT8nPQaRZB1EkG6NqfgxGa/Iex7C91Yc/XGr+nQCCzFQSj6knSfkOg/B+naeaKevc0bWkVIFItd5CBrurwmN5ucs8oDOX3iUZ37O4hgESl0hsF+HCDNX4m8dAke4RcHyPAT7NPE5byLVucxTGvSp0RBHOrZALXQOy/MQ6kcOIdU5nVMRikDFUwWJEa5QHn8O0SzAfSUSi+QHunqe0Bw6F1LqKMXBKPmNQusWeB4CERocu2I8D4EoN6LrW3EKrXxoAn+u6CwgHKMJxq36tENRbAqUR+fowkNI2uFhRAvkOg/BRvO33qpeG2D3tvjIgCJXKKt2sD8PQUO85i9tx540P2FIIBIOyWcE+/MQ6kBXUDcnZzoY4RLha0ToI5c/F6DSM88OinvmOPlRrGWxj7jDY2LK4mZ3NjI6dvqwPw8RsiOjt3Xhn1lNy5i4iyntGKJISlE+6a2YIAqeKSzPQwSr5bTtRhzzpNH0M6kfE7mVH/bnITgfzlPnksYGlnmcXJnC1B/FTXU5YenPqYeTDqFpyOIwBPeuZhHyGEIQNN86hFt+45RHeOQ6DxEAmd26VHVEl19aEFGouKkQ6SPx1EXizbUoJTJ0rnDPOm1mxDQDCqcwLULmK/rWESzKs96KaBY0nz+HaHagziFCQ65z7PQBXvHq9dqfZSJe8RrgGl3fiv5c+YD+HCI0uDaNjnOoc+VDJXTO+SIBfgl5kKFz4uoQ94J0Gcoh2NYVM8OZFpe26Pgop2mEQ2ToHNdmtT6wt75bhUtfarombO9LbAlH4yv4LeYKYQQzf67euGM28U87Nv00Q2J4/lyxJUW4hb0/R1vFubfEWdGMWWvcNiwyhipfWsrS4ojxvZa3CjDTOY6haX2uQ+gnm/YNsFRju04xZbEvljoSKIE5oaVzCm2g4Z6awZrHXH44PmlmGMXMB7R0rsCqt5NP5ErMqMT8HCIq2K9DhJk0sUtZnEkRpxWRzUUhQ+fSJkRYbz3xqUbSlKW5YgPJEEFMQWfSjvXzuOk6ZKoTZOic/pSYJ0ibWWpdOqAW46h5o1PenMsbiMr5c/kTZLd/ISxQlX0lbjtHFLk8qIrOuaUIEi4P5DpX+B55vFbniuch8Br6Gl3fip5T+VAVfw4RD7g2jY5zqHPlA+ocIjRQ5xChgTqHCA3UOURocG36L4nqZUIyd4GOAAAAAElFTkSuQmCC)
Bảng: Nhanvien
Dùng ngôn ngữ T-SQL thực hiện các yêu cầu sau:
Viết lệnh SQL cho xem số lượng nhân viên trong mỗi phòng
Viết lệnh SQL cho xem danh sách các nhân viên của các phòng Tổ chức, Tài vụ, sản xuất
Xây dựng View có tên V_XemLuong cho xem HoTen, maCV, Hesl, Phucap, Luong của các nhân viên có lương trên 2000000 với Luong = Hesl*850000 + Phucap.
Xây dựng View có tên V_Tongluong cho xem tổng lương của toàn cơ quan với Luong = Hesl*850000 + Phucap .
Viết một thủ tục chứa có tên SP_huy_Nhanvien cho phép huỷ các nhân viên không thuộc phòng nào cả ra khỏi bảng Nhan vien hoặc các nhân viên có HeSL dưới 2.0
Viết một thủ tục chứa có tên SP_Update_HeSL cho phép sửa lại HesL của một nhân viên có MaNV nào đó trong bảng Nhanvien.
Viết hàm F_luong trả về tổng lương của phòng có MaPh nào đó.
ĐÁP ÁN ĐỀ 2
Ý
|
NỘI DUNG
|
a
|
Select MaPH, Count(*) as SL from Nhanvien group by MaPH
|
b
|
Select A.*, B.* from Phong A, Nhanvien B
Where A.MaPH = B.MaPh and A.MaPH In (‘P1’, ‘P2’, ‘P4’)
|
c
|
CREATE VIEW V_XemLuong
AS SELECT Hoten, maCV, Hesl, Phucap, HeSL*850000+Phucap as Luong From Nhanvien A, Chucvu B Where A.MaCV = B.MaCV and (HeSL*850000+Phucap >= 2000000)
|
d
|
CREATE VIEW V_Tongluong
AS SELECT SUM(HeSL*850000+Phucap ) as Tongluong from Nhanvien A, Chucvu B Where A.MaCV = B.MaCV
|
e
|
CREATE PROCEDURE SP_huy_nhanvien
As Delete from nhanvien where MaPh Not In (select MaPH from Phong) Or HeSL < 2.0
|
f
|
CREATE PROCEDURE SP_Update_HeSL
@MaNV Char(5), @Hesl real AS
Update Nhanvien set HeSL = @HeSL where MaNV = @MaNV
|
g
|
CREATE FUNCTION F_Luong(@MaPh char(2))
Returns real AS
Begin
Return (Select Sum(HeSL*850000+Phucap) From Nhanvien A, Chucvu B Where A.MaCV = B.MaCV and MaPh = @MaPh )
End
|
ĐỀ SÔ 3
Câu 1: Đánh giá của anh, chị về hệ quản trị CSDL SQL Server so với hệ quản trị CSDL Access. (3 điểm)
Câu 2:
Để quản lý điểm học tập của học sinh, người ta xây dựng một cơ sở dữ liệu DiemHT.MDF với các bảng có các trường sau:
Hoc_Sinh: MaHS (Char(3)) ; TenHS (NVarChar(30)); MaLop(Char(2))
Mon_hoc : Mamon (Char(2)); TenMon (Nvarchar(20))
Bangdiem: Mamon (Char(2)); MaHS (Char(3)); Diem(real);
D
Bảng 3: Bangdiem
MahS
|
Mamon
|
Diem
|
H01
|
M1
|
8.5
|
H01
|
M2
|
9
|
H01
|
M3
|
7
|
H02
|
M1
|
9
|
H02
|
M2
|
7
|
H02
|
M3
|
8
|
H03
|
M1
|
10
|
H03
|
M2
|
8
|
H03
|
M3
|
5
|
H04
|
M1
|
7
|
H04
|
M2
|
8
|
H04
|
M3
|
9
|
H05
|
M1
|
8
|
H05
|
M2
|
7
|
H05
|
M3
|
7
|
---
|
---
|
---
|
ưới đây là một số dữ liệu mẫu của các bảng trên:
Bảng 1: Hoc_Sinh
Mahs
|
TenHS
|
Malop
|
H01
|
Tôn Quang Huy
|
6A
|
H02
|
Phạm Xuân Thiện
|
6A
|
H03
|
Nguyễn Thị Liên Hương
|
6B
|
H04
|
Trần văn Thành
|
7A
|
H05
|
Võ Thị Bích Ngọc
|
7B
|
---
|
---
|
--
|
Bảng 2: Mon_hoc
Mamon
|
TenMon
|
M1
|
Văn
|
M2
|
Toán
|
M3
|
Anh
|
---
|
---
|
Dùng ngôn ngữ T-SQL thực hiện các yêu cầu sau:
Viết lệnh SQL tính số lượng các học sinh trong mỗi lớp.
Viết lệnh SQL cho xem TenHS, Tenmon và diem của các học sinh lớp 6B, 7A, 7B
Xây dựng View có tên V_XemdiemTB cho xem MaHS và điểm trung bình (DTB) của các học sinh có DTB dưới 5 . (Hướng dẫn: có thể sử dụng hàm thống kê AVG)
Xây dựng View có tên V_Diem_Toan cho xem Tổng điểm môn Toán của mỗi lớp.
Viết một thủ tục chứa có tên SP_huy_diem cho phép huỷ điểm các học sinh ra khỏi bảng Bangdiem nếu học sinh đó không có trong bảng Hoc_Sinh hoặc có Diem dưới 0.
Viết một thủ tục chứa có tên SP_Them_HS cho phép thêm một Học sinh vào bảng Hoc_sinh với MaHS, TenHS, Malop được đưa vào khi thực thi (execute) thủ tục
Viết hàm F_So_luong( ) với tham số vào là @Malop, trả về (return) số lượng các học sinh của lớp có Malop = @Malop và có số lượng học sinh lớn hớn 50
ĐÁP ÁN ĐỀ 3
Ý
|
NỘI DUNG
|
a
|
Select Malop, Count(*) as SL from Hocsinh group by Malop
|
b
|
Select TenHS, Tenmon, diem from Hocsinh A, Mon_hoc B, BangDiem C Where A.MaHS = C.MahS and B.Mamon = C.Mamon and A.Malop In (‘6A’ ,‘7A’, ‘7B’)
|
c
|
CREATE VIEW V_XemdiemTB
AS SELECT MaHS, Avg(Diem) From BangDiem group by MaHS Having Avg(Diem) < 5
|
d
|
CREATE VIEW V_DiemTB_Toan
AS SELECT MaLop, Sum(Diem) as DTB from Hocsinh A, BangDiem B Where A.MAHS = B.MAHS and Mamon = ‘M2’ group by Malop
|
e
|
CREATE PROCEDURE SP_huy_diem
As Delete from BangDiem where MaHS not IN (select MaHS from hoc_sinh) OR Diem < 0
|
f
|
CREATE PROCEDURE SP_Them_HS
@MaHS Char(3), @TenHS NvarChar(30), @Malop Char(2)
AS Insert into Hocsinh(maHS, TenHS, Malop) Values (@maHS, @TenHS, @Malop)
|
g
|
CREATE FUNCTION F_So_luong(@malop char(2) )
Returns smallint
AS Begin
Return (Select count(*) from hocsinh where Malop = @Malop and count(*) > 50)
End
|
Chia sẻ với bạn bè của bạn: |