Untitled

 avatar
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