Untitled
unknown
plain_text
2 months ago
3.3 kB
4
Indexable
use master go create database QLBanHang on primary( name='QLSach_dat', filename='D:\QLSach.mdf', size =20MB, maxsize = 500MB, filegrowth = 10MB ) log on( name='QLSach_log', filename='D:\QLSach.ldf', size =5MB, maxsize = 100MB, filegrowth = 20% ) go use QLSach go create table NHAXUATBAN ( MaNXB nchar(10) not null primary key, TenNXB nvarchar(50) not null, SoLuongXB int ) create table TACGIA ( MaTG nchar(10) not null primary key, TenTG nvarchar(50) not null ) create table SACH ( MaSach nchar(10) not null primary key, TenSach nvarchar(50) not null, NamXB int, SoLuong int, DonGia money, MaTG nchar(10) not null, MaNXB nchar(10) not null ) alter table SACH add constraint fk_SACH_TACGIA foreign key (MaTG) references TACGIA(MaTG) alter table SACH add constraint fk_SACH_NHAXUATBAN foreign key (MaNXB) references NHAXUATBAN(MaNXB) go insert into NHAXUATBAN values('n1',N'NXB Kim Đồng',100) insert into NHAXUATBAN values('n2',N'NXB Trẻ',200) insert into TACGIA values('tg1',N'Nguyễn Nhật Ánh') insert into TACGIA values('tg2',N'Tô Hoài') insert into SACH values('s1',N'Cho tôi xin một vé tuổi thơ',2008,500,45000,'tg1','n1') insert into SACH values('s2',N'Mắt biếc',1990,300,50000,'tg1','n1') insert into SACH values('s3',N'Dế mèn phiêu lưu ký',1941,400,40000,'tg2','n2') insert into SACH values('s4',N'Tôi thấy hoa vàng trên cỏ xanh',2010,600,55000,'tg1','n1') insert into SACH values('s5',N'Ozawa và những ngày mưa',2018,200,50000,'tg2','n2') insert into SACH values('s6',N'Chuyện cổ tích',2001,350,48000,'tg1','n2' create view vw_ThongKeNXB as select NXB.MaNXB,NXB.TenNXB, SUM(S.SoLuong) AS TONG SL XB from NHAXUATBAN NXB inner join SACH S on NXB.MaNXB=S.MaNXB group by NXB.MaNXB,NXB.TenNXB select *from vw_ThongKeNXB CREATE FUNCTION GetSachTheoNam( @tenNXB NVARCHAR(255), @x INT, @y INT ) RETURNS TABLE AS RETURN ( SELECT S.MaSach, S.TenSach, TG.TenTG, S.DonGia FROM SACH S JOIN TACGIA TG ON S.MaTG = TG.MaTG JOIN NHAXUATBAN NXB ON S.MaNXB = NXB.MaNXB WHERE NXB.TenNXB = @tenNXB AND S.NamXB BETWEEN @x AND @y ) -- Tìm sách của "NXB Kim Đồng" xuất bản từ 1990 đến 2010 SELECT * FROM dbo.GetSachTheoNam(N'NXB Kim Đồng', 1990, 2010); -- Tìm sách của "NXB Trẻ" xuất bản từ 2000 đến 2020 SELECT * FROM dbo.GetSachTheoNam(N'NXB Trẻ', 2000, 2020); CREATE PROCEDURE XoaSach @MaSach INT AS BEGIN -- Kiểm tra mã sách có tồn tại không IF EXISTS (SELECT 1 FROM SACH WHERE MaSach = @MaSach) BEGIN -- Nếu tồn tại, tiến hành xóa DELETE FROM SACH WHERE MaSach = @MaSach; PRINT N'Đã xóa sách có mã ' + CAST(@MaSach AS NVARCHAR); END ELSE BEGIN -- Nếu không tồn tại, thông báo lỗi PRINT N'Mã sách không tồn tại. Không thể xóa!'; END END; -- Thử xóa sách có mã 1 EXEC XoaSach @MaSach = 1; -- Thử xóa sách không tồn tại (ví dụ: mã 999) EXEC XoaSach @MaSach = 999; -- Kiểm tra lại bảng SACH sau khi xóa SELECT * FROM SACH;
Editor is loading...
Leave a Comment