Cafedev chia sẻ cho ace một số bài tập thực hành sql server nhằm giúp các bạn nâng cao kỹ năng và kiến thức khi làm việc với cơ sở dữ liệu trong thực tế. Tiếp theo phần 3

Series tự học SQL từ cơ bản tới nâng cao cho ace.

1. Đề bài

Câu 1: (3 điểm) Cơ sở dữ liệu quản lý việc mượn trả sách có chứa 3 table. Viết lệnh tạo các table với các ràng buộc khóa chính, khóa ngoại được nêu trong tân từ. Kiểu dữ liệu của các Fields là tự chọn theo ngữ nghĩa.

1- Sach(MaSach, TenSach, SoLuong, SoDaMuon)

Tân từ: Mỗi tựa sách có một mã số (MaSach) là một số nguyên phân biệt, có tên sách (TenSach), số lượng (SoLuong), và số sách hiện đã cho mượn (SoDaMuon).

2- DocGia(MaDG, TenDG)

Tân từ: Mỗi đọc giả có một mã số đọc giả (MaDG) là một số nguyên phân biệt, có tên đọc giả (TenDG).

3- PhieuMuon(MaDG, NgayMuon, MaSach, NgayTra)

Tân từ: Mỗi ngày mỗi đọc giả chỉ được mượn một quyển sách. Khi đọc giả mượn sách cần ghi nhận mã đọc giả (MaDG), ngày mượn (NgayMuon), mã sách (MaSach), ngày trả sách (NgayTra). Ngày trả sách là Null khi chưa trả sách.

Câu 2: (1 điểm) Khai báo bổ sung các ràng buộc sau:

  1. Số lượng sách (SoLuong) trong table Sach không nhỏ hơn số sách đã mượn (SoDaMuon)
  2. Ngày mượn sách (NgayMuon) trong table PhieuMuon có giá trị mặc định là ngày hiện hành

Câu 3: (2 điểm) Tạo View:

  1. Tạo view “vwHetSach” dùng liêt kê các sách có số lượng sách (SoLuong) bằng với số lượng sách đã cho mượn (SoDaMuon) gồm các thông tin: Mã sách, tên sách.
  2. Tạo view “vwChuaTraSach” dùng hiển thị danh sách các đọc giả chưa trả sách (có ngày trả là rổng) gồm các thông tin: mã đọc giả, tên đọc giả, ngày mượn, tên sách đã mượn.

Câu 4: (2 điểm) Tạo update trigger trên table PhieuMuon thực hiện yêu cầu sau: Khi sửa ngày trả của một phiếu mượn từ giá trị Null sang một giá trị khác Null thì phải giảm số lượng sách đã mượn của tựa sách tương ứng trên table Sach, ngược lại nếu sửa ngày trả từ một giá trị khác Null sang giá trị Null thì phải tăng số lượng sách đã mượn của tựa sách tương ứng trên table Sach.

Câu 5: (2 điểm) Tao thủ tục hoặc hàm trả về số sách còn có thể cho mượn (SoLuong – SoDaMuon) của một mã sách nào đó. Trong đó, mã sách là giá trị input. Hiển thị thông báo lỗi nếu mã sách không tồn tại trong table Sach.

2. Bài giải

Hướng dẫn cách xem và tải tài liệu từ trang cafedev tại đây.


Xem bài giải

3. Series lý thuyết ôn tập

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!