Câu 1: Trong quá trình cập nhật dữ liệu có tham chiếu trong SQL, cần đảm bảo tính toàn vẹn và tránh vi phạm ràng buộc khóa ngoại. Hãy đọc kỹ các phát biểu sau và xác định chúng Đúng hay Sai, đồng thời giải thích lý do lựa chọn.
a)
UPDATE dùng để chỉnh sửa dữ liệu, nếu thiếu WHERE, toàn bộ bảng sẽ bị thay đổi.
b)
Không thể tự do thay đổi khóa chính nếu có khóa ngoại tham chiếu, trừ khi bật
ON UPDATE CASCADE.
c)
Xóa rồi chèn lại có thể gây mất dữ liệu, nên dùng ON UPDATE CASCADE.
d)
Không thể nhập giá trị khóa ngoại không tồn tại trong bảng tham chiếu, hệ quản
trị sẽ báo lỗi
Câu
2:
Trong hệ thống quản lý sinh viên, bảng sinhvien có masv là khóa chính, bảng
diemthi có masv là khóa ngoại tham chiếu đến sinhvien. Khi cập nhật masv
= 101 thành 202 trong sinhvien, lệnh:
UPDATE sinhvien SET masv = 202 WHERE masv = 101;
bị
lỗi do ràng buộc khóa ngoại. Có ba cách xử lý:
1. Dùng
ON UPDATE CASCADE để tự động cập nhật khóa ngoại.
2. Cập
nhật hoặc xóa thủ công dữ liệu trong diemthi trước khi thay
đổi.
3. Bỏ
ràng buộc khóa ngoại, cập nhật rồi thiết lập lại.
Dựa
vào tình huống trên, hãy trả lời các câu nhận định sau:
a)
UPDATE có thể thay đổi khóa chính mà không ảnh hưởng đến bảng khác.
b) Cần xử lý ràng buộc khóa ngoại trước khi cập nhật khóa chính.
c) ON UPDATE CASCADE giúp tránh lỗi khi cập nhật khóa chính.
d) Nếu không có ON UPDATE CASCADE, xóa toàn bộ diemthi trước khi cập nhật là
cách tốt nhất
Câu
3:
Trong hệ thống quản lý nhân sự, bảng nhanvien có manv là khóa chính, bảng
hopdong có manv là khóa ngoại tham chiếu đến nhanvien. Khi xóa nhân viên
có manv = 105, lệnh:
DELETE
FROM nhanvien WHERE manv = 105;
bị
lỗi do dữ liệu trong hopdong đang tham chiếu đến nhân viên này. Có ba cách xử
lý:
1. Dùng
ON DELETE CASCADE để tự động xóa các hợp đồng liên quan.
2. Xóa
hoặc cập nhật thủ công các dòng trong hopdong trước khi xóa
nhanvien.
3. Bỏ
ràng buộc khóa ngoại, xóa dữ liệu rồi thiết lập lại ràng buộc.
a)
Nếu có khóa ngoại tham chiếu, xóa khóa chính có thể gây lỗi.
b) Cần xử lý ràng buộc khóa ngoại trước khi xóa dữ liệu.
c) ON DELETE CASCADE giúp tự động xóa dữ liệu liên quan, tránh lỗi.
d) Xóa toàn bộ dữ liệu có thể gây mất thông tin quan trọng, nên ưu tiên cập nhật
hoặc dùng phương pháp khác.
Câu
4: Hệ thống quản lý bán hàng có các bảng:
- khachhang
(makh, tenkh)
- sanpham
(masp, gia)
- donhang
(madh, makh, masp, soluong)
Truy
vấn sau tính tổng tiền mỗi khách hàng đã mua:
SELECT
khachhang.makh, khachhang.tenkh, SUM(sanpham.gia * donhang.soluong) AS
tongtien
FROM
khachhang
JOIN
donhang ON khachhang.makh = donhang.makh
JOIN
sanpham ON donhang.masp = sanpham.masp
GROUP
BY khachhang.makh, khachhang.tenkh
ORDER
BY tongtien DESC;
Hãy
xác định các câu sau đúng hay sai:
a)
Mỗi đơn hàng luôn có khách hàng và sản phẩm.
b) Truy vấn sử dụng JOIN để kết hợp bảng.
c) Bỏ GROUP BY vẫn hiển thị đúng tổng tiền.
d) Có thể dùng HAVING để lọc khách hàng có tổng mua > 1 triệu.
Câu
5: Một cửa hàng quản lý dữ liệu bán hàng với các bảng:
- sanpham
(masp, tensp, gia)
- donhang
(madh, makh, ngaydat)
- chitietdonhang
(madh, masp, soluong)
Quản
lý muốn tìm danh sách sản phẩm chưa từng xuất hiện trong bất kỳ đơn hàng nào. Họ
sử dụng truy vấn sau:
SELECT
sanpham.masp, sanpham.tensp
FROM
sanpham
LEFT
JOIN chitietdonhang ON sanpham.masp = chitietdonhang.masp
WHERE
chitietdonhang.masp IS NULL;
a)
Truy vấn trên lấy tất cả sản phẩm, kể cả sản phẩm đã được đặt hàng.
b)
Câu lệnh LEFT JOIN giúp lấy sản phẩm không có trong chitietdonhang.
c)
Có thể thay LEFT JOIN bằng INNER JOIN mà không thay đổi kết quả.
d)
Sử dụng NOT IN cũng có thể tìm sản phẩm chưa từng được đặt hàng.
Câu
6: Một cửa hàng quản lý thông tin khách hàng và đơn hàng với các bảng:
- khachhang
(makh, tenkh, diachi)
- donhang
(madh, makh, ngaydat)
Quản
lý muốn tìm danh sách khách hàng chưa từng đặt hàng bằng truy vấn sau:
SELECT
khachhang.makh, khachhang.tenkh
FROM
khachhang
LEFT
JOIN donhang ON khachhang.makh = donhang.makh
WHERE
donhang.makh IS NULL;
Nhận
định sau đúng hay sai?
a)
Truy vấn trên lấy tất cả khách hàng, kể cả khách hàng đã đặt hàng.
b)
Điều kiện WHERE donhang.makh IS NULL giúp lọc khách hàng chưa có đơn hàng.
c)
Có thể dùng INNER JOIN thay LEFT JOIN mà không thay đổi kết quả.
d)
Sử dụng NOT EXISTS cũng có thể tìm khách hàng chưa từng đặt hàng.
Câu
7:
Trong SQL, để truy xuất dữ liệu từ nhiều bảng có liên kết, ta sử dụng các lệnh
như JOIN, LEFT JOIN, RIGHT JOIN hoặc FULL JOIN. Việc lựa chọn loại JOIN phù hợp
giúp lấy đúng dữ liệu theo yêu cầu. Dưới đây là các câu hỏi đúng/sai liên quan
đến truy xuất dữ liệu qua liên kết bảng.
a)
INNER JOIN chỉ lấy các bản ghi có liên kết ở cả hai bảng.
b)
LEFT JOIN chỉ trả về các bản ghi có liên kết từ bảng bên phải
c)
Khi dùng GROUP BY, ta luôn phải có ít nhất một hàm tổng hợp
d)
FULL JOIN sẽ trả về tất cả bản ghi từ cả hai bảng, dù có liên kết hay không
Câu
8: Thực
hành sao lưu CSDL bằng HeidiSQL giúp bảo vệ dữ liệu khỏi mất mát do sự cố. Người
dùng xuất dữ liệu dưới dạng file .sql
,
lưu trữ an toàn và có thể khôi phục khi cần. Quá trình gồm chọn database,
export và kiểm tra file backup.
a)
HeidiSQL cho phép sao lưu cả cấu
trúc và dữ liệu của cơ sở dữ liệu trong cùng một file .sql.
b)
Khi sao lưu dữ liệu trong HeidiSQL,
bạn không thể sao lưu một bảng riêng lẻ mà chỉ có thể sao lưu toàn bộ cơ sở dữ
liệu.
c)
Trong quá trình sao lưu cơ sở dữ
liệu bằng HeidiSQL, nếu không chọn "DROP TABLE", bảng cũ sẽ bị ghi đè
khi phục hồi.
d)
Bạn không thể sao lưu cơ sở dữ liệu
trong HeidiSQL dưới dạng file nén như .zip hay .gz.
Câu 9: Thực hành
phục hồi dữ liệu CSDL bằng HeidiSQL với công cụ "Load SQL File" giúp
nhập dữ liệu từ file sao lưu .sql
vào cơ sở dữ liệu. Người dùng chọn
cơ sở dữ liệu, sử dụng "Load SQL File" để phục hồi toàn bộ cấu trúc
và dữ liệu chính xác.
a)
Công cụ "Load SQL File"
trong HeidiSQL cho phép bạn nhập dữ liệu sao lưu vào bất kỳ cơ sở dữ liệu nào,
không cần quan tâm đến tên cơ sở dữ liệu.
b)
Sau khi sử dụng công cụ "Load SQL File" để phục hồi dữ liệu, các bảng
đã tồn tại sẽ bị ghi đè nếu không chọn tùy chọn "DROP TABLE".
c) Sau khi phục hồi dữ liệu bằng "Load SQL File",
dữ liệu trong cơ sở dữ liệu sẽ tự động được kiểm tra tính toàn vẹn.
d)
Công cụ "Load SQL File" trong HeidiSQL chỉ phục hồi dữ liệu, không
phục hồi cấu trúc bảng.
Câu 10. Ảnh số là hình ảnh được
tạo, lưu trữ và xử lý dưới dạng dữ liệu kỹ thuật số thay vì phim hoặc giấy in.
Chúng có thể được chụp bằng máy ảnh kỹ thuật số, điện thoại hoặc quét từ ảnh vật
lý. Các định dạng phổ biến gồm JPG, PNG, GIF, BMP, RAW, hỗ trợ
chỉnh sửa và chia sẻ dễ dàng.
a)
Ảnh số được lưu trữ dưới dạng phim hoặc giấy in.
b)
Ảnh số có thể được tạo từ máy ảnh kỹ thuật số, điện thoại hoặc quét từ ảnh
vật lý.
c)
Định dạng phổ biến của ảnh số bao gồm JPG, PNG, GIF, BMP, RAW.
d)
Ảnh số không thể chỉnh sửa hoặc chia sẻ dễ dàng.