Breaking News

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