Tải bản đầy đủ (.doc) (14 trang)

Bài tập ôn thi SQL

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 (161.73 KB, 14 trang )

Bài Tập
Tuan 3 -Viết View
Tuan 4 -Viết Cursor
Tuan 5 -Viết SP
Tuan 6 -Viết Trigger
Tuan 7-Viết Function
------------------------------------VIEW-------------------
--Tuần 3
câu 1
--Cho biết danh số xuất từng mặt hàng trong 6 tháng đầu năm
create view cau_1
as
select TENMH,sum(DONGIAXUAT*SOLUONGXUAT) as [DOANH THU]
from HOA_DON_XUAT HD,CHI_TIET_XUAT CT,MAT_HANG MH
where HD.SOHDX=CT.SOHDX
and CT.MAMH=MH.MAMH
and year(getdate())=year(NGAYXUAT)
and month(NGAYXUAT)between 1 and 6
group by TENMH
-----------------------------------------------------------
câu 2
--Cho biết mặt hàng có doanh số lớn nhất
create view cau_2
as
select TENMH,sum(DONGIAXUAT*SOLUONGXUAT) as [MAX DOANH
THU]
from MAT_HANG MH,CHI_TIET_XUAT CT
where MH.MAMH=CT.MAMH
group by TENMH
having sum(DONGIAXUAT*SOLUONGXUAT)>=all(select
sum(DONGIAXUAT*SOLUONGXUAT)


from MAT_HANG MH,CHI_TIET_XUAT CT
where MH.MAMH=CT.MAMH
group by TENMH)
----------------------------------------------------------
câu 3
--Cho biết những mặt hàng có doanh thu lớn hơn 1b
create view cau_3
as
select TENMH,sum(DONGIAXUAT*SOLUONGXUAT) as [DOANH THU]
from MAT_HANG MH,CHI_TIET_XUAT CT
where MH.MAMH=CT.MAMH
group by TENMH
having sum(DONGIAXUAT*SOLUONGXUAT)>1000000000
-----------------------------------------------------------
câu 4
--Cho biết đơn giá nhập trung bình của từng mặt hàng
create view cau_4
as
select TENMH,avg(DONGIANHAP) as [ĐƠN GIÁ NHẬP TB]
from MAT_HANG MH,HOA_DON_NHAP HD,CHI_TIET_NHAP CT
where HD.SOHDN=CT.SOHDN
and MH.MAMH=CT.MAMH
group by TENMH
-----------------------------------------------------------
câu 5
--Cho biết thành tiền của từng mặt hàng theo từng hoá đơn và
tổng tiền của từng hoá đơn
-----------------------------------------------------------
câu 6
--Cho biết thông tin nhân viên chưa nhập hàng bao giờ

create view cau_6
as
select *
from NHAN_VIEN
where MANV not in (select MANV
from HOA_DON_NHAP)
-----------------------------------------------------------
câu 7
--Cho biết những mặt hàng nhập chưa bao giờ bán
create view cau_7
as
select *
from MAT_HANG
where MAMH not in (select MAMH
from HOA_DON_NHAP)
---------------------------------------------------------câu
8
--Cho biết những nhà cung cấp cung ứng những mặt hàng giống
nhà cung cấp 1
create view cau_8
as
select TENNCC
from NHA_CUNG_CAP NCC,CHI_TIET_NHAP CT,MAT_HANG MH
where NCC.MANCC=MH.MANCC
and MH.MAMH=CT.MAMH
and MH.MAMH in (select MAMH
from NHA_CUNG_CAP NCC,MAT_HANG
MH
where NCC.MANCC=MH.MANCC
and NCC.MANCC=1)

---------------------------------------------------------
câu 9(hỏi lại)
--Tạo và mã hoá view : cho biết những mặt hàng chưa được
xuất trong năm hiện tại
create view cau_9
with encryption as
select TENMH
from MAT_HANG
where MAMH in (select MH.MAMH
from MAT_HANG MH,HOA_DON_XUAT
HD,CHI_TIET_XUAT CT
where MH.MAMH=CT.MAMH
and HD.SOHDX=CT.SOHDX
and NGAYXUAT=year(getdate()))
câu 10
--Cho biết danh sách mặt hàng thuộc loại 1 có sử dụng WITH
CHECK OPTION. Sau đó chèn thử 1 bảng ghi vào view này
create view cau_10
as
select *
from MAT_HANG
where MAMH=1
with check option
insert into cau_10 values(0,1,N'MẶT HÀNG 1',N'TẤN',N'GOOD')
select * from cau_10
-----------------------------------CURSOR------------------
--Tuần 4
câu 1
--Viết một đoạn lệnh sử dụng con trỏ để hiển thị danh sách
khách hàng. Nếu khách hàng đã mua 10 lần thì thông báo được

-- khuyến mại 100 USD, mua 20 lần khuyến mại 200 USD.
Distinct: bo nhug ket qua trug nhau
--khai báo biến cục bộ
declare @MAKH char(6),@solan tinyint
--khai báo biến cursor
declare cur_khuyenmai cursor
dynamic
for
select distinct MAKH from HOA_DON_XUAT
--mở cursor
open cur_khuyenmai
--đọc dữ liệu
fetch first from cur_khuyenmai into @MAKH
while @@fetch_status=0
begin
select @solan=count(*)
from HOA_DON_XUAT
where @MAKH=MAKH
--print
select * from KHACH_HANG where @MAKH=MAKH
if @solan>=3
print 'Khách hàng: '+@MAKH+'được khuyến mãi
20% vì đã mua: '+cast(@solan as char(3))+'lần'
else
print 'Khách hàng: '+@MAKH+'được khuyến mãi
10% vì đã mua: '+cast(@solan as char(3))+'lần'
fetch next from cur_khuyenmai into @MAKH
end
--đóng cursor
close cur_khuyenmai

deallocate cur_khuyenmai
----------------------------------------------------------
câu 2
--Thêm một thuộc tính trong So_MH_CC kiểu dữ liệu số nguyên
trong bảng NhaCungCap để lưu số lượng mặt hàng mà công ty
-- đó cung cấp. Viết cursor cập nhật cho thuộc tính này
alter table NHA_CUNG_CAP add SO_MH_CC int
declare @MANCC char(6),@SO_MH_CC int
declare cur_SLMH cursor
forward_only
for
select MANCC
from NHA_CUNG_CAP
open cur_SLMH
fetch next from cur_SLMH into @MANCC
while @@fetch_status=0
begin
select SO_MH_CC=sum(SOLUONGNHAP)
from NHA_CUNG_CAP NCC,MAT_HANG MH,CHI_TIET_NHAP CTN
where NCC.MANCC=MH.MANCC
and CTN.MAMH=MH.MAMH
and @MANCC=NCC.MANCC
print 'Đang cập nhật nhà cung cấp:'+@MANCC
update NHA_CUNG_CAP
set SO_MH_CC=@SO_MH_CC
where MANCC=@MANCC
print 'Đang đọc'
fetch next from cur_SLMH into @MANCC
end
close cur_SLMH

deallocate cur_SLMH
-----------------------------------------------------------
câu 3
--Thêm thuộc tính TongMH trong bang HoaDonNhap lưu thông tin
tổng số mặt hàng đã bán trong đơn hàng. Viết cursor cập
--nhật thông tin cho thuộc tính này.
alter table HOA_DON_NHAP add TONGMH int
declare @SOHDN char(6),@TONGMH int
declare cur_TMH cursor
forward_only
for
select distinct MAMH from MAT_HANG
open cur_TMH
fetch next from cur_TMH into @SOHDN
while @@fetch_status=0
begin
select TONGMH=sum(SOLUONGNHAP)
from MAT_HANG MH,CHI_TIET_NHAP CTN,HOA_DON_NHAP HDN
where MH.MAMH=CTN.MAMH
and HDN.SOHDN=CTN.SOHDN
and @SOHDN=HDN.SOHDN
print 'Dang cap nhat MAMH:'+@SOHDN
update HOA_DON_NHAP
set TONGMH=@TONGMH
where SOHDN=@SOHDN
fetch next from cur_TMH into @SOHDN
end
close cur_TMH
deallocate cur_TMH

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×