Cách tạo Database quản lý bán hàng trên sql server
-- tạo ra database quản lý bán hàng
Create database QLBH_31052022;
--
go
--
use QLBH_31052022;
--
go
-- Sử dụng database này tạo bảng
Create table QuocGia
(
MaQuocGia varchar(10) primary key,
TenQuocGia nvarchar(100)
);
go
-- Tạo bảng Hàng Hóa
Create table HangHoa
(
MaHang varchar (15) primary key,
TenHang nvarchar (250),
MoTa nvarchar (1000),
TonKho int,
XuXuatId varchar(10) references QuocGia(MaQuocGia)-- vừa tạo bảo vừa tao mối quan hệ phải bang cha truoc
);
alter table HangHoa
add Gia float;
go
Create table HoaDonBan
(
MaHoaDon varchar(10) primary key,
TenHoaDon nvarchar (150),
MoTa nvarchar(500),
NgayBan date,
KhachHangId int
);
----Hoa don mua
Create table HoaDonMua
(
MaHoaDon varchar(10) primary key,
TenHoaDon nvarchar (150),
MoTa nvarchar(500),
NgayMua date,
);
go
--tạo bảng Hóa Đơn Bán ct
Create table HoaDonBanCT
(
MaHoaDon varchar(10) references HoaDonBan(MaHoaDon),
MaHang varchar (15) references HangHoa(MaHang),
SoLuong int,
GiaMua float,
GiaBan float,
constraint PK_HoaDonBanCT_Id Primary key (MaHoaDon, MaHang)
);
Alter table HoaDonBanCT
add GiaBan float;
go
-- thêm hóa won chi tiết mua
Create table HoaDonMuaCT
(
MaHoaDon varchar(10) references HoaDonMua(MaHoaDon),
MaHang varchar (15) references HangHoa(MaHang),
SoLuong int,
GiaMua float,
constraint PK_HoaDonMuaCT_Id Primary key (MaHoaDon, MaHang)
);
-- Tạo bảng loại khách hàng
Create table LoaiKhachHang
(
Id int identity (1,1) primary key,
TenLoai nvarchar (150)
);
go
--Tạo bảng khách hàng
Create table KhachHang
(
MaKH int identity (1,1) primary key,
HoTen nvarchar(30),
DienThoai varchar(20),
Email varchar (50),
DiaChi nvarchar (250),
LoaiKhachHangId int references LoaiKhachHang(Id)
);
-- thiêt lập quan hệ giữa hóa đơn và khách hàng
Alter table HoaDonBan
add constraint FK_KhachHang_Id foreign key (KhachHangId)
references KhachHang(MaKH);
---
--- -------------------------------------------------
-- Viết hàm thủ tuc (Proc thêm quốc gia
Create proc SP_ThemQuocGia
(
@MaQuocGia varchar (10),
@TenQuocGia nvarchar(100)
)
as
Begin
Insert into QuocGia(MaQuocGia, TenQuocGia) values( @MaQuocGia, @TenQuocGia);
End;
-- gọi hàm thủ tục
exec SP_ThemQuocGia 'VN', N'Việt Nam';
exec SP_ThemQuocGia 'NB', N'Nhật Bản';
exec SP_ThemQuocGia 'HQ', N'Han Quoc';
exec SP_ThemQuocGia 'TL', N'Thái Lan';
exec SP_ThemQuocGia 'L', N'Lào';
exec SP_ThemQuocGia 'TQ', N'Trung QUoc';
select * from QuocGia
-- Thêm thông tin khách hàng
insert into LoaiKhachHang values (N'Cá Nhân');
insert into LoaiKhachHang values (N'Doanh NGhiệp');
--thêm khách hàng
Insert into KhachHang(HoTen, DienThoai, Email, DiaChi )
select HoTen, DienThoai, Email, DiaChi from CSDL2022DV.dbo.NhanVien;
select * from KhachHang
-- Tạo 1 thủ tục thêm hàng hóa
Create proc SP_ThemHangHoa
(
@MaHang varchar(15),
@TenHang Nvarchar (250),
@Gia float,
@XuXuatId varchar (10)
)
as
Insert into HangHoa(MaHang, TenHang, Gia, XuXuatId)
values(@MaHang, @TenHang, @Gia, @XuXuatId);
-- Goi thủ tục hàm thêm mới
exec SP_ThemHangHoa 'IPX', N'iphone X 64GB', 25000000, 'TQ';
exec SP_ThemHangHoa 'IP11', N'iphone X 64GB', 35000000, 'TQ';
exec SP_ThemHangHoa 'IP12', N'iphone X 64GB', 45000000, 'TQ';
exec SP_ThemHangHoa 'IP13', N'iphone X 64GB', 55000000, 'TQ';
exec SP_ThemHangHoa 'IP14', N'iphone X 64GB', 65000000, 'TQ';
select * from HangHoa
-- Viết thủ tục nhập hóa đơn mua, mua chi tiết
Create Proc SP_ThemHoaMua
(
@MaHoaDon varchar (10),
@TenHoaDon nvarchar (150),
@MoTa nvarchar (500),
@NgayMua date
)
as
Insert into HoaDonMua(MaHoaDon, TenHoaDon, MoTa, NgayMua)
values (@MaHoaDon, @TenHoaDon, @MoTa, @NgayMua);
-- Thủ tục thêm hóa đơn mua chi tiết
Create Proc SP_ThemHoaDonMuaCT
(
@MaHoaDon varchar (10),
@MaHang varchar (15),
@SoLuong int,
@GiaMua float
)
as
Insert into HoaDonMuaCT(MaHoaDon, MaHang, SoLuong, GiaMua) values (@MaHoaDon, @MaHang, @SoLuong, @GiaMua);
go
exec SP_ThemHoaMua'HD001', N'Nhập Iphone X', N'Nhap Lo Iphone X', '05/01/2021';
-- thêm chi tiết hóa đơn mua
exec SP_ThemHoaDonMuaCT 'HD001', 'IPX', 10, 20000000;
exec SP_ThemHoaDonMuaCT 'HD001', 'IP8P', 20, 15000000;
exec SP_ThemHoaMua'SF003', N'Nhập Hàng Lô máy tính', N'Nhập máy tính từ trung quốc', '05/01/2021';
select * from HoaDonMuaCT
go
-- Viết thủ tục nhập hóa đơn bán, bán chi tiết
alter Proc SP_ThemHoaBan
(
@MaHoaDon varchar (10),
@TenHoaDon nvarchar (150),
@MoTa nvarchar (500),
@NgayBan date,
@KhachHangId int
)
as
Insert into HoaDonBan(MaHoaDon, TenHoaDon, MoTa, NgayBan, KhachHangId)
values (@MaHoaDon, @TenHoaDon, @MoTa, @NgayBan, @KhachHangId);
go
-- Thủ tục thêm hóa đơn mua chi tiết
Create Proc SP_ThemHoaDonBanCT
(
@MaHoaDon varchar (10),
@MaHang varchar (15),
@SoLuong int,
@GiaBan float
)
as
Insert into HoaDonBanCT(MaHoaDon, MaHang, SoLuong, GiaBan) values (@MaHoaDon, @MaHang, @SoLuong, @GiaBan);
-- Gọi để thêm hóa đơn bán
exec SP_ThemHoaBan'HD001', N'Mua Iphone X ', N'Nhap Lo Iphone X tặng người yêu', '05/01/2022',1;
-- thêm chi tiết hóa đơn mua
exec SP_ThemHoaDonBanCT 'HD001', 'IPX', 1, 20000000;
exec SP_ThemHoaDonBanCT 'HD001', 'IP13', 1, 15000000;
exec SP_ThemHoaDonBanCT 'HD001', 'IP14', 1, 15000000;
-- Mỗi người nhập 2-3 hóa đơn mua bán
-- Viết thủ tục xem đơn hàng chi tiết theo hóa đơn
Create proc SP_HoaDonBanChiTiet
(
@maHoaDon varchar(10)
)
as
select hd.MaHoaDon, tenHoaDon, h.MaHang, TenHang, SoLuong, GiaBan,
SoLuong*GiaBan as ThanhTien from HoaDonBanCT ct inner join HoaDonBan hd
on ct.MaHoaDon=hd.MaHoaDon inner join HangHoa h on ct.MaHang = h.MaHang
where ct.MaHoaDon =@maHoaDon;
exec SP_HoaDonBanChiTiet 'HD001';
-- Viết hàm đếm số lượng hàng hóa mua theo mã hàng
alter function SoluongNhap
(
@maHang varchar (15)
)
Returns Int
as
Begin
-- Khai báo biến
Declare @tongso int =0;
-- Lấy thông tin cho biến từ 1 câu lệnh
set @tongso = (select sum(SoLuong) from HoaDonMuaCT ct inner join HoaDonMua hd
on ct.MaHoaDon=hd.MaHoaDon inner join HangHoa h on ct.MaHang = h.MaHang
where ct.MaHang =@maHang);
-- Trả về kết quả
if @tongso is null
begin
set @tongso =0;
end
return @tongso;
End;
-- Viết hàm đếm số lượng hàng hóa bán theo mã hàng
Create function SoluongBan
(
@maHang varchar (15)
)
Returns Int
as
Begin
-- Khai báo biến
Declare @tongso int =0;
-- Lấy thông tin cho biến từ 1 câu lệnh
set @tongso = (select sum(SoLuong) from HoaDonBanCT ct inner join HoaDonBan hd
on ct.MaHoaDon=hd.MaHoaDon inner join HangHoa h on ct.MaHang = h.MaHang
where ct.MaHang =@maHang);
-- Trả về kết quả
if @tongso is null
begin
set @tongso =0;
end
return @tongso;
End;
--- tổng tiền nhập
-- Viết hàm tổng tiền nhập theo mã hàng
alter function TongTienNhap
(
@maHang varchar (15)
)
Returns Int
as
Begin
-- Khai báo biến
Declare @tongtien float =0;
Declare @SoLuongBan int =0;
Declare @GiaMua float =0;
set @SoLuongBan =dbo.SoLuongBan(@maHang)
set @tongtien = (select avg(GiaMua) from HoaDonMuaCT
where MaHang =@maHang);
set @tongtien =@GiaMua *@SoLuongBan;
-- kiểm tra null thì sét bằng 0
if @tongtien is null
begin
set @tongtien =0;
end
return @tongtien;
End;
-- Viết hàm tổng tiền bán theo mã
alter function TongTienBan
(
@maHang varchar (15)
)
Returns Int
as
Begin
-- Khai báo biến
Declare @tongtien float =0;
-- Lấy thông tin cho biến từ 1 câu lệnh
set @tongtien = (select sum(SoLuong*GiaBan) as TongTien from HoaDonBanCT
where MaHang =@maHang);
-- Trả về kết quả
if @tongtien is null
begin
set @tongtien =0;
end
return @tongtien;
End;
-- Tạo view thống kê hàng tồn theo từng mặt hàng
Create view vThongKeHangTonKho
as
select MaHang, TenHang, dbo.SoLuongNhap(MaHang) as SoLuongNhap,
dbo.SoLuongBan(MaHang) as SoLuongBan,
dbo.SoLuongNhap(MaHang) - dbo.SoLuongBan(MaHang) as TonKho
from HangHoa;
select * from vThongKeHangTonKho
-- Tạo view thống kế lợi nhuận
Create view vThongKeloinhuanTamTinh
as
select MaHang, TenHang, dbo.TongTienNhap(MaHang) as TongTienNhap,
dbo.TongTienBan(MaHang) as TongTienBan,
dbo.TongTienBan(MaHang) - dbo.TongTienNhap(MaHang) as LoiNhaunTamTinh
from HangHoa;
Không có nhận xét nào