Tải bản đầy đủ (.docx) (24 trang)

(Tiểu luận) báo cáo bài tập lớn môn hệ quản trị cơ sở dữ liệu – it10 chủ đề 04 quản lý kinh doanh cửa hàng thuốc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.44 MB, 24 trang )

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
TRUNG TÂM ĐÀO TẠO ELEARNING
----------------------

BÁO CÁO BÀI TẬP LỚN
MÔN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU – IT10

CHỦ ĐỀ 04: QUẢN LÝ KINH DOANH CỬA HÀNG THUỐC
SVTH:

- Nguyễn Văn Chiến
- Đào Thái Duy
- Nguyễn Đình Duy
- Nguyễn Viết Duy
- Nguyễn Thị Thúy Hằng
Giảng viên hướng dẫn:
ThS. Trịnh Thị Xuân

Hà Nội - Năm 2022


MỤC LỤC
Trang

I. PHÁT BIỂU BÀI TỐN..............................................................................1
II. MƠ HÌNH CSDL QUAN HỆ.........................................................................1
III. TẠO CƠ SỞ DỮ LIỆU..............................................................................3
IV. XÂY DỰNG CÁC VIEW CHO CSDL..............................................................8
V. XÂY DỰNG CÁC PROCEDURE CHO CSDL....................................................12
VI. XÂY DỰNG CÁC TRIGGER C...................................................................15
VII. PHÂN QUYỀN VÀ BẢO MẬT CSDL........................................................... 18


VIII. PHÂN TÁN CƠ SỞ DỮ LIỆU................................................................... 19


CHỦ ĐỀ 04
I. Đề bài.
-

Xây dựng chương trình quản lý kinh doanh cửa hàng thuốc

- Các bảng tối thiểu cần có: tblThuoc(Thuốc), tblKhachHang(Khách hàng), tblNhanVien(Nhân
viên), tblHoaDon(Hố đơn), tblCTHoaDon(Chi tiết hố đơn),….

(Sinh viên tự xác định các thuộc tính và có thể bổ sung thêm các bảng phù hợp với bài
toán thực tế)
-

Yêu cầu cần thực hiện:

1.
Xác định các bảng và Tạo CSDL của bài toán (1 điểm): Thực hiện câu lệnh tạo
CSDL, tạo bảng và chèn dữ liệu cho bảng, mỗi bảng tối thiểu 5 bản ghi
2.
Tạo các view chứa và khai thác CSDL (2 điểm): Tối thiểu 10 view (gồm: Lấy thông
tin một bảng, lấy thông tin nhiều bảng, tính tốn gom nhóm, …)
3.
Tạo và thực thi các thủ tục cho CSDL (2 điểm): Tối thiểu 5 thủ tục (các thủ tục có
truyền tham số)
4.

Tạo và vận dụng các trigger (2 điểm): Tối thiểu 5 trigger


5.
Phân quyền và bảo mật cho CSDL (2 điểm): Tạo tối thiểu 2 người dùng và phân
quyền sử dụng cho Bảng, View, Thủ tục đã tạo ở trên
6.
Phân tán (1 điểm): lựa chọn một số bảng bất kỳ, thực hiện phân tán ngang và dọc,
thực hiện các yêu cầu khai thác trên dữ liệu phân tán
II.

Yêu cầu chung về quyển báo cáo và chương trình
*Tồn bộ chương trình và file báo cáo BTL được lưu trong thư mục với tên theo nguyên
tắc sau:
Nguyên tắc: SQLSERVER-BTL-<thứ tự đề>-<Họ tên sinh viên>
Ví dụ: SQLSERVER -BTL-01-NguyenVanHung
*Chương trình: Tạo file Query ghi nhận toàn bộ các câu lệnh thực hiện xử lý với CSDL
của bài toám gồm: Tạo cơ sở dữ liệu, tạo và chỉnh sửa các bảng, tạo và kiểm tra các
View, tạo và thực thi các thủ tục Proc, tạo và thực thi các Trigger, tạo người dùng và
phân quyền người dùng, ….
*Cấu trúc quyển báo cáo:

1.

Trang bìa: Tên đề tài, tên nhóm (gồm cả họ tên các thành viên của nhóm), tên lớp.

2.

Mục lục.

3.


Giới thiệu đề tài.

4.

Phát biểu bài tốn

5.

Mơ hình CSDL và tạo CSDL – tạo và chỉnh sửa các bảng

6.

Các đối tượng CSDL gồm: View, Proc, Trigger

7.

Phân quyền và bảo mật CSDL

8.



9.

Kết luận, hướng phát triển tiếp theo
10. Tài liệu tham khảo


I. PHÁT BIỂU BÀI TOÁN.
Quản lý kinh doanh của hàng thuốc gồm các thơng tin sau:

Mỗi loại thuốc phải có mã thuốc, tên thuốc, số lượng, đơn vị tính (viên, vỉ,…), giá và
mã nhà sản xuất thuốc.
Mã nhà xản xuất dùng để tra cứu các thông tin của nhà sản xuất như tên, địa chỉ, số
điện thoại.
Khách hàng khi mua thuốc sẽ được lưu lại các thông tin cơ bản như tên, địa chỉ, số
điện thoại và mã khách hàng.Địa chỉ và số điện thoại của khách hàng dùng làm
phương thức giao hàng nên không được bỏ trống.
Các giao dịch với khách hàng sẽ được lập hoá đơn. Hoá đơn sẽ bao gồm mã hoá đơn,
ngày đặt hàng, mã khách hàng, mã nhân viên lập hoá đơn và tổng tiền. Trong mỗi hoá
đơn sẽ bao gồm chi tiết hoá đơn như mã chi tiết hoá đơn, mã hoá đơn, mã thuốc, số
lượng, thành tiền của từng loại thuốc và tổng tiền. Số lượng thuốc sẽ được cập nhật
lại sau khi khách hàng mua thuốc.
Nhà thuốc sẽ quản lý nhân viên bằng mã nhân viên, tên nhân viên, địa chỉ, số điện
thoại, ngày sinh và giới tính. Các nhân viên sẽ được giới hạn độ tuổi làm việc từ 18
tuổi đến 65 tuổi và không thể chỉnh sửa mã nhân viên khi cập nhật lại thơng tin nhân
viên. Chương trình sẽ được phân quyền để phù hợp cho mục đích sử dụng mỗi người.

II. MƠ HÌNH CSDL QUAN HỆ.
Ta có CSDL của bài toàn như sau:
1.

tblNhaSanXuat (MaNSX, TenNSX, DiaChi, SDT).

2.

tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia, MaNSX) .

3.

tblKhachHang (MaKH, TenKH, DiaChi, SDT).


4.

tblNhanVien (MaNV, TenNV, DiaChi, SDT, NgaySinh, GioiTinh).

5.

tblHoaDon (MaHD, NgayDatHang, MaKH, MaNV, TongTien).

6.
tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien,
TongThanhTien).
Các bảng được xác định cấu trúc như sau:
*tblNhaSanXuat:
ST

Tên thuộc

T

tính

Kiểu dữ liệu
1

MaNSX

Nvarchar(50)

Ràng buộc

PK

Ghi chú
Mã nhà sản xuất

1


2

TenNSX

Nvarchar(255)

3

DiaChi

Nvarchar(255)

4

SDT

varchar(10)

*tblHoaDon:
ST

Tên thuộc


T

tính

Kiểu dữ liệu

*tblThuoc:
ST

Tên thuộc
Kiểu dữ liệu

T

tính

1

MaThuoc

Nvarchar(50)

2

TenThuoc

Nvarchar(255)

3


SoLuong

int

4

DVT

Nvarchar(50)

5

DonGia

Float

6

MaNSX

Nvarchar(50)

*tblKhachHang
ST

Tên thuộc

T


tính

Kiểu dữ liệu
1

MaKH

Nvarchar(50)

2

TenKH

Nvarchar(255)

3

DiaChi

Nvarchar(255

4

SDT

varchar(10)

*tblNhanVien:
ST


Tên thuộc

T

tính

Kiểu dữ liệu
1

MaNV

Nvarchar(50)

2

TenNV

Nvarchar(255)

3

DiaChi

Nvarchar(255)

4

SDT

varchar(10)


5

NgaySinh

DateTime

6

GioiTinh

Nvarchar(4)

1

MaHD

Nvarchar(50)

2

NgayDatHan

DateTime


Số điện thoại

Tên nhà sản xuất
Địa chỉ nhà sản

xuất
Số điện thoại
Ràng buộc
PK
Ràng buộc
PK

FK tham chiếu
sang
tblNhaSanXuat

Ghi chú
Mã thuốc
Tên thuốc
Số lượng
Đơn vị tính
Đơn giá
Mã nhà sản xuất

Ràng buộc
Ràng buộc
PK

Ghi chú
Mã khách hàng
Tên nhân viên
Địa chỉ
Số điện thoại
Ngày sinh
Giới tính


Ghi chú
Mã khách hàng
Tên khách hàng
Địa chỉ

PK

Ghi chú
Mã hóa đơn
Ngày đặt hàng

2


g
3

MaKH

Nvarchar(50)

FK, tham chiếu sang

Mã khách hàng

bảng tblKhachHang
4

MaNV


Nvarchar(50)

FK, tham chiếu sang

Mã nhân viên

bảng tblNhanVien
5

TongTien

Float

Tổng tiền

*tblCTHoaDon:
ST
Tên thuộc tính

Kiểu dữ liệu

Ràng buộc

1

MaCTHD

Nvarchar(50)


PK

2

MaHD

Nvarchar(50)

FK, tham chiếu sang

Ghi chú

T
Mã chi tiết hóa đơn
Mã hóa đơn

bảng tblHoaDon
3

MaThuoc

Nvarchar(50)

FK, tham chiếu sang

Mã thuốc

bảng tblThuoc

III.

-

-

4

SoLuong

int

Số lượng

5

ThanhTien

Float

Thành tiền

6

TongThanhTien

Float

Tổng thành tiền

TẠO CƠ SỞ DỮ LIỆU.
Tạo db


Tạo bảng nhà sản xuất CREATE TABLE tblNhaSanXuat (
MaNSX Nvarchar(50) not null,
TenNSX Nvarchar(255) not null,
DiaChi Nvarchar(255) null,
SDT varchar(10) null,
PRIMARY KEY (MaNSX),

);
-

Tạo bảng thuốc
CREATE TABLE tblThuoc (
MaThuoc Nvarchar(50) not null,
TenThuoc Nvarchar(255) not null,
SoLuong int not null,
DVT Nvarchar(50) null,
DonGia Float not null,
MaNSX Nvarchar(50) not null
PRIMARY KEY (MaThuoc),
FOREIGN KEY (MaNSX) REFERENCES tblNhaSanXuat(MaNSX),
);


-- Bảng khách hàng

3


CREATE TABLE tblKhachHang (

MaKH Nvarchar(50) not null,
TenKH Nvarchar(255) not null,
DiaChi Nvarchar(255) null,
SDT varchar(10) null,
PRIMARY KEY (MaKH)
);
-- Bảng nhân viên
CREATE TABLE tblNhanVien (
MaNV Nvarchar(50) not null,
TenNV Nvarchar(255) not null,
DiaChi Nvarchar(255) null,
SDT varchar(10) null,
NgaySinh DateTime null,
GioiTinh Nvarchar(4) null,
PRIMARY KEY (MaNV),
);
-- Bảng hóa don
CREATE TABLE tblHoaDon (
MaHD Nvarchar(50) not null,
NgayDatHang DateTime not null,
MaKH Nvarchar(50) not null,
MaNV Nvarchar(50) not null,
TongTien Float not null,
PRIMARY KEY (MaHD),
);
-

FOREIGN KEY (MaKH) REFERENCES tblKhachHang(MaKH),
FOREIGN KEY (MaNV) REFERENCES tblNhanVien(MaNV)


Bảng chi tiết hóa don CREATE TABLE tblCTHoaDon (
MaCTHD Nvarchar(50) not null,
MaHD Nvarchar(50) not null,

MaThuoc Nvarchar(50) not
null, SoLuong int not
null, ThanhTien Float not
null, TongThanhTien Float
not null, PRIMARY KEY
(MaCTHD),
FOREIGN KEY (MaHD) REFERENCES tblHoaDon(MaHD),
FOREIGN KEY (MaThuoc) REFERENCES tblThuoc(MaThuoc)

);

- Chèn dữ liệu cho bảng.
-- Chèn dữ liệu cho bảng tblNhaSanXuat
INSERT INTO tblNhaSanXuat (MaNSX, TenNSX, DiaChi,SDT)
VALUES ('NSX01', N'Công ty cổ phần dược phẩm OPC',N'1017 - Hồng Bàng,
Phường 12, Quận 6, Tp.HCM',02837517111);
INSERT INTO tblNhaSanXuat (MaNSX, TenNSX, DiaChi,SDT)
VALUES ('NSX02', N'Cơng ty CP hố dược phẩm Mekophar',N'297/5 Lý Thường
Kiệt, Quận 11, Tp.HCM, Việt Nam.',02838650258);
INSERT INTO tblNhaSanXuat (MaNSX, TenNSX, DiaChi,SDT)
VALUES ('NSX03', N'Cơng ty CP hố dược phẩm Mekophar',N'297/5 Lý Thường
Kiệt, Quận 11, Tp.HCM, Việt Nam.',02838650258);
INSERT INTO tblNhaSanXuat (MaNSX, TenNSX, DiaChi,SDT)
VALUES ('NSX04', N'Công ty cổ phần dược phẩm TW25',N'448B Nguyễn Tất Thành,
P 18, Quận 4, TP.HCM',02839404351);


4


INSERT INTO tblNhaSanXuat (MaNSX, TenNSX, DiaChi,SDT)
VALUES ('NSX05', N'Công ty Cổ Phần Sanofi Việt Nam',N'15/6C, Đặng Văn Bi,
Q. Thủ Đức TP.HCM',0287109424);

-- Chèn dữ liệu cho bảng tblThuoc
INSERT INTO tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia,MaNSX)
VALUES ('T001', N'Thuốc Atorvastatin 20Mg Trị Tăng Cholesterol Máu',
'10', N'Vỉ', '10000','NSX04');
INSERT INTO tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia,MaNSX)
VALUES ('T002', N'Thuốc Kháng Sinh Tetracyclin 500Mg Vidipha Điều Trị
Nhiễm Khuẩn', '10', N'Hộp', '48000','NSX04');
INSERT INTO tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia,MaNSX)
VALUES ('T003', N'Siro Ho Astex 90Ml Opc Giảm Ho Viêm Họng, Viêm Phế
Quản', '10', N'Chai', '38000','NSX01');
INSERT INTO tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia,MaNSX)
VALUES ('T004', N'Paracetamol 500mg Vidipha', '15', N'Hộp',
'19000','NSX02');
INSERT INTO tblThuoc (MaThuoc, TenThuoc, SoLuong, DVT, DonGia,MaNSX )
VALUES ('T005', N'Viên uống An thần dễ ngủ Mimosa hộp 50 viên',
'15', N'Hộp', '70900','NSX01');

-- Chèn dữ liệu cho bảng tblKhachHang
INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)
VALUES ('KH001', N'Nguyễn Văn A', N'Số 1, đường Nguyễn Thị Minh Khai,
TP.HCM ', 0983456780);
INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)
VALUES ('KH002', N'Nguyễn Văn B', N'Số 8, đường Nguyễn Văn Bi, TP.HCM ', 0986780320);


INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)

5


VALUES ('KH003', N'Nguyễn Văn Sơn', N'Số 13B, đường Nguyễn Ðình Chiểu,
TP.HCM ', 0945675678);
INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)
VALUES ('KH004', N'Nguyễn Thị Lan', N'Số 687, đường Nguyễn Ái Quốc,
TP.HCM ', 0935873478);
INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)
VALUES ('KH005', N'Ðặng Thị Thu Hà', N'Số 11/2B, đường Sơn Ðông,
TP.HCM ', 0945675678);
INSERT INTO tblKhachHang (MaKH, TenKH, DiaChi, SDT)
VALUES ('KH006', N'Ngô Diệt Phàm', N'Số 11/2B, đường Sơn Tây, Hà Nội ','');

-- Chèn dữ liệu cho bảng tblNhanVien
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV001', N'Nguyễn Văn C', N'TP.HCM', 0983455678,'2000-04-13',
'Nam');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV002',N'Nguyễn Văn D', N'TP.HCM', 0867980320,'2000-05-13','Nam');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV003',N'Nguyễn Văn Hà', N'TP.HCM', 0945675438,'2000-06-13','Nam');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV004',N'Ngơ Minh Chí', N'TP.HCM', 0939654378,'2001-04-13',N'Nữ');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV005',N'Nguyễn Thị Linh', N'TP.HCM', 0920965678,'1999-04-13',N'Nữ');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)

VALUES ('NV006',N'Đặng Thị Thanh', N'Hà Nội','','1997-05-13',N'Nữ');
INSERT INTO tblNhanVien (MaNV, TenNV, DiaChi, SDT,NgaySinh,GioiTinh)
VALUES ('NV007',N'Đào Bá Phương', N'Hà Nội','','2000-10-13',N'Nữ');

6


-- Chèn dữ liệu cho bảng tblHoaDon
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD001','2022-08-23', 'KH005', 150000,'NV003');
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD002','2022-08-24', 'KH005', 169000,'NV003');
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD003','2022-08-24', 'KH002', 300000,'NV004');
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD004','2022-08-25', 'KH003', 550000,'NV005');
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD005','2022-08-26', 'KH004', 750000,'NV002');
INSERT INTO tblHoaDon (MaHD, NgayDatHang, MaKH, TongTien,MaNV)
VALUES ('HD006','2022-08-24', 'KH005', 650000,'NV004');

-- Chèn dữ liệu cho bảng tblCTHoaDon
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien,
TongThanhTien) VALUES ('CTHD001','HD001','T001', 3, 150000, 150000);
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien,
TongThanhTien) VALUES ('CTHD002','HD002','T002', 3, 150000, 150000);
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien,
TongThanhTien) VALUES ('CTHD003','HD002','T003', 4, 150000, 250000);
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien, TongThanhTien)


7


VALUES ('CTHD004','HD003','T003', 2, 150000, 250000);
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien,
TongThanhTien) VALUES ('CTHD005','HD004','T004', 2, 150000, 350000);

- Sơ đồ quan hệ giữa các bảng

IV. XÂY DỰNG CÁC VIEW CHO CSDL.
- Tạo view:
Tạo view ds khách hàng Create VIEW DSKhachHang_VIEW AS SELECT TenKH,
DiaChi, SDT FROM tblKhachHang;

8


Select *from DSKhachHang_VIEW

-

Tạo view ds nhân viên
Create VIEW NhanVien_VIEW AS
Create VIEW NhanVien_VIEW AS
SELECT TenNV, GioiTinh,
DiaChi, SDT FROM tblNhanVien;
Select *from NhanVien_VIEW

--Tạo view ds nhân viên có giới tính là Nam


Create VIEW NhanVienNam_VIEW AS
SELECT MaNV, TenNV, GioiTinh
FROM tblNhanVien
WHERE GioiTinh
= 'Nam';
select *from NhanVienNam_VIEW

9


--Tạo view ds nhân viên có giới tính là Nữ
Create VIEW SanPham_VIEW AS
SELECT MaThuoc, TenThuoc, MaNSX
FROM tblThuoc
WHERE MaNSX = N'NSX04';
select *from SanPham_VIEW

--Tạo view ds nhân viên có địa chỉ là TP.HCM

Create VIEW AdNhanVien_VIEW AS
SELECT TenNV , DiaChi
FROM tblNhanVien
WHERE DiaChi like '%HCM%'
select *from AdNhanVien_VIEW

--Tạo view ds hóa đơn có số tiền trên 200000

Create VIEW Total_VIEW AS
SELECT MaHD, NgayDatHang, MaKH, TongTien
FROM tblHoaDon

WHERE TongTien
>= 200000;
select *from Total_VIEW

1
0


--Tạo View tính tổng số hóa đơn đã lập của từng Nhân viên
CREATE VIEW SumHDByNV_VIEW
AS
SELECT MaNV,SUMHD = Count(MaHD)
FROM tblHoaDon
GROUP BY MaNV
select *from SumHDByNV_VIEW

--Tạo View tính tổng số hóa đơn đã lập của nhân viên trong ngày 24/08/2022

CREATE VIEW SUMHDDAY_VIEW
AS
SELECT MaNV, NgayDatHang ,SUMHD = Count(MaHD)
FROM tblHoaDon
WHERE NgayDatHang = '2022-08-24'
GROUP BY MaNV , NgayDatHang
select *from SUMHDDAY_VIEW

Tạo ds nhân viên khơng có số điện thoại Create VIEW
PhoneNullNhanVien_VIEW AS SELECT TenNV, DiaChi

1

1


FROM tblNhanVien
WHERE SDT = ''
select *from PhoneNullNhanVien_VIEW

Tạo
view
tổng
tiền
TongTienCuaHangKiemDuoc_VIEW AS
SELECT SUM(TongTien) As
Total FROM tblHoaDon

cửa

hàng

kiếm

được

Create

VIEW

select *from TongTienCuaHangKiemDuoc_VIEW

-


Tạo view tuổi trung bình của NV Create VIEW TuoiTBCuaNV_VIEW
AS
select avg(datediff(year,NgaySinh , GETDATE()))
as age from tblNhanVien
select *from TuoiTBCuaNV_VIEW

V. XÂY DỰNG CÁC PROCEDURE CHO CSDL.

- Tạo các procedure:
--Tạo Proc thêm nhân viên vào bảng tblNhanVien

1
2


Create proc sp_NhanVienInsert
(
@manv Nvarchar(50),
@tennv Nvarchar(255),
@diachi Nvarchar(255),
@sdt varchar(10),
@ngaysinh datetime,
@gioitinh Nvarchar(4)
)
as
begin
insert tblNhanVien
values (@manv,@tennv,@diachi,@sdt,@ngaysinh,@gioitinh)
end

exec sp_NhanVienInsert 'NV008',N'Nguyễn Thị Trúc Anh',N'Hà
Nội',0982154369,'2000-03-18',N'Nữ'
Select *from tblNhanVien

--Tạo Proc update nhân viên
Create proc sp_SuaNhanVien
(
@manv Nvarchar(50),
@tennv Nvarchar(255),
@diachi Nvarchar(255),
@sdt varchar(10),
@ngaysinh datetime,
@gioitinh Nvarchar(4)
)
as
begin
if exists (Select MaNV from tblNhanVien where MaNV =@manv)
begin
Update tblNhanVien
Set MaNV= @manv,
TenNV= @tennv,
DiaChi= @diachi,
SDT= @sdt,
NgaySinh= @ngaysinh,
GioiTinh= @gioitinh
Where MaNV = @manv
print N'Đã cập nhật thành công thông tin của nhân viên: '
+ @manv return 1
end
else

print N'Không tồn tại mã nhân viên: ' +
@manv return 0

1
3


end
exec sp_SuaNhanVien 'NV006',N'Đặng Thị Thanh update', N'Hà
Nội','','2000-05-13',N'Nữ';
select *from tblNhanVien

--Tạo Proc Xóa nhân viên khỏi bảng
tblNhanVien CREATE PROC
sp_NhanVienDelete @manv Nvarchar(50)
AS
DELETE tblNhanVien Where MaNV=@manv
exec sp_NhanVienDelete NV008
Select *from tblNhanVien

--Tạo Proc đếm số hóa đơn có tổng giá tiền => 300000
CREATE PROC sp_GetHoaDon(@tongtien FLOAT = 300000, @HoaDon_COUNT INT OUTPUT)
AS
BEGIN
SELECT * FROM tblHoaDon WHERE TongTien >= @tongtien SELECT @HoaDon_COUNT =
@@ROWCOUNT; END;
declare @demHD INT;
exec sp_GetHoaDon
@tongtien = 300000,
@HoaDon_COUNT = @demHD OUTPUT;


1
4


Select @demHD AS Tong_So_HĐ

Tạo Proc để list ra những hóa đơn nào mà nhân viên đó làm CREATE PROC
sp_HDNhanVienDaLam(@manv NVARCHAR(50))
AS
select MaHD, MaNV
from tblHoaDon
where MaNV = @manv

exec sp_HDNhanVienDaLam NV002

VI. XÂY DỰNG CÁC TRIGGER C.
-

Tạo trigger

Tạo trigger thêm dữ liệu trong bảng chi tiết hóa đơn. create trigger
tg_AddToBillInfo
on tblCTHoaDon
for insert

as

Update tblThuoc
set tblThuoc.SoLuong = tblThuoc.SoLuong inserted.SoLuong from tblThuoc inner join inserted

on tblThuoc.MaThuoc = inserted.MaThuoc

Select * from tblThuoc
INSERT INTO tblCTHoaDon (MaCTHD, MaHD, MaThuoc, SoLuong, ThanhTien, TongThanhTien)

VALUES ('CTHD006','HD004','T001', 7, 10000, 70000);
Select * from tblCTHoaDon
Select * from tblThuoc

1
5



×