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 4

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ý lương hành chánh sự nghiệp 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. NgachLuong(MSNgach, MoTa)

Tân từ: Hệ thống lương hành chánh gồm nhiều ngạch, mỗi ngạch lương có một mã số (MSNgach) là một số nguyên phân biệt, mục mô tả (MoTa) dùng chỉ định nhân viên thực hiện công việc nào, bằng cấp nào thì thuộc ngạch lương này.

  • DMNgachBac(MSNgach, Bac, HSLuong)

Tân từ: Mỗi ngạch lương (MSNgach) có nhiều bậc lương (Bac). Mỗi bậc lương là một số nguyên có giá trị từ 1 trở đi phân biệt trong cùng một ngạch lương. Mỗi bậc trong một ngạch lương có một hệ số lương (HSLuong).

  • NhanVien(MSNV, Ho, Ten, MSNgach, Bac, NgayNLCC)

Tân từ: Mỗi nhân viên có một mã số (MSNV) là một số nguyên phân biệt, có họ (Ho), tên (Ten), thuộc ngạch lương (MSNgach), bậc lương (Bac) và ngày nâng lương cuối cùng (NgayNLCC).

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

  1. Trong table DMNgachBac, Hệ số lương (HSLuong) phải phân biệt trong cùng một ngạch lương (MSNgach).
  2. Bậc lương (Bac) trong table NhanVien có giá trị mặc định (Default) bằng 1.

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

  1. Tạo view vwHSLuong dùng liêt kê hệ số lương của mỗi nhân viên gồm các thông tin: mã số nhân viên, mã số ngạch, bậc, hệ số lương.
  2. Tạo view vwNangLuong dùng liệt kê nhân viên có số tháng tính từ ngày nâng lương cuối cùng (NgayNLCC) đến ngày hiện hành có giá trị không nhỏ hơn 24 tháng.

Câu 4: (2 điểm) Tạo update trigger cho table NhanVien để kiểm tra ràng buộc: Khi nâng bậc lương (Bac) của một nhân viên thì bậc lương mới không lớn hơn bậc lương cao nhất trong ngạch lương của nhân viên (ví dụ, ngạch lương mã số 15113 có số thứ tự bậc lương từ 1 đến 10 thì bậc lương mới của nhân viên có mã ngạch 15113 không đượt lớn hơn 10).

Câu 5: (2 điểm) Viết thủ tục hay hàm trả về danh sách nhân viên đã được nâng lương trong một năm (nghĩa là có ngày nâng lương cuối cùng thuộc năm tìm kiếm). Trong đó, năm là một giá trị Input kiểu số nguyên. Nếu năm là Null thì trả về danh sách nhân viên đã được nâng lương trong năm hiện hành.

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!