Mô tả bài toánMỗi khách hàng có một mã khách hàng MAKH duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như: họ tên khách hàng HOTEN, địa chỉ ĐIACHI, số điện thoại DIENTHOAI.
Trang 1TRƯỜNG ĐẠI HỌC DUY TÂN
BÀI TẬP CÁ NHÂN MÔN: CƠ SỠ DỮ LIỆU
Đề tài
QUẢN LÝ BÁN HÀNG
Giảng viên hướng dẫn : Trần Huệ Chi Sinh viên thực hiện : Nguyễn Văn Thuận Lớp : IS 301 B
Mã sinh viên: 28211106441
Trang 23.1 Câu lệnh nhập dữ liệu vào bảng 7
3.2 Câu lệnh xóa dữ liệu 7
4 Câu lệnh thao tác dữ liệu 7
4.1 Truy vấn lấy dữ liệu từ 1 bảng (8 câu) 7
4.2 Truy vấn từ nhiều bảng (6 câu) 8
4.3 Truy vấn có dùng hàm 10
4.4 Truy vấn có gộp nhóm 10
Trang 3PHẦN I – PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ SỞ DỮ LIỆU
1 Mô tả bài toán
Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như: họ tên khách hàng (HOTEN), địa chỉ (ĐIACHI), số điện thoại (DIENTHOAI) Các mặt hàng được phân loại theo từng nhóm hàng, mỗi nhóm hàng có một mã nhóm (MANHOM) duy nhất, mỗi mã nhóm hàng xác định tên nhóm hàng (TENNHOM), tất nhiên một nhóm hàng có thể có nhiều mặt hàng Mỗi mặt hàng được đánh một mã số (MAHANG) duy nhất, mỗi mã số này xác định các thông tin về mặt hàng đó như : tên hàng (TENHANG), đơn giá bán (ĐONGIA), đơn vị tính (ĐVT) Mỗi hóa đơn bán hàng có một số hóa đơn (SOHD) duy nhất, mỗi hóa đơn xác định dược khách hàng và ngày lập hóa đơn (NGAYLAPHD), ngày bán hàng (NGAYBAN) Với mỗi mặt hàng trong một hóa đơn cho biết số lượng bán (SLBAN) của mặt hàng đó.
KHACHHANG (MAKH, HOTEN, DIACHI, DIENTHOAI) NHOMHANG (MANHOM, TENNHOM)
HOADON (SOHD, NGAYLAPHD, NGAYBAN) MATHANG (MAHANG, TENHANG, DONGIA, DVT) BAN (SOHD, MAHANG, SLBAN)
Trang 6Bảng dữ liệu HOADON
Bảng dữ liệu BAN
Trang 7PHẦN II – BIỂU THỨC ĐẠI SỐ QUAN HỆ 1 Lập danh sách các khách hàng ở Đà Nẵng δdiachi = “Đà Nẵng” (KHACHHANG) 2 Lập danh sách những mặt hàng có dvt là kg δDVT = “kg” (MATHANG)
3 Lấy những hóa đơn năm 2023 Mahd, makh, ngayhd πmahđ, makh, ngayhd (δ year(ngayhd) = 2023(hoadon)) 4 Lấy những mặt hàng có sl bán>=20 Mah, mahd, slban πmah, mahd, slban (δ slban >= 20 (ban))
5 Lấy những mặt hàng có trong hd01 Mahd, mah, tenh πmahd, mah, tenh (δmahd = “hd01” (ban * mathang))
6 Lấy những mặt hàng mà kh01 đã mua Makh, mahd, mah, tenh πmakh, mahd, mah, tenh (δmakh = “kh01” (ban*hoadon * mathang)) 7 Lấy những hóa đơn mua với sl>50 Mah, mahd, tenh, sl
πmah, mahd, tenh, slban (δ slban >50 (ban * mathang)) 8 Lấy những mặt hàng chưa ai mua.
πmah(mathang) – πmah(ban)
Trang 8
PHẦN III – NGÔN NGỮ SQL 1 Câu lệnh tạo bảng
CREATE TABLE KHACHHANG (MAKH TEXT PRIMARY KEY, HOTEN TEXT,
DIACHI TEXT, DIENTHOAI NUMBER) CREATE TABLE NHOMHANG (MANHOM TEXT PRIMARY KEY, TENNHOM TEXT)
CREATE TABLE MATHANG (MAHANG TEXT PRIMARY KEY, TENHANG TEXT,
DONGIA NUMBER, DVT TEXT,
MANHOM TEXT REFERENCES NHOMHANG(MANHOM)) 2 Câu lệnh chỉnh sửa cấu trúc bảng
2.1 Câu lệnh thêm cột
Alter table HOADON add column GIAMGIA number 2.2 Câu lệnh xóa cột
Alter table KHACHHANG drop column DIACHI 2.3 Câu lệnh đổi kiểu dữ liệu
alter table KHACHHANG alter column DIENTHOAI int
Trang 93 Câu lệnh về dữ liệu
3.1 Câu lệnh nhập dữ liệu vào bảng
Insert into KHACHHANG (MAKH, HOTEN, DIACHI, DIENTHOAI) values (“KH06”, “Nguyễn Văn A”, “Hà Nội”, “0123456789”)
3.2 Câu lệnh xóa dữ liệu
Delete from KHACHHANG where MAKH = “KH01” 4 Câu lệnh thao tác dữ liệu
4.1 Truy vấn lấy dữ liệu từ 1 bảng (8 câu)
- Câu không cần điều kiện: Lập danh sách các khách hàng Select makh, hotwn, diachi, dienthoai from KHACHHANG
- Câu có 1 điều kiện: Lấy những mặt hàng có dvt là “kg” tenh, dvt
Select tenh, dvt From HANG Where dvt = “kg”
- Câu có 2 điều kiện: Liệt kê các mặt hàng có số lượng >=10 và <=20 Mah, soluong, dongia
Select mah, soluong, dongia From BAN
Where soluong >= 10 and soluong <= 20
- Câu có sử dụng biểu thức: Lấy những hóa đơn trong năm 2022 Mahd, nam
Select mahd, ngayhd as nam From HOADON
Trang 10
Where year (ngayhd) = 2022
- Câu có dùng tùy chọn top N: Liệt kê 2 mặt hàng có đơn
Select * from HOADON
- Câu có dùng tùy chọn order by: Lấy danh sách khách hàng được sắp xếp theo mã khách hàng
Select * from KHACHHANG order by makh - Câu có sử dụng kết hợp 2 hoặc 3 tùy chọn trên: Lấy danh sách 10 mặt hàng có Đơn giá cao nhất, được sắp xếp theo Mã hàng
Select top 10 * from MATHANG Order by dongia, mahang 4.2 Truy vấn từ nhiều bảng (6 câu)
- 2 Câu truy vấn từ 2 bảng không cần điều kiện lọc Truy vấn tất cả thông tin của bảng KHACHHANG và NHOMHANG:
Select * from KHACHHANG, NHOMHANG
Truy vấn số hóa đơn và ngày lập hóa đơn từ bảng HOADON và MATHANG:
Select hoadon.sohd, hoadon.ngaylaphd from hoadon, mathang
Trang 11- 2 Câu truy vấn từ 2 bảng có thêm điều kiện lọc Truy vấn số hóa đơn, ngày lập hóa đơn và mã hàng từ bảng HOADON và MATHANG chỉ khi mã hàng bằng “MH01”:
select hoadon.sohd, hoadon.ngaylaphd, mathang.mahang from hoadon, mathang where mathang.mahang = “MH01” truy vấn mã khách hàng và địa chỉ từ bảng
KHACHHANG và NHOMHANG chỉ khi nhóm hàng là “Snack”:
select khachhang.makh, khachhang.diachi from khachhang, nhomhang
where nhomhang.tennhom = “snack” - 2 Câu truy vấn từ 3 bảng trở lên
Truy vấn số hóa đơn, ngày lập hóa đơn, tên hàng, và số lượng bán từ các bảng HOADON, MATHANG và BAN: select hoadon.sohd, hoadon.ngaylaphd, mathang.tenhang, ban.slban from hoadon, mathang, ban
where hoadon.sohd = ban.sohd and mathang.mahang = ban.mahang
Truy vấn tên nhóm hàng, tên hàng, mã hàng và đơn giá từ các bảng NHOMHANG, MATHANG và BAN chỉ khi số lượng bán lớn hơn 10:
select nhomhang.tennhom, mathang.tenhang, mathang.mahang, mathang.dongia
from nhomhang, mathang, ban
where nhomhang.manhom = mathang.manhom and mathang.mahang = ban.mahang and ban.slban > 10
Trang 124.3 Truy vấn có dùng hàm
- 1 câu có dùng làm sum có điều kiện: Tính tổng số lượng hàng đã bán trong toàn bộ các hóa đơn.
select sum (SLBAN) from BAN
- 1 câu dùng hàm count: Đếm số lượng khách hàng select count (*) as sl_khachhang
from KHACHHANG
- 1 câu dùng hàm agv có điều kiện: Tính trung bình giá của các mặt hàng có số lượng bán lớn hơn 10.
- 1 câu có dùng hàm sum: Tính tổng số lượng hàng đã bán của mỗi hóa đơn.
select distinct b.sohd,
(select sum(slban) from ban where sohd = b.sohd) as
Trang 13from khachhang kh, mathang mh
where kh.mahang = mh.mahang and mh.manhom = nh.manhom) as so_luong_kh
từ 2 bảng: Tìm mã hàng và giá cao nhất trong danh sách các mặt hàng.
select mh.mahang, max(mh.dongia) as gia_cao_nhat from mathang mh
- 1 câu có dùng hàm avg có điều kiện nhóm: Tính giá trung bình của các mặt hàng đã bán theo từng hóa đơn select b.sohd, (select avg(dongia) from mathang where mahang = b.mahang) as gia_trung_binh from ban b