Mời các bạn cùng tham khảo Đề thi kết thúc môn học học kì 2 môn Chuyên đề hướng đối tượng cơ sở dữ liệu năm 2020-2021 có đáp án - Trường ĐH Đồng Tháp sau đây để biết được cấu trúc đề thi, cách thức làm bài thi cũng như những dạng bài chính được đưa ra trong đề thi. Từ đó, giúp các bạn sinh viên có kế hoạch học tập và ôn thi hiệu quả.
Trang 1TRUONG DAI HOC DONG THAP
DE THI KET THÚC MÔN HỌC
Mén hoc: CB HQT CSDL, ma MH: IN4105p, học kỷ: 2, năm học: 2020 - 2021 Ngành/khối ngành: ĐHCNTTISA hình thức thị: Tự luận
Thời gian làm bài: 75 phút
Ghi chú: Sinh viên được sử dụng tài liệu Cho lược để quan hệ QLHANGHOA như sau:
HANGHOA (MaHG, TenHG, DVT, Dongia, Cohang)
Moi mat hàng có một mã số duy nhất có tên hang, don vị tính, đơn giá và hàng có còn trong kho hay không (Cohang = 0 nếu hết hàng, Cohang = I nếu còn hàng)
KHACH (MaKH, HotenKH, Diachi, Daily)
Mỗi khách hàng có một mã số duy nhất, họ tên, địa chỉ và khách có phải là đại ly hay khách hàng lẻ (Daily = 1 nếu khách là đại lý, Daily = 0 nếu khách là khách mua bán lẻ)
HOADON (SoHD, Ngaylap, Ngaygiao, ‘ MaKH)
Mỗi hóa đơn có một số hóa dơn duy nhất, ngày lập, trị giá hóa đơn, ngày giao hàng và giao cho khách hàng nào
CTHOADON (SoHD MaLhG, Soluong, Giaban)
Lưu thông tin chỉ tiết của hóa đơn bao gdm sé HD, mã hàng, số lượng bán và giá bán của mặt hàng đó GLBANHANS 2021, HOADON IP * SoHD MakH HOTENKH NGAYLAP DIACHI NGAYGIAO DAILY Hl TRIGIA, MAKH SOHD IPFˆ trên SOLUONG GIABAN
Cau 1 (4.0 diễm) Truy vấn dữ liệu SQL,
a) Tìm thơng tin hàng hố MANG, TENHG, DVT, DONGIA không còn hàng b) Tìm Họ tên, địa chỉ của khách hàng lẻ mua ngày từ ngày 10 đến 15/07/2020
€) Tìm tên của những mặt hàng vừa được mua bởi các đại lý ở Vĩnh Long vừa dược mua bởi các khách hàng lẻ ở Trà Vinh
đ) In ra tổng số lượng bán của tất cả các mặt hàng trong tháng 8/2020
Câu 2 (2.0 điểm) Lập trình PL/SQL Viết khối lệnh hiển thị thông tin khách hàng (MAKH,
HOTENKN) khi nhập vào SOHD
Cau 3 (2.0 diém) Procedure Tao Procedure cập nhật lại GIABAN của một mặt hàng trong bảng CTHOADON: GIABAN = 130% * DONGIA voi tham sé dau vào là SOHD va MAHG tương ứng Cau 4 (2.0 d) Bao mat trong Oracle
Tạo người dùng HQTCSDL, password: 1234 véi Quota 4M cho phép người dùng tao bảng KHOA (MaKH TenKH) trong schema nay
Trang 2ĐÁP ÁN ĐÈ THỊ KẾT THÚC MƠN HOC
Mơn học: CĐHQT CSDL mã MH: IN415p học kỳ: 2, năm học: 2020 - 2021 Ng sành/khối nganh: DHCNTT18A Cau_| Noi dung Diém 1 | Truy vẫn dữ liệu SQL 4,0
- Y 1: Tim théng tin hàng hố khơng cịn hàng 1,0
SELECT MAHG, TENHG, DVT, DONGIA FROM HANGHOA
WHERE COHANG = Ô
| - Ý 2: Họ tên, địa chỉ của khách hàng lẻ mua ngày từ ngày 10 đến 15/07/2014 1,0
SELECT K.MAKH, HOTENKH, DIACHI, NGAYLAP
FROM KHACH K INNER JOIN HOADON H ON K.MAKH = H.MAKH | WHERE DAILY = @ AND (NGAYLAP BETWEEN DATE'202@-7-10' AND
DATE '2020-7-15')
-Ý 3: Tìm tên của những mặt hàng vừa dược mua bởi các đại lý ở Vinh Long vừa
được mua bởi các khách hàng lẻ ở Trà Vinh 1,0
SELECT HH.MAHG, TENHG
FROM (((KHACH K INNER JOIN HOADON HD ON K.MAKH = HD.MAKH) INNER JOIN CTHOADON CT ON CT.SOHD = HD.SOHD)
INNER JOIN HANGHOA HH ON HH.MAHG = CT.MAHG) | WHERE DIACHI LIKE N'Vinh Long’ AND DAILY = 1 | TNTERSECT
SELECT HH.MAHG, TENHG
FROM (((KHACH K INNER JOIN HOADON HD ON K.MAKH = HD.MAKH) INNER JOIN CTHOADON CT ON CT.SOHD = HD.SOHD)
INNER JOIN HANGHOA HH ON HH.MAHG = CT.MAHG) WHERE DIACHI LIKE N'Tra Vinh’ AND DAILY = @
~ Ý 4: In ra tổng số lượng bán của tất cả các mặt hàng trong tháng 8/2014
SELECT SUM(SOLUONG)
FROM CTHOADON CT INNER JOIN HOADON HD ON CT.SOHD = HD.SOHD
WHERE EXTRACT(MONTH FROM(NGAYLAP)) = 8 AND 1,0
= _ EXTRACT(YEAR FROM(NGAYLAP)) = 2014
z Lap trinh PL/SQL Viet khối lénh hién thj théng tin khách hang (MAKH, 2,0 HOTENKH) khi nhap vao SOHD DECLARE VSOHD HOADON.SOHD%TYPE : = '&VSOHD' ; VMAKH HOADON.MAKH%TYPE ; | VHOTENKH KHACH.HOTENKH&TYPE ; | | CURSOR CURHOADON IS
SELECT HOADON.MAKH, HOTENKH FROM HOADON, KHACH
| WHERE HOADON.MAKH = KHACH.MAKH AND SOHD = VSOHD; BEGIN | OPEN CURHOADON ; FETCH CURHOADON INTO VMAKH, VHOTENKH; IF CURHOADON%ROWCOUNT=@ THEN | DBMS_OUTPUT.PUT_LINE( "KHONG CO HOA DON || VSOHD); | ELSE
DBMS_OUTPUT.PUT_LINE(VSOHD ||' CO KHACH HANG:");
DBMS_OUTPUT.PUT_LINE( 'MAKH HOTENKH");
LOOP _|
Trang 3
FETCH CURHOADON TNTO VMAKH, VHOTENKH; DBMS_OUTPUT PUT_LINE (VMAKH || ' ' |] VHOTENKH ); ¬
EXIT WHEN CURHOADON%NOT FOUND; END LOOP; END LP}
CLOSE CURHOADON ;
END;
Procedure Tao Procedure cập nhật lại GIABAN của một mặt hàng trong bảng CTHOADON: GIABAN = 130% * DONGIA hang hoa tương ứng
CREATE OR REPLACE PROCEDURE Tang_giaban (vSOHD char, vMAHG
char) IS
gia_old INT; gia_new INT;
BEGIN
SELECT GIABAN INTO gia_old
FROM CTHOADON WHERE SOHD=vSOHD AND MAHG=vMAHG ; IF SQL%FOUND THEN
SELECT DONGIA INTO gia_new
FROM HANGHOA WHERE MAHG=vMAHG;
UPDATE CTHOADON SET GIABAN = 139/100*gia_new; WHERE SOHD=VSOHD AND MAHG=vMAHG;
IF SQL%ROWCOUNT<>@ THEN
DBMS_OUTPUT.PUT_LINE (‘Gia ban cua ' ll
VSOHD || ', ' || vMAHG || "duoc cap nhat");
END IF; END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Khong tim thay hoa don: "ty VSOHD ||", va mat hang’ || vMAHG); END;
Bao mat trong Oracle _
- Y I: Tao nguoi ding HQTCSDL, password: 1234 V6i Quota 4M cho phép người dùng tạo bảng KHOA (MaKH, TenKH) trong schema nảy B1: Tạo người dùng
CREATE USER HQTCSDL IDENTIFIED BY 1234 DEFAULT TABLESPACE USERS QUOTA 4M ON USERS;
B2: Cấp quyền session cho user nay
GRANT CREATE SESSION To HQTCSDL ;
-~B3: cấp quyền hệ thống cho user này để được phép tạo bảng
GRANT CREATE TABLE TO HQTCSDL WITH ADMIN OPTION;
B4: Đăng nhập user này, thực hiện tạo bảng
CREATE TABLE KHOA( MaKH chan(5), TenKH Varchar2(3@));
“Phân dưới đây được in 6 mat sau cia dap in
Y kiên Trưởng bộ môn (nêu có) Người giới thiệu (Ký tên, họ tên)
(Ký tên, họ tên)