Đề thi Hệ quản trị cơ sở dữ liệu thực hành kỳ 1 năm học 2021-2022 | Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội

Đề thi Hệ quản trị cơ sở dữ liệu thực hành kỳ 1 năm học 2021-2022 | Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Tài liệu được sưu tầm và biên soạn dưới dạng PDF gồm 05 trang giúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem!

Thông tin:
5 trang 1 tuần trước

Bình luận

Vui lòng đăng nhập hoặc đăng ký để gửi bình luận.

Đề thi Hệ quản trị cơ sở dữ liệu thực hành kỳ 1 năm học 2021-2022 | Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội

Đề thi Hệ quản trị cơ sở dữ liệu thực hành kỳ 1 năm học 2021-2022 | Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Tài liệu được sưu tầm và biên soạn dưới dạng PDF gồm 05 trang giúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao trong kỳ thi sắp tới. Mời bạn đọc đón xem!

16 8 lượt tải Tải xuống
Quốc Huy Hoàng
Nhà của tôi Các khoá học của tôi 2122I_INT3202_2 22 November - 28 November Kiểm tra cuối kỳ thực hành Nhóm 2
Bắt đầu vào lúc
Tuesday, 23 November 2021, 5:21 PM
Trạng thái
Đã xong
Kết thúc lúc
Tuesday, 23 November 2021, 6:01 PM
Thời gian thực hiện
40 phút 1 giây
Điểm
Chưa được chấm điểm
Câu Hỏi 1 Hoàn thành
Viết hàm nhận vào tham số country_id đưa ra số lượt thuê đĩa phim đến từ quốc gia tương ứng
DROP FUNCTION IF EXISTS country_inventory ;
DELIMITER //
CREATE FUNCTION country_inventory(c_id INT)
RETURNS INT
BEGIN
DECLARE total INT;
SELECT COUNT(*) INTO total
FROM rental
JOIN customer ON rental.customer_id = customer.customer_id
JOIN address ON customer.address_id = address.address_id
JOIN city ON address.city_id = city.city_id
JOIN country ON city.country_id = country.country_id AND country.country_id = c_id
GROUP BY country.country_id;
return total;
END //
DELIMITER ;
Câu Hỏi 2 Hoàn thành
Thêm 1 trường mới tên là "Prior_level" vào bảng country, kiểu dữ liệu INT, giá trị mặc định là 0 dùng để
đánh dấu mức độ ưu tiên.
Viết trigger thực hiện công việc sau: Với mỗi giao dịch cho thuê mới xảy ra, hãy đếm s lượt thuê đến từ
quốc gia tương ứng với vị khách vừa thuê cập nhật giá trị Prior_level 1 nếu quốc gia đó số lượt >=
100 nhỏ n 500, 2 nếu số lượt >= 500 nhỏ n 1000, và 3 nếu s lượt >= 1000.
ALTER TABLE country
add Prior_level int DEFAULT 0;
DELIMITER //
CREATE TRIGGER after_insert_rental AFTER INSERT ON rental
FOR EACH ROW
BEGIN
DECLARE cnt_id varchar(50)
SELECT country_id INTO cnt_id
FROM country JOIN city ON country.country_id = city.country_id
JOIN address a ON city.city_id = a.city_id
JOIN customer c ON a.address_id = c.address_id
WHERE customer.customer_id = new.customer_id
Câu Hỏi 3 Hoàn thành
Viết truy vấn đưa ra số lượng phim tham gia tương ứng của các diễn viên first_name bắt đầu là A hoặc J
last_name bắt đầu bằng A hoặc B. Làm thế nào để tối ưu truy vấn ? Viết lệnh bạn đã dùng để tối ưu. So
sánh độ phức tạp trước sau khi tối ưu truy vấn. (đính kèm ảnh kết quả độ phức tạp của truy vấn trước và
sau khi tối ưu)
EXPLAIN SELECT COUNT(*), actor.actor_id, concat(actor.first_name," ", actor.last_name) AS
fullname FROM actor
JOIN film_actor on actor.actor_id = film_actor.actor_id
WHERE (actor.first_name LIKE "A%" OR actor.first_name LIKE "J%") AND (actor.last_name LIKE "A%" OR
actor.last_name LIKE "B%")
GROUP BY actor.actor_id
ORDER BY actor.`actor_id` DESC;
CREATE index actor_firstname on actor(first_name(1));
sau index 29(18%) *13
trước index 200*13
Câu Hỏi 4 Hoàn thành
Xuất kết quả của truy vấn lấy ra top 20 quốc gia lượt thuê nhiều nhất ra file bên ngoài đặt tên là
"top20_countries.txt" (các trường cần lấy country_id, country (tên quốc gia), số lượt thuê từ quốc
gia). Các trường được ngăn cách bởi dấu ',' , mỗi row của bảng 1 dòng trong file, các giá tr của
các trường được bọc bằng dấu nháy kép ' " '.
VD: "1","England","100".
LƯU Ý: NHỚ ĐÍNH M FILE TEXT KẾT QUẢ VÀO BÀI M.
SELECT country.country_id, country.country, COUNT(*) as rental_count
FROM rental
JOIN customer ON rental.customer_id = customer.customer_id
JOIN address ON customer.address_id = address.address_id
JOIN city ON address.city_id = city.city_id
JOIN country ON city.country_id = country.country_id
GROUP BY country.country_id
ORDER BY rental_count DESC LIMIT 20
INTO OUTFILE '/nam_3/hqtcsdl/top20_countries.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
top20_countries.txt
Bài tập nhóm câu B Chuyển tới...
| 1/5

Preview text:

Quốc Huy Hoàng
Nhà của tôi Các khoá học của tôi 2122I_INT3202_2 22 November - 28 November Kiểm tra cuối kỳ thực hành Nhóm 2
Bắt đầu vào lúc Tuesday, 23 November 2021, 5:21 PM Trạng thái Đã xong
Kết thúc lúc Tuesday, 23 November 2021, 6:01 PM
Thời gian thực hiện 40 phút 1 giây
Điểm Chưa được chấm điểm Câu Hỏi 1 Hoàn thành
Viết hàm nhận vào tham số country_id và đưa ra số lượt thuê đĩa phim đến từ quốc gia tương ứng
DROP FUNCTION IF EXISTS country_inventory ; DELIMITER //
CREATE FUNCTION country_inventory(c_id INT) RETURNS INT BEGIN DECLARE total INT; SELECT COUNT(*) INTO total FROM rental
JOIN customer ON rental.customer_id = customer.customer_id
JOIN address ON customer.address_id = address.address_id
JOIN city ON address.city_id = city.city_id
JOIN country ON city.country_id = country.country_id AND country.country_id = c_id GROUP BY country.country_id; return total; END // DELIMITER ; Câu Hỏi 2 Hoàn thành
Thêm 1 trường mới tên là "Prior_level" vào bảng country, kiểu dữ liệu là INT, giá trị mặc định là 0 dùng để
đánh dấu mức độ ưu tiên.
Viết trigger thực hiện công việc sau: Với mỗi giao dịch cho thuê mới xảy ra, hãy đếm số lượt thuê đến từ
quốc gia tương ứng với vị khách vừa thuê và cập nhật giá trị Prior_level là 1 nếu quốc gia đó có số lượt >=
100 và nhỏ hơn 500, là 2 nếu số lượt >= 500 và nhỏ hơn 1000, và là 3 nếu số lượt >= 1000. ALTER TABLE country add Prior_level int DEFAULT 0; DELIMITER //
CREATE TRIGGER after_insert_rental AFTER INSERT ON rental FOR EACH ROW BEGIN DECLARE cnt_id varchar(50) SELECT country_id INTO cnt_id
FROM country JOIN city ON country.country_id = city.country_id
JOIN address a ON city.city_id = a.city_id
JOIN customer c ON a.address_id = c.address_id
WHERE customer.customer_id = new.customer_id Câu Hỏi 3 Hoàn thành
Viết truy vấn đưa ra số lượng phim tham gia tương ứng của các diễn viên có first_name bắt đầu là A hoặc J
và last_name bắt đầu bằng A hoặc B. Làm thế nào để tối ưu truy vấn ? Viết lệnh bạn đã dùng để tối ưu. So
sánh độ phức tạp trước và sau khi tối ưu truy vấn. (đính kèm ảnh kết quả độ phức tạp của truy vấn trước và sau khi tối ưu)
EXPLAIN SELECT COUNT(*), actor.actor_id, concat(actor.first_name," ", actor.last_name) AS ful name FROM actor
JOIN film_actor on actor.actor_id = film_actor.actor_id
WHERE (actor.first_name LIKE "A%" OR actor.first_name LIKE "J%") AND (actor.last_name LIKE "A%" OR actor.last_name LIKE "B%") GROUP BY actor.actor_id
ORDER BY actor.`actor_id` DESC;
CREATE index actor_firstname on actor(first_name(1)); sau index 29(18%) *13 trước index 200*13 Câu Hỏi 4 Hoàn thành
Xuất kết quả của truy vấn lấy ra top 20 quốc gia có lượt thuê nhiều nhất ra file bên ngoài đặt tên là
"top20_countries.txt" (các trường cần lấy là country_id, country (tên quốc gia), số lượt thuê từ quốc
gia). Các trường được ngăn cách bởi dấu ',' , mỗi row của bảng là 1 dòng trong file, các giá trị của
các trường được bọc bằng dấu nháy kép ' " '. VD: "1","England","100".

LƯU Ý: NHỚ ĐÍNH KÈM FILE TEXT KẾT QUẢ VÀO BÀI LÀM.
SELECT country.country_id, country.country, COUNT(*) as rental_count FROM rental
JOIN customer ON rental.customer_id = customer.customer_id
JOIN address ON customer.address_id = address.address_id
JOIN city ON address.city_id = city.city_id
JOIN country ON city.country_id = country.country_id GROUP BY country.country_id
ORDER BY rental_count DESC LIMIT 20
INTO OUTFILE '/nam_3/hqtcsdl/top20_countries.txt'
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; top20_countries.txt ◄ Bài tập nhóm câu B Chuyển tới...