Chào các ace, hôm nay cafedev đã chọn lọc và chia sẻ cho ace một bộ đề thực hành sql gồm 2 phần, với các câu thực hành từ cơ bản nhất tới nâng cao, nhằm giúp ace ôn luyện lại các kiến thức đã học và nâng cao kỹ năng làm việc với sql.

Đề này có kèm theo full bài giải cho ace tham khảo khi thật cần thiết hoặc đã làm xong và kiểm trả lại đúng sai.

Bạn có thể tham khảo series tự học SQL này để ổn lại kiến thức

1. Phần mô tả đề bài

1.1. Cơ sở dữ liệu quản lý bán hàng gồm có các quan hệ sau:

Bài tập 1:

KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK)
Tân từ: Quan hệ khách hàng sẽ lưu trữ thông tin của khách hàng thành viên gồm có các thuộc tính: mã khách hàng, họ tên, địa chỉ, số điện thoại, ngày sinh, ngày đăng ký và doanh số (tổng trị giá các hóa đơn của khách hàng thành viên này).

NHANVIEN (MANV,HOTEN, NGVL, SODT)
Tân từ: Mỗi nhân viên bán hàng cần ghi nhận họ tên, ngày vào làm, điện thọai liên lạc, mỗi nhân viên phân biệt với nhau bằng mã nhân viên.

SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA)
Tân từ: Mỗi sản phẩm có một mã số, một tên gọi, đơn vị tính, nước sản xuất và một giá bán.

HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA)
Tân từ: Khi mua hàng, mỗi khách hàng sẽ nhận một hóa đơn tính tiền, trong đó sẽ có số hóa đơn, ngày mua, nhân viên nào bán hàng, trị giá của hóa đơn là bao nhiêu và mã số của khách hàng nếu là khách hàng thành viên.

CTHD (SOHD,MASP,SL)
Tân từ: Diễn giải chi tiết trong mỗi hóa đơn gồm có những sản phẩm gì với số lượng là bao nhiêu. (sơ đồ thể hiện mối quan hệ giữa các bảng)

1.2. Cấu trúc bảng như sau:

2. Phần mô tả câu hỏi

2.1. Các yêu cầu tạo dữ liệu

  1. Tạo các quan hệ và khai báo các khóa chính, khóa ngoại của quan hệ.
  2. Thêm vào thuộc tính GHICHU có kiểu dữ liệu varchar(20) cho quan hệ SANPHAM.
  3. Thêm vào thuộc tính LOAIKH có kiểu dữ liệu là tinyint cho quan hệ KHACHHANG.
  4. Sửa kiểu dữ liệu của thuộc tính GHICHU trong quan hệ SANPHAM thành varchar(100).
  5. Xóa thuộc tính GHICHU trong quan hệ SANPHAM.
  6. Làm thế nào để thuộc tính LOAIKH trong quan hệ KHACHHANG có thể lưu các giá trị là: “Vang lai”, “Thuong xuyen”, “Vip”, …
  7. Đơn vị tính của sản phẩm chỉ có thể là (“cay”,”hop”,”cai”,”quyen”,”chuc”)
  8. Giá bán của sản phẩm từ 500 đồng trở lên.
  9. Mỗi lần mua hàng, khách hàng phải mua ít nhất 1 sản phẩm.
  10. Ngày khách hàng đăng ký là khách hàng thành viên phải lớn hơn ngày sinh của người đó.
  11. Ngày mua hàng (NGHD) của một khách hàng thành viên sẽ lớn hơn hoặc bằng ngày khách hàng đó đăng ký thành viên (NGDK).
  12. Ngày bán hàng (NGHD) của một nhân viên phải lớn hơn hoặc bằng ngày nhân viên đó vào làm.
  13. Mỗi một hóa đơn phải có ít nhất một chi tiết hóa đơn.
  14. Trị giá của một hóa đơn là tổng thành tiền (số lượng*đơn giá) của các chi tiết thuộc hóa đơn đó.
  15. Doanh số của một khách hàng là tổng trị giá các hóa đơn mà khách hàng thành viên đó đã mua.

2.2. Các yêu cầu truy vấn dữ liệu

  1. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất.
  2. In ra danh sách các sản phẩm (MASP, TENSP) có đơn vị tính là “cay”, ”quyen”.
  3. In ra danh sách các sản phẩm (MASP,TENSP) có mã sản phẩm bắt đầu là “B” và kết thúc là “01”.
  4. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quốc” sản xuất có giá từ 30.000 đến 40.000.
  5. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” hoặc “Thai Lan” sản xuất có giá từ 30.000 đến 40.000.
  6. In ra các số hóa đơn, trị giá hóa đơn bán ra trong ngày 1/1/2007 và ngày 2/1/2007.
  7. In ra các số hóa đơn, trị giá hóa đơn trong tháng 1/2007, sắp xếp theo ngày (tăng dần) và trị giá của hóa đơn (giảm dần).
  8. In ra danh sách các khách hàng (MAKH, HOTEN) đã mua hàng trong ngày 1/1/2007.
  9. In ra số hóa đơn, trị giá các hóa đơn do nhân viên có tên “Nguyen Van B” lập trong ngày 28/10/2006.
  10. In ra danh sách các sản phẩm (MASP,TENSP) được khách hàng có tên “Nguyen Van A” mua trong tháng 10/2006.
  11. Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”.
  12. Tìm các số hóa đơn đã mua sản phẩm có mã số “BB01” hoặc “BB02”, mỗi sản phẩm mua với số lượng từ 10 đến 20.
  13. Tìm các số hóa đơn mua cùng lúc 2 sản phẩm có mã số “BB01” và “BB02”, mỗi sản phẩm mua với số lượng từ 10 đến 20.
  14. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất hoặc các sản phẩm được bán ra trong ngày 1/1/2007.
  15. In ra danh sách các sản phẩm (MASP,TENSP) không bán được.
  16. In ra danh sách các sản phẩm (MASP,TENSP) không bán được trong năm 2006.
  17. In ra danh sách các sản phẩm (MASP,TENSP) do “Trung Quoc” sản xuất không bán được trong năm 2006.
  18. Tìm số hóa đơn đã mua tất cả các sản phẩm do Singapore sản xuất.
  19. Có bao nhiêu hóa đơn không phải của khách hàng đăng ký thành viên mua?
  20. Có bao nhiêu sản phẩm khác nhau được bán ra trong năm 2006.
  21. Cho biết trị giá hóa đơn cao nhất, thấp nhất là bao nhiêu ?
  22. Trị giá trung bình của tất cả các hóa đơn được bán ra trong năm 2006 là bao nhiêu?
  23. Tính doanh thu bán hàng trong năm 2006.
  24. Tìm số hóa đơn có trị giá cao nhất trong năm 2006.
  25. Tìm họ tên khách hàng đã mua hóa đơn có trị giá cao nhất trong năm 2006.
  26. In ra danh sách 3 khách hàng (MAKH, HOTEN) có doanh số cao nhất.
  27. In ra danh sách các sản phẩm (MASP, TENSP) có giá bán bằng 1 trong 3 mức giá cao nhất.
  28. In ra danh sách các sản phẩm (MASP, TENSP) do “Thai Lan” sản xuất có giá bằng 1 trong 3 mức giá cao nhất (của tất cả các sản phẩm).
  29. In ra danh sách các sản phẩm (MASP, TENSP) do “Trung Quoc” sản xuất có giá bằng 1 trong 3 mức giá cao nhất (của sản phẩm do “Trung Quoc” sản xuất).
  30. * In ra danh sách 3 khách hàng có doanh số cao nhất (sắp xếp theo kiểu xếp hạng).
  31. Tính tổng số sản phẩm do “Trung Quoc” sản xuất.
  32. Tính tổng số sản phẩm của từng nước sản xuất.
  33. Với từng nước sản xuất, tìm giá bán cao nhất, thấp nhất, trung bình của các sản phẩm.
  34. Tính doanh thu bán hàng mỗi ngày.
  35. Tính tổng số lượng của từng sản phẩm bán ra trong tháng 10/2006.
  36. Tính doanh thu bán hàng của từng tháng trong năm 2006.
  37. Tìm hóa đơn có mua ít nhất 4 sản phẩm khác nhau.
  38. Tìm hóa đơn có mua 3 sản phẩm do “Viet Nam” sản xuất (3 sản phẩm khác nhau).
  39. Tìm khách hàng (MAKH, HOTEN) có số lần mua hàng nhiều nhất.
  40. Tháng mấy trong năm 2006, doanh số bán hàng cao nhất ?
  41. Tìm sản phẩm (MASP, TENSP) có tổng số lượng bán ra thấp nhất trong năm 2006.
  42. *Mỗi nước sản xuất, tìm sản phẩm (MASP,TENSP) có giá bán cao nhất.
  43. Tìm nước sản xuất sản xuất ít nhất 3 sản phẩm có giá bán khác nhau.
  44. *Trong 10 khách hàng có doanh số cao nhất, tìm khách hàng có số lần mua hàng nhiều nhất.

3. Phần hướng dẫn

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

  • Giải phần tạo bảng, dữ liệu

Xem bài giải
  • Giải phần câu truy vấn

Xem bài giải

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!