Untitled
unknown
plain_text
10 months ago
3.3 kB
7
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