báo cáo bài tập lớn hệ quản trị cơ sở dữ liệu đề tài quản lý thư viện

63 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo bài tập lớn hệ quản trị cơ sở dữ liệu đề tài quản lý thư viện

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Con trỏ lấy tên sách và tên tác giả của các sách trong thể loại ''''cong nghe-kinh te''''.. Thủ tục lấy danh sách các sách đã được mượn bởi 1 độc giả với mã độc giả được nhập từ bàn phím2.2.6.

Trang 1

TRƯỜNG ĐẠI HỌC THỦY LỢIKHOA CÔNG NGHỆ THÔNG TIN

-🙞🙜🕮🙞🙜 -BÁO CÁO BÀI TẬP LỚN Môn học: Hệ quản trị cơ sở dữ liệu

Đề tài: Quản lý thư viện

Giáo viên hướng dẫn: Nguyễn Quỳnh ChâuNhóm sinh viên thực hiện: Nhóm 12

Thành viên nhóm: Nguyễn Xuân Tùng Anh - 2151173747Vũ Văn Chính - 2151173753Ngô Anh Quý - 2151173817Nguyễn Văn Mạnh - 2151173797

Hà Nội, ngày 20 tháng 01 năm 2024

Trang 2

MỤC LỤC

LỜI NÓI ĐẦU 4

BẢNG PHÂN CHIA NHIỆM VỤ 5

PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU 7

1.1 Cơ sở dữ liệu 7

1.1.1 Giới thiệu chung 7

1.1.2 Yêu cầu chung 7

1.1.3 Phương pháp giải quyết bài toán 7

1.2 Mô hình quan hệ (Diagram) 8

2.1.1 Con trỏ in ra thông tin của sách theo tên sách tác giả thể loại 10

2.1.2 Con trỏ xem chi tiết độc giả và tên sách đã mượn 10

2.1.3 Con trỏ hiển thị tên độc giả, số điện thoai và số lần mượn sách 12

2.1.4 Con trỏ hiển thị tên độc giả, số điện thoai và tổng số tiền cọc 13

2.1.5 Con trỏ hiển thị tên thủ thư, số điện thoại thủ thư và số lần cho mượn sách 14

2.1.6 Con trỏ hiển thị tên thủ thư, tuổi, địa chỉ và số điện thoại của thủ thư 16

2.1.7 Con trỏ lấy tên đầu tiên của tác giả 17

2.1.8 Con trỏ lấy tên sách và tên tác giả của các sách trong thể loại 'cong nghe-kinh te' .182.2 Thủ tục (Proc) 19

2.2.1 Thủ tục thêm phiếu mượn sách mới 19

2.2.2 Thủ tục xóa phiếu mượn sách và chi tiết phiếu mượn 21

2.2.3 Thủ tục tính tuổi hiện tại của một độc giả bất kỳ với tên độc giả được nhập từ bàn phím 23

2.2.4 Thủ tục hiển thị tổng số lượng sách đã mượn với tên sách được nhập từ bàn phím 24

2.2.5 Thủ tục lấy danh sách các sách đã được mượn bởi 1 độc giả với mã độc giả được nhậptừ bàn phím 25

2.2.6 Thủ tục tính tổng tiền sách 1 độc giả đã mượn với mã độc giả nhập từ bàn phím 26

2.2.7 Thủ tục lấy danh sách các độc giả có số điện thoại kết thúc bằng '1234' 27

2.2.8 Thủ tục lấy tổng số lượng sách trong bảng SACH 27

2.3 Hàm (Function) 28

2.3.1 Hàm xem tổng số lượng sách theo từng thể loại 28

2.3.2 Hàm in ra danh sách sách đã mượn của độc giả 29

2.3.3 Hàm xem tổng số lượng sách theo mã nhà xuất bản 30

Trang 3

2.3.4 Hàm xem chi tiết các sách theo mã nhà xuất bản 30

2.3.5 Hàm trả về thông tin cuốn sách được mượn nhiều nhất 31

2.3.6 Hàm trả về thông tin độc giả bao gồm mã độc giả, tên, ngày sinh, địa chỉ, số điện thoại đã thực hiện trả sách trong tháng 2 năm 2024 32

2.3.7 Hàm tính số lượng sách theo thể loại 32

2.3.8 Hàm tính tổng tiền cọc của độc giả 33

2.4 Khung nhìn (View) 34

2.4.1 View xem số lượng sách còn lại 34

2.4.2 View xem chi tiết thông tin phiếu mượn 35

2.4.3 View xem các sách ở tủ sách A 37

2.4.4 View với mã tác giả, tên tác giả, tên tác phẩm, thể loại mà tác giả có quê quán ở Hải Phòng 38

2.4.5 View hiển thị thông tin những độc giả dưới 25 tuổi 39

2.4.6 View hiển thị độc giả và thể loại sách đã mượn 39

2.4.7 View hiển thị sách của mỗi tác giả 40

2.4.8 View hiển thị độc giả và số cuốn sách đã mượn 41

2.5 Trigger 41

2.5.1 Trigger tự động cập nhật sách khi thêm phiếu mượn 42

2.5.2 Trigger tự động cập nhật sách khi xóa phiếu mượn 44

2.5.3 Trigger khi thêm một sách thì thông báo thêm thành công 46

2.5.4 Trigger khi sửa một độc giả thì thông báo sửa thành công 48

2.5.5 Trigger tự động xóa tác giả khi xóa mã tác giả từ bàn phím 48

2.5.6 Trigger kiểm tra thủ thư đã tồn tại chưa 50

2.5.7 Trigger cập nhật số điện thoại của tác giả 51

2.5.8 Trigger xóa tác giả 52

2.6 Phân quyền cho user 52

2.6.1 Cấp quyền cho một user (TungAnh176) 52

2.6.2 Cấp quyền cho một user (CHINH0705) 54

2.6.3 Cấp quyền cho một user (QUY0211) 55

2.6.4 Cấp quyền cho một user (MANH69) 56

2.7 Isolation level cho transanction 57

2.7.1 Read Uncommitted (Chưa cô lập đọc) 57

2.7.2 Read Committed (Đã cô lập đọc) 58

2.7.3 Repeatable Read (Lặp lại đọc) 60

2.7.4 Serializable (Khóa toàn bộ) 61

PHẦN 3: KẾT LUẬN 63

3

Trang 4

LỜI NÓI ĐẦU

Có thể nói, công nghệ thông tin là một phát minh hiện đại đạt đến đỉnh cao của thế giớiloài người Những thành tựu ấy đã góp phần to lớn trong việc xây dựng, nâng cao đời sống xã hội, đưa con người đến với thời đại của công nghệ.

Đặc biệt công nghệ số phát triển mạnh mẽ, nó tác động rất lớn tới các doanh nghiệp Doanh nghiệp cần phải chủ động, thay đổi cách thức quản lý, lãnh đạo cũng như trong hoạt động sản xuất để đạt được những lợi ích tốt nhất Thời đại công nghệ số ra đời, nó cũng là một trong những thách thức lớn đối với doanh nghiệp, nếu doanh nghiệp đưa ra được những hướng giải quyết, thay đổi sẽ giúp biến thách thức thành cơ hội, từ đó, doanhnghiệp sẽ không ngừng phát triển và vươn xa mạnh mẽ

Doanh nghiệp cần phải có quá trình thay đổi từ cách thức quản lý, điều hành, quá trình sản xuất, từ phương pháp truyền thống sang phương thức ứng dụng công nghệ thông tin vào trong quản lý, quy trình sản xuất một cách toàn diện Ứng dụng quy trình số hóa vào doanh nghiệp, giúp quá trình quản lý tài liệu, hồ sơ được dễ dàng và bảo mật, hay còn gọiví von là “văn phòng không giấy”.

Chính vì vậy, nhóm em lựa chọn đề tài “Xây dựng cơ sở quản lý thư viện” với mục đích tìm hiểu rõ về quy mô, lĩnh vực quản lý Song nhằm giúp hệ thống hóa, quản lý thông tin, tài liệu một cách tự động, tối ưu nhất trên máy tính đáp ứng đúng, đủ nhu cầu của người sử dụng.

Trang 5

BẢNG PHÂN CHIA NHIỆM VỤ.

Nguyễn XuânTùng Anh

2.1.1 Con trỏ in ra thông tin của sách theo tên sách tác giả thể loại

2.1.2 Con trỏ xem chi tiết đọc giả và tên sách đã mượn2.2.1 Thủ tục thêm phiếu mượn sách mới

2.2.2 Thủ tục xóa phiếu mượn sách và chi tiết phiếu mượn2.3.1 Hàm xem tổng số lượng sách theo từng thể loại2.3.2 Hàm in ra danh sách sách đã mượn của độc giả2.4.1 View xem số lượng sách còn lại

2.4.2 View xem chi tiết thông tin phiếu mượn

2.5.1 Trigger tự động cập nhật sách khi thêm phiếu mượn2.5.2 Trigger tự động cập nhật sách khi xóa phiếu mượn2.6.1 Cấp quyền cho một user (TungAnh176)

2.7.1 Read Uncommitted (Chưa cô lập đọc)Vũ Văn

2.4.4 View với mã tác, giả tên tác giả, tên tác phẩm, thể loại mà tác giả có quê ở Hải Phòng

2.5.3 Trigger kiểm tra sách đã tồn tại chưa.

2.5.4 Trigger khi sửa một độc giả thì thông báo sửa thành công

2.6.2 Cấp quyền cho một user (CHINH0705)2.7.2 Read Committed (Đã cô lập đọc)

Ngô Anh Quý 2.1.5 Con trỏ hiển thị tên thủ thư, số điện thoại thủ thư và số lần cho mượn sách

2.1.6 Con trỏ hiển thị tên thủ thư, tuổi, địa chỉ và số điện thoạicủa thủ thư

2.2.5 Thủ tục lấy danh sách các sách đã được mượn bởi 1 độc giả với mã độc giả được nhập từ bàn phím

2.2.6 Thủ tục tính tổng tiền sách 1 độc giả đã mượn với mã độc giả nhập từ bàn phím

2.3.5 Hàm trả về thông tin cuốn sách được mượn nhiều nhất2.3.6 Hàm trả về thông tin độc giả bao gồm mã độc giả, tên,

5

Trang 6

ngày sinh, địa chỉ, số điện thoại đã thực hiện trả sách trong tháng 2 năm 2024

2.4.5 View hiển thị thông tin những độc giả dưới 25 tuổi2.4.6 View hiển thị độc giả và thể loại sách đã mượn2.5.5 Trigger tự động xóa tác giả khi xóa mã tác giả từ bàn phím

2.5.6 Trigger kiểm tra thủ thư đã tồn tại chưa2.6.3 Cấp quyền cho một user (QUY0211)2.7.3 Repeatable Read (Lặp lại đọc)Nguyễn Văn

Mạnh 2.1.7 Con trỏ lấy tên đầu tiên của tác giả 2.1.8 Con trỏ lấy tên sách và tên tác giả của các sách trong thểloại 'cong nghe-kinh te'

2.2.7 Thủ tục lấy danh sách các độc giả có số điện thoại kết thúc bằng '1234'

2.2.8 Thủ tục lấy tổng số lượng sách trong bảng SACH 2.3.7 Hàm tính số lượng sách theo thể loại

2.3.8 Hàm tính tổng tiền cọc của độc giả 2.4.7 View hiển thị sách của mỗi tác giả

2.4.8 View hiển thị độc giả và số cuốn sách đã mượn 2.5.7 Trigger cập nhật số điện thoại của tác giả2.5.8 Trigger xóa tác giả

2.6.4 Cấp quyền cho một user (MANH69)2.7.4 Serializable (Khóa toàn bộ)

Trang 7

PHẦN 1: THIẾT KẾ CƠ SỞ DỮ LIỆU1.1 Cơ sở dữ liệu

1.1.1 Giới thiệu chung

Thư viện cần xây dựng một cơ sở dữ liệu để quản lý việc mượn và quản lý sách trong thư viện Hệ thống cần ghi nhận các hoạt động mượn/trả sách và quản lý việc thanhtoán với độc giả Ngoài ra, cơ sở dữ liệu cũng có người thủ thư nắm bắt được tình hình mượn và quản lý sách Đồng thời, hệ thống cũng giúp thủ thư nắm bắt được sách trong thư viện, kiểm kê sách trong thư viện cũng như việc thanh toán, lập phiếu mượn cho độc giả.

1.1.2 Yêu cầu chung

Yêu cầu của cơ sở dữ liệu quản lý thư viện:

Hệ thống quản lý thư viện rất quan trọng trong việc lưu trữ dữ liệu thông tin độc giả mượn sách Dữ liệu độc giả thuê và mượn sách không thể bị nhầm lẫn không sẽ dẫn đến hậu quả nghiêm trọng như phải đền tiền sách Chính vì vậy, hệ thống sẽ có phân quyền riêng cho từng đối tượng sử dụng đối với một số chức năng nào đó trong hệ thống Xây dựng và Quản lý Phần mềm Thư Viện Quản lý sẽ có các đối tượng sử dụng sau: Ban quản lý được toàn quyền sử dụng các chức năng của hệ thống; thủ thư sẽ quản lý thông tin sách (trả sách, mượn sách, thuê sách)

- Yêu cầu về chương trình:+ Đảm bảo tính bảo mật của dữ liệu

+ Hỗ trợ người cập nhật sửa đổi, tìm kiếm thông tin… thông qua các form và tính toán các thông số

+ Quản lý các phiếu mượn.+ Lưu trữ thông tin.

1.1.3 Phương pháp giải quyết bài toán

7

Trang 8

Đọc, tìm tài liệu trên word, internetTrao đổi với giáo viên hướng dẫn

Sử dụng các công cụ: SQL Server, Chat GPT1.2 Mô hình quan hệ (Diagram)

THỰC THỂ "SACH" (Sách):MASACH (Mã sách), TENSACH (Tên sách), MATL (Mã thể loại) - Khóa ngoại, MANXB (Mã nhà xuất bản) - Khóa ngoại, MATG (Mã tác giả) - Khóa ngoại, TUSACH (Tủ sách), NGANSACH (Ngăn sách), SOLUONG (Số lượng), GIATHUE (Giá thuê),

THỰC THỂ "PHIEUMUONSACH" (Phiếu mượn sách):MAPM (Mã phiếu mượn sách), MADG (Mã độc giả) - Khóa ngoại, MATT (Mã thủ thư) - Khóa ngoại, NGAYMUON (Ngày mượn), NGAYTRA (Ngày trả), TIENCOC (Tiền cọc)

THỰC THỂ "CHITIETPM" (Chi tiết phiếu mượn):MAPM (Mã phiếu mượn sách) - Khóa ngoại, MASACH (Mã sách) - Khóa ngoại, SOLUONG (Số lượng)

1.2.2 Mô hình E-R

Trang 9

1.2.3 Mô hình quan hệ

PHẦN 2 THỰC NGHIỆM2.1 Con trỏ (Cursor)

9

Trang 10

2.1.1 Con trỏ in ra thông tin của sách theo tên sách tác giả thể loạia Câu lệnh

DECLARE @ten_sach NVARCHAR(100);DECLARE @ten_tac_gia NVARCHAR(100);DECLARE @ten_the_loai NVARCHAR(100);DECLARE book_info_cursor CURSOR FOR

SELECT SACH.TENSACH, TACGIA.TENTG, THELOAI.TENTL FROM SACH

INNER JOIN TACGIA ON SACH MATG TACGIA = MATG INNER JOIN THELOAI ON SACH MATL THELOAI = MATL;OPEN book_info_cursor;

FETCH NEXT FROM book_info_cursor INTO @ten_sach, @ten_tac_gia ,@ten_the_loai;

WHILE @@FETCH_STATUS 0=BEGIN

PRINTN'Tên Sách: ' @ten_sach + +N', Tác Giả: ' @ten_tac_gia + +N', Thể Loại: ' @ten_the_loai+ ;

FETCH NEXT FROM book_info_cursor INTO @ten_sach @ten_tac_gia , ,@ten_the_loai;

CLOSE book_info_cursor;DEALLOCATE book_info_cursor;b.Kết quả

2.1.2 Con trỏ xem chi tiết độc giả và tên sách đã mượn

Trang 11

a Câu lệnh

DECLARE @ten_doc_gia NVARCHAR(100);DECLARE @ten_sach_muon NVARCHAR(100);DECLARE doc_gia_sach_muon_cursor CURSOR FOR SELECT DOCGIA.TENDG, SACH.TENSACH FROM DOCGIA

INNER JOIN PHIEUMUONSACH ON DOCGIA MADG =PHIEUMUONSACH MADG.

INNER JOIN CHITIETPM ON PHIEUMUONSACH MAPM =CHITIETPM MAPM.

INNER JOIN SACH ON CHITIETPM MASACH SACH = MASACH;OPEN doc_gia_sach_muon_cursor;

FETCH NEXT FROM doc_gia_sach_muon_cursor INTO @ten_doc_gia,@ten_sach_muon;

WHILE @@FETCH_STATUS 0=BEGIN

PRINTN'Tên Độc Giả: ' @ten_doc_gia + +N', Sách Đã Mượn: ' +@ten_sach_muon;

FETCH NEXT FROM doc_gia_sach_muon_cursor INTO@ten_doc_gia, @ten_sach_muon;

CLOSE doc_gia_sach_muon_cursor;DEALLOCATE doc_gia_sach_muon_cursor;b Kết quả

11

Trang 12

2.1.3 Con trỏ hiển thị tên độc giả, số điện thoai và số lần mượn sácha Câu lênh

DECLARE DOCGIA_SOLANMUON CURSOR FOR SELECT DOCGIA.TENDG, DOCGIA.SODT,

COUNT(PHIEUMUONSACH.MAPM) AS SOLANMUON FROM DOCGIA

Trang 13

LEFTJOIN PHIEUMUONSACH ON DOCGIA MADG =PHIEUMUONSACH MADG.

GROUP BY DOCGIA.TENDG, DOCGIA.SODT; Khai báo biến để lưu trữ dữ liệu từ con trỏ

DECLARE @TENDG NVARCHAR(100 @SODT ), NVARCHAR(100 ),@SOLANMUON INT;

Mở con trỏ

OPEN DOCGIA_SOLANMUON; Lấy dữ liệu từ con trỏ và hiển thị

FETCH NEXT FROM DOCGIA_SOLANMUON INTO @TENDG, @SODT,@SOLANMUON;

WHILE @@FETCH_STATUS= 0BEGIN

PRINT N'Tên độc giả: ' @TENDG + +N', Số điện thoại: ' @SODT + +N', Số lần mượn sách: ' +CAST(@SOLANMUON AS NVARCHAR(10));

FETCH NEXT FROM DOCGIA_SOLANMUON INTO @TENDG @SODT , ,@SOLANMUON;

END Đóng con trỏ

CLOSE DOCGIA_SOLANMUON;DEALLOCATE DOCGIA_SOLANMUON;b Kết quả

2.1.4 Con trỏ hiển thị tên độc giả, số điện thoai và tổng số tiền cọca Câu lênh

Tạo con trỏ

DECLARE DOCGIA_TONGTIENCOC CURSOR FOR13

Trang 14

SELECT DOCGIA.TENDG, DOCGIA.SODT,SUM(CHITIETPM.SOLUONG *SACH GIATHUE ) AS TONGTIENCOC

FROM DOCGIA

JOIN PHIEUMUONSACH ON DOCGIA MADG PHIEUMUONSACH = MADG JOIN CHITIETPM ON PHIEUMUONSACH MAPM CHITIETPM = MAPM JOIN SACH ON CHITIETPM MASACH SACH = MASACH

GROUP BY DOCGIA.TENDG, DOCGIA.SODT; Khai báo biến để lưu trữ dữ liệu từ con trỏ

DECLARE @TENDG NVARCHAR(100 @SODT ), NVARCHAR(100 ),@TONGTIENCOC MONEY;

Mở con trỏ

OPEN DOCGIA_TONGTIENCOC; Lấy dữ liệu từ con trỏ và hiển thị

FETCH NEXT FROM DOCGIA_TONGTIENCOC INTO @TENDG, @SODT,@TONGTIENCOC;

WHILE @@FETCH_STATUS= 0BEGIN

PRINT N'Tên độc giả: ' @TENDG + +N', Số điện thoại: ' @SODT + +N', Tổng tiền cọc: '+CAST(@TONGTIENCOC AS NVARCHAR( ));20

FETCH NEXT FROM DOCGIA_TONGTIENCOC INTO @TENDG @SODT , ,@TONGTIENCOC;

END Đóng con trỏ

CLOSE DOCGIA_TONGTIENCOC;DEALLOCATE DOCGIA_TONGTIENCOC;b Kết quả

2.1.5 Con trỏ hiển thị tên thủ thư, số điện thoại thủ thư và số lần cho

Trang 15

mượn sácha Câu lênh Khai báo các biến

DECLARE @TenThuThu NVARCHAR(100);DECLARE @SoDienThoai NVARCHAR(100);DECLARE @SoLanMuon INT;

Khai báo con trỏ

DECLARE thuthu_cursor CURSOR FORSELECT TENTT, SODT

FROM THUTHU; Mở con trỏOPEN thuthu_cursor;

Lặp qua từng dòng dữ liệu của con trỏ

FETCH NEXT FROM thuthu_cursor INTO @TenThuThu @SoDienThoai, ;WHILE @@FETCH_STATUS= 0

Tính số lần cho mượn sách SELECT @SoLanMuon =COUNT(*) FROM PHIEUMUONSACH

INNER JOIN THUTHU

ON THUTHU.MATT = PHIEUMUONSACH.MATT WHERE TENTT @TenThuThu= ;

Hiển thị thông tin

PRINT N'Tên Thủ Thư: ' @TenThuThu+ ; PRINT N'Số Điện Thoại: '+ @SoDienThoai;

PRINT N'Số Lần Cho Mượn Sách: ' +CAST(@SoLanMuon AS NVARCHAR( ));10 PRINT ' -';

Lấy dòng tiếp theo của con trỏ

FETCH NEXT FROM thuthu_cursor INTO @TenThuThu @SoDienThoai, ;END

Đóng con trỏCLOSE thuthu_cursor;DEALLOCATE thuthu_cursor;b Kết quả

15

Trang 16

2.1.6 Con trỏ hiển thị tên thủ thư, tuổi, địa chỉ và số điện thoại của thủ thư

a Câu lênh Khai báo các biến

DECLARE @TenThuThu NVARCHAR(100);DECLARE @Tuoi INT;

DECLARE @DiaChi NVARCHAR(100);DECLARE @SoDienThoai NVARCHAR(100); Khai báo con trỏ

DECLARE thongtin_thuthu_cursor CURSOR FOR

SELECT TENTT,DATEDIFF(YEAR, NGAYSINH ,GETDATE())AS Tuoi DIACHI , ,SODT

FROM THUTHU; Mở con trỏ

OPEN thongtin_thuthu_cursor; Lặp qua từng dòng dữ liệu của con trỏ

FETCH NEXT FROM thongtin_thuthu_cursor INTO @TenThuThu @Tuoi, , @DiaChi,@SoDienThoai;

WHILE @@FETCH_STATUS= 0BEGIN

Hiển thị thông tin

PRINT N'Tên Thủ Thư: ' @TenThuThu+ ;

PRINT N'Tuổi: ' +CAST(@Tuoi AS NVARCHAR(10));

Trang 17

PRINT N'Địa Chỉ: '+ @DiaChi;

PRINT N'Số Điện Thoại: '+ @SoDienThoai; PRINT ' -'; Lấy dòng tiếp theo của con trỏ

FETCH NEXT FROM thongtin_thuthu_cursor INTO @TenThuThu @Tuoi , ,@DiaChi, @SoDienThoai;

END Đóng con trỏ

CLOSE thongtin_thuthu_cursor;DEALLOCATE thongtin_thuthu_cursor;b Kết quả

2.1.7 Con trỏ lấy tên đầu tiên của tác giả a Câu lênh

DECLARE @TENTG NVARCHAR(100);DECLARE authorCursor CURSOR FORSELECT TENTG

FROM TACGIA;OPEN authorCursor;

17

Trang 18

FETCH NEXT FROM authorCursor INTO @TENTG;WHILE @@FETCH_STATUS = 0

PRINT 'Tên tác giả: ' + @TENTG;

FETCH NEXT FROM authorCursor INTO @TENTG;END;

CLOSE authorCursor;DEALLOCATE authorCursor;b Kết quả

2.1.8 Con trỏ lấy tên sách và tên tác giả của các sách trong thể loại 'cong nghe-kinh te'

CLOSE contro2;DEALLOCATE contro2;b Kết quả

Trang 19

@MASACH NVARCHAR(100), @SOLUONG INT

IF NOT EXISTS (SELECT 1 FROM PHIEUMUONSACH WHERE MAPM = @MAPM)

Trang 20

ELSE BEGIN

PRINT N'Mã phiếu mượn đã tồn tại Vui lòng chọn mã phiếu mượn khác.' END

Chạy thủ tục trên

DECLARE @MAPM NVARCHAR(100) = 'PM033'DECLARE @MADG NVARCHAR(100) = N'DG001'DECLARE @MATT NVARCHAR(100) = N'TT001'

DECLARE @NGAYMUON NVARCHAR(100) = '2024-01-18'DECLARE @NGAYTRA NVARCHAR(100) = '2024-01-25'DECLARE @TIENCOC MONEY = 50.00

DECLARE @MASACH NVARCHAR(100) = N'S031'DECLARE @SOLUONG INT = 2

EXEC ThemPhieuMuonSach @MAPM,

@MADG,@MATT,@NGAYMUON,@NGAYTRA,@TIENCOC,@MASACH,@SOLUONGb Kết quả

Trang 21

2.2.2 Thủ tục xóa phiếu mượn sách và chi tiết phiếu mượna Câu lệnh

CREATE PROCEDURE XoaPhieuMuonSach( @MAPM NVARCHAR(100)

IF EXISTS (SELECT 1 FROM PHIEUMUONSACH WHERE MAPM = @MAPM) BEGIN

DELETE FROM CHITIETPM WHERE MAPM = @MAPM DELETE FROM PHIEUMUONSACH WHERE MAPM = @MAPM

21

Trang 22

PRINT N'Phiếu mượn sách đã được xóa thành công!' END

ELSE BEGIN

PRINT N'Không tìm thấy phiếu mượn với mã ' + @MAPM + '.' END

END chạy thủ tục

EXEC XoaPhieuMuonSach N'PM033';b Kết quả

Trang 23

2.2.3 Thủ tục tính tuổi hiện tại của một độc giả bất kỳ với tên độc giả được nhập từ bàn phím.

a Câu lệnh:

CREATE PROCEDURE sp_tinhtuoi_tendg @TENDG NVARCHAR(100)AS

WHERE TENDG @TENDG= ;

Nếu không tìm thấy độc giả, in ra thông báo23

Trang 24

@NGAYSINH IF IS NULL BEGIN

PRINT N'Không tìm thấy độc giả với tên ' @TENDG+ ; END

ELSE BEGIN

Tính tuổi hiện tại DECLARE @TUOI INT;

SET @TUOI =DATEDIFF YEAR( , @NGAYSINH ,GETDATE()); In ra kết quả

PRINT N'Tuổi của độc giả ' @TENDG + +N' là ' +CAST(@TUOI ASNVARCHAR) + N' năm.';

ENDEND; Hiển thị kết quả

EXEC sp_tinhtuoi_tendg @TENDG =N'Nguyễn Văn A';b Kết quả

2.2.4 Thủ tục hiển thị tổng số lượng sách đã mượn với tên sách được nhậptừ bàn phím.

a Câu lệnh:

CREATE PROCEDURE sp_TinhTongSoLuongSachMuon @TenSach NVARCHAR(100)

ASBEGIN

Trang 25

PRINT N'Tổng số lượng sách "' @TenSach + +N'" đã mượn là: ' +CAST ISNULL( (@TongSoLuong, 0) AS NVARCHAR( ));10END;

DECLARE @TenSach NVARCHAR(100)='Sách 1'; Thực hiện thủ tục để hiển thị tổng số lượng sách đã mượn

EXEC sp_TinhTongSoLuongSachMuon @TenSach;b Kết quả

2.2.5 Thủ tục lấy danh sách các sách đã được mượn bởi 1 độc giả với mã độc giả được nhập từ bàn phím

a Câu lệnh:

CREATE PROCEDURE DG_MuonSach @MADG NVARCHAR(100)AS

Lấy thông tin về sách đã được mượn bởi độc giả SELECT

PM MAPM AS MAPM, S MASACH AS MASACH, S TENSACH AS TENSACH, PM NGAYMUON AS NGAYMUON, PM NGAYTRA AS NGAYTRA FROM

PHIEUMUONSACH PM INNERJOIN

CHITIETPM CT ON PM MAPM CT = MAPM INNERJOIN

SACH S ON CT MASACH S = MASACH WHERE

PM MADG @MADG = ;END;

DECLARE @MASACH NVARCHAR(100);25

Trang 26

SET @MASACH ='DG001'; Thay đổi mã độc giả EXEC DG_MuonSach @MADG = @MASACH;b Kết quả

2.2.6 Thủ tục tính tổng tiền sách 1 độc giả đã mượn với mã độc giả nhập từ bàn phím

a Câu lệnh:

CREATE PROCEDURE TongTien @MADG NVARCHAR(100)AS

CHITIETPM CT ON PM MAPM CT = MAPM INNERJOIN

SACH S ON CT MASACH S = MASACH WHERE

PM MADG @MADG = ;END;

DECLARE @MASACH NVARCHAR(100);SET @MASACH ='DG001'; Thay đổi mã độc giả

EXEC TongTien @MADG @MASACH= ;b Kết quả

Trang 27

2.2.7 Thủ tục lấy danh sách các độc giả có số điện thoại kết thúc bằng '1234'

WHERE SODT LIKE '%1234';END;

EXEC thutuc1;b Kết quả

2.2.8 Thủ tục lấy tổng số lượng sách trong bảng SACH a Câu lệnh:

CREATE PROCEDURE thutuc2AS

SELECT SUM(SOLUONG) AS TongSoLuongSach FROM SACH;

END;EXEC thutuc2;b Kết quả

27

Trang 28

DECLARE @SoLuongSach INT

SELECT @SoLuongSach = SUM(SOLUONG) FROM SACH

WHERE MATL = @MATL RETURN @SoLuongSachEND

Chạy hàm in ra số lượng sách

DECLARE @MATL NVARCHAR(100) = N'TL001'DECLARE @SoLuongSach INT

SELECT @SoLuongSach = dbo.SoLuongSach(@MATL)

PRINT N'Số lượng sách theo thể loại ' + @MATL + N' là: ' + CAST(@SoLuongSach ASNVARCHAR(10))

b Kết quả

Trang 29

2.3.2 Hàm in ra danh sách sách đã mượn của độc giảa Câu lệnh

CREATE FUNCTION DanhSachMuonSach (@MADG NVARCHAR(100))RETURNS TABLE

SELECT PM.MAPM, S.MASACH, S.TENSACH, PM.NGAYMUON, PM.NGAYTRA FROM

PHIEUMUONSACH PM JOIN

CHITIETPM CPM ON PM.MAPM = CPM.MAPM JOIN

SACH S ON CPM.MASACH = S.MASACH WHERE

PM.MADG = @MADG)

Chạy hàm in ra danh sách phiếu mượn của độc giảSELECT * FROM dbo.DanhSachMuonSach(N'DG001');b Kết quả

29

Trang 30

2.3.3 Hàm xem tổng số lượng sách theo mã nhà xuất bảna Câu lệnh

CREATE FUNCTION dbo.TongSoLuongSachTheoNXB(@MaNXB NVARCHAR(100))

RETURNS INTAS

DECLARE @TongSoLuong INT;

SELECT @TongSoLuong = SUM(SOLUONG) FROM SACH

WHERE MANXB = @MaNXB;

RETURN ISNULL(@TongSoLuong, 0);END;

SELECT SACH.MASACH, TENSACH, TENTL, TENNXB, SOLUONG, GIATHUE

Trang 31

2.3.5 Hàm trả về thông tin cuốn sách được mượn nhiều nhấta Câu lệnh

CREATE FUNCTION SachMuonNN()RETURNS TABLE

SELECT TOP 1

SACH TENSACH AS'Tên sách', SACH TUSACH AS'Tủ sách', SACH NGANSACH AS'Ngăn sách',

COUNT(CHITIETPM MASACH AS ) 'Số lần mượn' FROM

SACH JOIN

CHITIETPM ON SACH MASACH CHITIETPM = MASACH GROUP BY

SACH.TENSACH, SACH.TUSACH, SACH.NGANSACH ORDER BY

COUNT(CHITIETPM MASACH DESC ));

Sử dụng hàm

SELECT FROM* SachMuonNN();b Kết quả

31

Ngày đăng: 16/05/2024, 16:22

Tài liệu cùng người dùng

Tài liệu liên quan