[kiemtraquiz]
I. Yêu cầu cần đạt:
- Tạo các bảng theo yêu cầu;
- Tạo khoá ngoại tham chiếu đến bảng;
- Lấy dữ liệu từ các bảng thông qua liên kết bảng.
II. Thực hiện:
Bài 1: Tạo cơ sở dữ liệu HOC_TAP
Bài 2: Tạo các bảng theo mẫu: ds_hs, ds_diem
ds_hs
| ma_hs | ten_hs |
| 1 | Trần Nam Anh |
| 2 | Cao Thị Bạn |
| 3 | Phan Văn Tui |
| 4 | Mạc Thị Ổi |
| 5 | Hứa Văn Xoài |
ds_diem
| Ma_hs | TB_HK1 | TB_HK2 |
| 1 | 8.3 | 8.5 |
| 2 | 8 | 9 |
| 3 | 9.3 | 8 |
| 4 | 7.8 | 7 |
| 5 | 8 | 6.5 |
Bài 3: Viết câu lệnh tạo khoá ngoại để bảng ds_diem có thể tham chiếu đến bảng ds_hs
..................................................................................................................................................................
Bài 4: Viết câu lệnh truy vấn tạo danh sách các học sinh gồm 2 cột: Ten_hs, TB_CN
Trong đó: \( TB\_CN = (TB\_HK1 + TB\_HK2 * 2) / 3 \), làm tròn điểm có phần thập phân gồm 2 chữ số.
Lưu ý: Xem câu lệnh SELECT sgk 110 (có sử dụng AS)
..................................................................................................................................................................
Kết quả:
| Ten_hs | TB_CN |
| Trần Nam Anh | 8.43 |
| Cao Thị Bạn | 8.67 |
| Phan Văn Tui | 8.43 |
| Mạc Thị Ổi | 7.27 |
| Hứa Văn Xoài | 7 |
Bài 5: Tạo danh sách các học sinh có điểm TB_CN trên 8
..................................................................................................................................................................
Câu 6: Để lọc ra các nhạc sĩ có tên bắt đầu bằng chữ "P", em sử dụng điều kiện nào trong câu lệnh SQL hoặc bộ lọc Quick Filter?
A. tenNhacsi = 'P'
B. tenNhacsi LIKE 'P%'
C. tenNhacsi LIKE '%P'
D. tenNhacsi IS 'P'
Câu 7: Nếu em cố tình xóa một nhạc sĩ trong bảng nhacsi mà nhạc sĩ đó đã có các bài hát được lưu trong bảng bannhac (có tham chiếu khóa ngoài). Điều gì xảy ra?
A. Xóa thành công và xóa luôn các bài hát của nhạc sĩ đó.
B. Xóa thành công nhưng giữ lại bài hát.
C. Báo lỗi ràng buộc khóa ngoài và ngăn chặn việc xóa.
D. Hệ thống tự động tắt chương trình.
Câu 8: Khi nhập dữ liệu cho CSDL MyMusic, thứ tự nhập liệu nào sau đây là đúng để đảm bảo tính toàn vẹn tham chiếu?
A. Nhập bảng bannhac trước, nhacsi sau.
B. Nhập bảng nhacsi trước, bannhac sau.
C. Nhập bảng nào trước cũng được.
D. Phải nhập đồng thời hai bảng.
Câu 9: Khi sửa dữ liệu trường khóa chính ở bảng cha (ví dụ sửa idNhacsi), nếu trường này đang được tham chiếu bởi bảng con, kết quả thường là:
A. Sửa thành công và tự động cập nhật bên bảng con.
B. Sửa thành công nhưng bảng con không đổi.
C. Hệ thống ngăn chặn không cho sửa để bảo toàn dữ liệu.
D. Dữ liệu bảng con bị xóa sạch.
Câu 10: Tại sao cần phải thực hiện cập nhật dữ liệu có tham chiếu một cách cẩn trọng?
A. Vì dữ liệu tham chiếu chiếm nhiều dung lượng bộ nhớ.
B. Vì sai sót có thể dẫn đến mất tính nhất quán và toàn vẹn của dữ liệu giữa các bảng.
C. Vì phần mềm HeidiSQL rất khó sử dụng.
D. Vì cập nhật dữ liệu tốn nhiều chi phí.
Câu 11: Giả sử bảng nhacsi có idNhacsi=1 (Văn Cao). Bảng bannhac có dòng chứa idNhacsi=1. Em thực hiện lệnh SQL: UPDATE nhacsi SET idNhacsi=10 WHERE idNhacsi=1. Điều gì xảy ra?
A. idNhacsi đổi thành 10.
B. Hệ thống báo lỗi và không cho phép cập nhật.
C. idNhacsi trong bảng bannhac cũng đổi thành 10.
D. Dòng dữ liệu Văn Cao bị xóa.
Câu 12: Khi dùng nhiều bảng, để tránh trùng tên cột, ta nên:
A. Đặt bí danh cho bảng
B. Đặt lại tên CSDL
C. Tạo bảng mới
D. Xóa cột
Câu 13: Câu truy vấn sau có thực hiện việc gì?
SELECT nhacsi.tenNhacsi, COUNT(bannhac.idBannhac) AS SoBanNhac
FROM nhacsi INNER JOIN bannhac
ON nhacsi.idNhacsi = bannhac.idNhacsi
GROUP BY nhacsi.tenNhacsi;
A. Đếm số nhạc sĩ
B. Đếm số bản nhạc của mỗi nhạc sĩ
C. Tìm bản nhạc nhiều nhất
D. Sắp xếp bản nhạc
Câu 14: Câu truy vấn sau có thực hiện việc gì?
SELECT MAX(Tong)
FROM (
SELECT SUM(SoLuong) AS Tong
FROM ct_hoadon
GROUP BY MaSP
) AS T;
A. Tính tổng số lượng sản phẩm.
B. Tính tổng theo số lượng.
C. Tìm giá trị lớn nhất của tổng số lượng.
D. Tính tổng của sản phẩm có số lượng lớn nhất.
Câu 15: Dưới đây là truy vấn tạo danh sách tính thành tiền cho các sản phẩm trong bảng sanpham, chọn câu đúng:
| A. | SELECT TenSP, SoLuong * DonGia AS ThanhTien FROM sanpham; |
| B. | SELECT TenSP, SoLuong * DonGia = ThanhTien FROM sanpham; |
| C. | SELECT TenSP, SoLuong * DonGia := ThanhTien FROM sanpham; |
| D. | SELECT TenSP, SoLuong * DonGia : ThanhTien FROM sanpham; |
Câu 16: Dưới đây là truy vấn tạo danh sách gồm tên học sinh và điểm trung bình của học sinh lấy từ 2 bảng ds_ten và ds_diem, chọn câu đúng:
| A. | SELECT ds_ten.Ten_hs, ds_diem.Diem_tb FROM ds_ten JOIN ds_diem ON ds_ten.Ma_hs = ds_diem.Ma_hs |
| B. | SELECT a.Ten_hs, b.Diem_tb FROM ds_ten AS a JOIN ds_diem AS b ON a.Ma_hs = b.Ma_hs |
| C. | SELECT a.Ten_hs, b.Diem_tb FROM ds_ten a JOIN ds_diem b ON a.Ma_hs = b.Ma_hs |
| D. | Tất cả đều đúng |
Câu 17: Trong truy vấn dữ liệu (SQL), từ khóa AS được dùng để:
A. Đặt bí danh (alias) cho cột mới khi sử dụng biểu thức để tính cho cột hoặc tránh trùng lặp giữa các cột.
B. Đặt bí danh cho bảng khi muốn tạo bảng tạm hoặc viết câu truy vấn ngắn gọn hơn.
C. Cả 2 ý trên đều đúng.
D. Cả 2 ý trên đều sai.
III. Hướng dẫn tiết sau thực hành:
Bài 18: Tạo thêm bảng theo mẫu: ds_hanhkiem
| Ma_hs | Hanh_kiem |
| 1 | Tốt |
| 2 | Khá |
| 3 | Tốt |
| 4 | Khá |
| 5 | Tốt |
Bài 19: Viết câu truy vấn lấy danh sách các học sinh có điểm TB_CN trên 8 và Hanh_kiem tốt.
Kết quả:
| Ten_hs | TB_CN | Hanh_kiem |
| Trần Nam Anh | 8.43 | Tốt |
| Phan Văn Tui | 8.43 | Tốt |
[dapan=6B,7C,8B,9C,10B,11B,12A,13B,14C,15A,16D,17C]