Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 1
create database QLNXTONKHO
on primary
(
name=QLNXTONKHO_DATA,
filename='D:\QLNXTONKHO_DATA.MDF',
size=50MB,
maxsize=200MB,
filegrowth=10MB
)
log on
(
name=QLNXTONKHO_LOG,
filename='D:\QLNXTONKHO_LOG.LDF',
size=10MB,
maxsize=unlimited,
filegrowth=5MB
)
use QLNXTONKHO
create table VATTU
(
Mavtu char(4) not null,
Tenvtu nvarchar(50),
Dvitinh nvarchar(10),
Phantram real
)
create table NHACC
(
Manhacc char(4) not null,
Tenncc nvarchar(50),
Diachi nvarchar(50),
Dienthoai char(15)
)
create table DONDH
(
Sodh char(4) not null,
Ngaydh datetime,
Manhacc char(4) not null
)
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 2
create table CTDONDH
(
Sodh char(4) not null,
Mavtu char(4) not null,
Sldat int
)
create table PNHAP
(
Sopn char(4) not null,
Ngaynhap datetime,
Sodh char(4) not null
)
create table CTPNHAP
(
Sopn char(4) not null,
Mavtu char(4) not null,
Slnhap int,
Dgnhap money
)
create table PXUAT
(
Sopx char(4) not null,
Ngayxuat datetime,
Tenkh nvarchar(100)
)
create table CTPXUAT
(
Sopx char(4) not null,
Mavtu char(4) not null,
Slxuat int,
Dgxuat money
)
create table TONKHO
(
Namthang char(6) not null,
Mavtu char(4) not null,
Sldau int,
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 3
Tongslnhap int,
Tongslxuat int,
Slcuoi int
)
To ràng buc khóa chính, khóa ngoi
alter table VATTU
add constraint PK_VT primary key(Mavtu)
alter table NHACC
add constraint PK_NCC primary key(Manhacc)
alter table DONDH
add
constraint PK_DDH primary key(Sodh),
constraint FK_DDH_MANCC foreign key(Manhacc) references
NHACC(Manhacc)
alter table CTDONDH
add
constraint PK_CTDH primary key(Sodh,Mavtu),
constraint FK_CTDH_SODH foreign key(Sodh) references DONDH(Sodh),
constraint FK_CTDH_MAVT foreign key(Mavtu) references VATTU(Mavtu)
alter table PNHAP
add
constraint PK_PNHAP primary key(Sopn),
constraint FK_PNHAP_Sodh foreign key(Sodh) references DONDH(Sodh)
alter table CTPNHAP
add
constraint PK_CTPNHAP primary key(Sopn,Mavtu),
constraint FK_CTPNHAP_SOPN foreign key(Sopn) references
PNHAP(Sopn),
constraint FK_CTPNHAP_MAVT foreign key(Mavtu) references
VATTU(Mavtu)
alter table PXUAT
add constraint PK_PXUAT primary key(Sopx)
alter table CTPXUAT
add
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 4
constraint PK_CTPXUAT primary key(Sopx,Mavtu),
constraint FK_CTPXUAT_SOPX foreign key(Sopx) references
PXUAT(Sopx),
constraint FK_CTPXUAT_MAVT foreign key(Mavtu) references
VATTU(Mavtu)
alter table TONKHO
add
constraint PK_TONKHO primary key(Namthang,Mavtu),
constraint FK_TONKHO_MAVT foreign key(Mavtu) references
VATTU(Mavtu)
To ràng buc
alter table VATTU
add
constraint UN_VT unique(Tenvtu),
constraint DF_VT_DVT default N'Cái' for dvitinh,
constraint CHK_VT_PT check(PhanTram between 0 and 100)
alter table NHACC
add
constraint UN_NCC_TENNCC unique(Tenncc),
constraint UN_NCC_DC unique(Diachi),
constraint DF_NCC_DT default N'Cha có' for Dienthoai
alter table CTDONDH
add constraint CHK_CTDH check(Sldat>0)
alter table CTPNHAP
add
constraint CHK_CTPN_SLN check(Slnhap>0),
constraint CHK_CTPN_DGN check(Dgnhap>0)
alter table CTPXUAT
add
constraint CHK_CTPX_SLX check(Slxuat>0),
constraint CHK_CTPX_DGX check(Dgxuat>0)
alter table TONKHO
add
constraint CHK_TONKHO_SLD check(Sldau>=0),
constraint CHK_TONKHO_TSLN check(Tongslnhap>=0),
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 5
constraint CHK_TONKHO_TSLX check(Tongslxuat>=0),
constraint DF_TONKHO_SLD default 0 for Sldau,
constraint DF_TONKHO_TSLN default 0 for Tongslnhap,
constraint DF_TONKHO_TSLX default 0 for Tongslxuat
Chèn d liu
insert into VATTU values('BU01',N'Bàn i Philip A',N'Cái',17)
insert into VATTU values('BU02',N'Bàn i Philip B',N'Cái',17)
insert into VATTU values('BU03',N'Bàn i Philip C',N'Cái',17)
',40)
',40)
u Karaoke',N'B',30)
u Karaoke 6 s',N'B',30)
i IK-2002',N'B',NULL)
insert into VATTU values('TL15',N'T lnh Sanyo 150 lít',N'Cái',25)
insert into VATTU values('TL90',N'T lnh Sanyo 90 lít',N'Cái',20)
insert into VATTU values('TV14',N'Tivi Sony 14 inches',N'Cái',15)
insert into VATTU values('TV21',N'Tivi Sony 21 inches',N'Cái',10)
insert into VATTU values('TV29',N'Tivi Sony 29 inches',N'Cái',10)
insert into VATTU values('TV35',N'Tivi Sony 35 inches',N'Cái',100)
insert into VATTU values('TV40',N'Tivi Sony 40 inches',N'Cái',100)
insert into VATTU values('TV50',N'Tivi Sony 50 inches',N'Cái',37)
insert into VATTU values('TV51',N'Tivi Sony 51 inches',N'cái',37)
insert into VATTU values('TV53',N'Tivi Sony 53 inches',N'Cái',80)
',30)
',15)
THEM GIA TRI VAO BANG NHACC
insert into NHACC Values('C01',N'Lê Minh Trí',N'54,Hu
Giang,Q6,HCM',8781024)
insert into NHACC Values('C02',N'Trn Minh Thch',N'145,Hùng Vng, M
Tho',7698154)
insert into NHACC Values('C03',N'Hùng Phng',N'154/85, Lê Lai,
Q1,HCM',9600125)
insert into NHACC Values('C04',N'Nhã Thng',N'198/40,Hng L
14,QTB,HCM',8757757)
insert into NHACC Values('C05',N'Luu Nguyt Qu',N'178, Nguy
Ðà Lt',796451)
insert into NHACC Values('C07',N'Cao Minh Trung',N'125,Lê Quang
Trung',default)
THEM GIA TRI VAO BANG DONDH
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 6
insert into DONDH Values('D002','2/1/2002','C01')
insert into DonDH Values('D003','2/10/2006','C02')
insert into DONDH Values('D004','2/17/2006','C05')
insert into DONDH Values('D005','3/1/2006','C02')
insert into DONDH Values('D001', '7/1/2006','C04')
THEM GIA TRI VAO BANG CTDONDH
insert into CTDONDH Values('D001','DD01',20)
insert into CTDONDH Values('D001','DD02',15)
insert into CTDONDH Values('D002','VD02',30)
insert into CTDONDH Values('D001','TV14',30)
insert into CTDONDH Values('D003','TV14',10)
insert into CTDONDH Values('D003','TV29',20)
insert into CTDONDH Values('D004','TL90',10)
insert into CTDONDH Values('D005','TV14',10)
insert into CTDONDH Values('D005','TV29',20)
THEM GIA TRI VAO BANG PNHAP
insert into PNHAP Values('N001','1/17/2006','D001')
insert into PNHAP Values('N002','1/20/2006','D004')
insert into PNHAP Values('N003','1/31/2006','D002')
insert into PNHAP Values('N004','2/15/2006','D003')
insert into PNHAP Values('N005','2/15/2007','D003')
insert into PNHAP Values('N006','2/28/2007','D005')
THEM GIA TRI VAO BANG CTPNHAP
insert into CTPNHAP Values('N001','DD01',8,2500000)
insert into CTPNHAP Values('N001','DD02',10,3500000)
insert into CTPNHAP Values('N002','DD02',5,3500000)
insert into CTPNHAP Values('N003','VD02',30,2500000)
insert into CTPNHAP Values('N004','TV14',5,2500000)
insert into CTPNHAP Values('N004','TV29',2,3500000)
insert into CTPNHAP Values('N006','DD01',190,200000)
insert into CTPNHAP Values('N006','TV29',2,200000)
THEM GIA TRI VAO BANG PXUAT
insert into PXuat Values('X001','1/17/2006',N'Nguyn Th Phng Nhi')
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 7
insert into PXuat Values('X002','1/25/2006',N'Nguyn Hùng Phng')
insert into PXuat Values('X003','1/31/2006',N'Nguyn Tun Tú')
THEM GIA TRI VAO BANG CTPXUAT
insert into CTPXUAT Values('X001','DD01',2,3500000)
insert into CTPXUAT Values('X002','DD01',2,3500000)
insert into CTPXUAT Values('X002','DD02',5,4900000)
insert into CTPXUAT Values('X003','DD01',3,3500000)
insert into CTPXUAT Values('X003','DD02',2,4900000)
insert into CTPXUAT Values('X003','VD02',10,3250000)
THEM GIA TRI VAO BANG TONKHO
insert into TONKHO Values(200601,'DD01',0,10,6,4)
insert into TONKHO Values(200601,'DD02',0,15,7,8)
insert into TONKHO Values(200601,'TV29',12,0,0,12)
insert into TONKHO Values(200601,'VD02',0,30,10,20)
insert into TONKHO Values(200602,'DD01',4,0,0,4)
insert into TONKHO Values(200602,'DD02',8,0,0,8)
insert into TONKHO Values(200602,'TV14',5,0,0,5)
insert into TONKHO Values(200602,'VD01',20,0,0,20)
insert into TONKHO Values(200603,'DD01',0,190,0,190)
BÀI TP TRUY VN
1. Thêm d liu vào các bng bng lnh INSERT INTO.
2. Thêm ct tgnhap kiu numeric vào bng PNHAP
alter table PNHAP
add Tgnhap numeric
3. Thêm ct tgxuat kiu numeric vào bng PXUAT
alter table PXUAT
add Tgxuat numeric
4. Làm li tt c nhng ví d p và nhng ví d yêu cu phi làm
mà cha hoàn tt,
n qua câu tip theo
5. Cho bit thông tin sopn,mavtu, slgnhap, dgnhap, thanh tien ca tng mavtu.
select sopn,mavtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien]
from CTPNHAP
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 8
6. Cho bit thông tin sopn,tenvatu, slnhap, dgnhap, thanh tien ca tng mavtu.
select sopn,Tenvtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien]
from CTPNHAP C,VATTU V
where C.Mavtu=V.Mavtu
7. Cho bit thông tin sopn,ngaynhap,mavtu, slgnhap, dgnhap, thanh tien ca
tng mavtu.
select P.Sopn,NgayNhap,Mavtu, Slnhap, Dgnhap,Slnhap*Dgnhap as [Thanh
Tien]
from CTPNHAP C,PNHAP P
where C.Sopn=P.Sopn
8. Cho bit thông tin sopn, ngaynhap, tên vt t, slnhap, dgnhap, thanh tien
ca tng mavtu trong 01/2006.
Yêu cu ngày nhnh dng dd-mm-yyyy
select P.Sopn,NgayNhap=convert(char(10),NgayNhap,103),Tenvtu, Slnhap,
Dgnhap,Slnhap*Dgnhap as [Thanh Tien]
from CTPNHAP C,PNHAP P, VATTU V
where C.Sopn=P.Sopn and V.Mavtu = C.Mavtu and
convert(char(7),NgayNhap,111)='2006/01'
9. Cho bit thông tin sopx,mavtu, slgxuat, dgxuat, thanh tien ca tng mavtu.
select Sopx,mavtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT
10. Cho bit thông tin sopx,tenvattu, slgxuat, dgxuat, thanh tien ca tng
mavtu.
select Sopx,Tenvtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, VATTU V
where C.Mavtu=V.Mavtu
11. Cho bit thông tin sopx,ngayxuat,mavtu, slgxuat, dgxuat, thanh tien ca
tng mavtu.
select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Mavtu, Slxuat,
Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, PXUAT P
where C.Sopx=P.Sopx
12. Cho bit thông tin sopx,ngayxuat,ten vt t, slgxuat, dgxuat, thanh tien ca
tng mavtu
t n 03/03/2006.Yêu cu ngày nhnh dng dd-mm-
yyyy
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 9
select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Tenvtu, Slxuat,
Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, PXUAT P, VATTU V
where C.Sopx=P.Sopx and V.Mavtu=C.Mavtu and Ngayxuat between
'01/15/2006' and '03/03/2006'
13. Cp nht ct tng tr giá nhp(tgnhap) cho bng PNHAP.
ng ctpnhap.Ch cp nht cho các
SOPN là N001,N002
update PNHAP
set Tgnhap= (
select sum(Slnhap*Dgnhap)
from CTPNHAP C
where C.Sopn=PNHAP.Sopn
)
where PNHAP.Sopn in ('N001','N002')
14. Cp nht ct tng tr giá nhp(tgnhap) cho bng PNHAP.
ng ctpnhap.Ch cp nht cho các
phiu nhp trong tháng 02.
update PNHAP
set Tgnhap= (
select sum(Slnhap*Dgnhap)
from CTPNHAP C
where C.Sopn=PNHAP.Sopn
)
where month(PNHAP.Ngaynhap)=2
15. Cp nht ct tng tr giá xut(tgxuat) cho bng PXUAT.
ng ctpxuat.Ch cp nht cho các
SOPX là X001.
update PXUAT
set Tgxuat= (
select sum(Slxuat*Dgxuat)
from CTPXUAT C
where C.Sopx=PXUAT.Sopx
)
where PXUAT.Sopx = 'X001'
16. Cp nht ct tng tr giá xut(tgxut) cho bng PXUAT.
ng ctpxuat.Ch cp nht cho các
phiu xuat tr-01.
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 10
update PXUAT
set Tgxuat = (
select sum(Slxuat*Dgxuat)
from CTPXUAT C
where C.Sopx = PXUAT.Sopx
)
where convert(char(7),PXUAT.Ngayxuat,111)='2006/01'
17. Xoá mã vt t
delete from VATTU where dvitinh=N'B'
18. Insert li nhng mu tin va b xoá
',40)
',40)
u Karaoke',N'B',30)
insert into VATTU values('KO04u Karaoke 6 s',N'B',30)
i IK-2002',N'B',NULL)
',30)
',15)
19. Th hin thông tin : mã vt t, tên vt t
select Mavtu,Tenvtu
from VATTU
20. Th hin thông tin tt c các vt t .yêu cu ct ph
select Mavtu,Tenvtu,Dvitinh,PhanTram=rtrim(cast(PhanTram as char(3)))+'%'
from VATTU
21. Th hin thông tin nhng khách hàng có tên cha ch
select *
from NHACC
where Tenncc like '%H%'
22. Cho bit thông tin sodh, ngaydh, tennhacc.
select Sodh,Ngaydh,Tenncc
from DONDH D,NHACC N
where N.Manhacc=D.Manhacc
23. Cho bit thông tin sodh, ngaydh, tennhacc Yêu cu ct hàng th
hin theo dng dd-mm-yyyy
select Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenncc
from DONDH D,NHACC N
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 11
where N.Manhacc=D.Manhacc
24. Cho bit thông tin sodh, ngaydh, tennhacc t n 15/01/2006
select sodh, ngaydh=convert(char(10)ngaydh,103), tenncc
from DONDH D, NHACC N
where D.Manhacc=N.Manhacc and Ngaydh between '01-01-2006' and '01-15-
2006'
25. Cho bit s lt hàng ca tng nhà cung cp.Thông tin gm tên
nhà cung cp, s lt hàng.
select Tenncc,count(Sodh) as 'SO LUONG DON DAT HANG'
from DONDH D, NHACC N
where D.Manhacc=N.Manhacc
group by Tenncc
26. Cho bit thông tin sodh, tennhacc,tenvtu, sldat
select D.Sodh, Tenncc,Tenvtu, Sldat
from DONDH D, NHACC N, CTDONDH C,VATTU V
where D.Manhacc=N.Manhacc and V.Mavtu=C.Mavtu and C.Sodh=D.Sodh
27. Cho bit thông tin sodh,tennhacc,tenvtu, tongsldat trong tháng 1 và 2
select
D.Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenncc,Tenvtu,TongSoLuongDat
=sum(Sldat)
from DONDH D, NHACC N, CTDONDH C,VATTU V
where D.Manhacc=N.Manhacc and V.Mavtu=C.Mavtu and C.Sodh=D.Sodh and
month(Ngaydh) in (1,2)
group by D.Sodh,convert(char(10),Ngaydh,103),Tenncc,Tenvtu
28. Th hin thông tin khách hàng C01 và C02
select *
from NhaCC
where Manhacc in ('C01','C02')
29. Th hit hàng(DONDH) trong tháng 01 và 02
select Sodh,Ngaydh=convert(char(10),Ngaydh,103),Manhacc
from DONDH
where month(Ngaydh) in (1,2)
30. Cho bit thông tin chi tit ca PHIU NHÂP trong tháng 02-2006.Ct
ngày nhp th hin theo dng yyyy-mm.Thông tin gm các ct sopn, ngaynhap,
ten vt t, slnhap, dgnhap.
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 12
select P.Sopn, Ngaynhap=convert(char(7),Ngaynhap,111), Tenvtu, Slnhap,
Dgnhap
from PNHAP P,CTPNHAP C,VATTU V
where V.Mavtu=C.Mavtu and P.Sopn=C.Sopn and
convert(char(7),Ngaynhap,111)='2006/02'
31. Cho bit thông tin chi tit ca PHIU NHÂP trong tháng 02-2006.Ct ngày
nhp th hin theo dng yyyy-mm.
Thông tin gm các ct sopn, ngaynhap, ten vt t, slnhap, dgnhap, thành tin.
n = slnhap*dgnhap.
select P.Sopn, Ngaynhap=convert(char(7),Ngaynhap,111), Tenvtu, Slnhap,
Dgnhap, Slnhap*Dgnhap as 'ThanhTien'
from PNHAP P,CTPNHAP C,VATTU V
where V.Mavtu=C.Mavtu and P.Sopn=C.Sopn and
convert(char(7),Ngaynhap,111)='2006/02'
32. Th hin thông tin SODH, NGAYDH, TENVATU, SLDAT có sldat >=20
select D.Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenvtu, Sldat
from DONDH D, CTDONDH C,VATTU V
where V.Mavtu=C.Mavtu and C.Sodh=D.Sodh and Sldat>=20
33. Hin th danh sách vt t trong bng VATTU, sp xp tên vt t gim dn
select *
from VATTU
order by Tenvtu desc
34. Hin th danh sách các nhà cung cp Q1 HCM , sp h tên nà cung cp
n.
select *
from NhaCC
where Diachi like'%Q1,HCM'
order by Tenncc
35. Hin th danh sách thông tin trong bng CTPNHAP có thêm ct thành
tin(ct biu thc)
bit rng thành tin= SLNHAP * DGNHAP
select *, Slnhap*Dgnhap as 'ThanhTien'
from CTPNHAP
36. Hin th danh sách thông tin trong bng PNHAP có thêm ct tr giá,
bit rng tr giá = tng thành tin ca các mu tin chi tit tng ng trong bng
CTPNHAP.
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 13
select P.Sopn, Ngaynhap=convert(char(7),Ngaynhap,111),Sodh,Tgnhap,
sum(Slnhap*Dgnhap) as 'TriGia'
from CTPNHAP C,PNHAP P
where C.SOPN=P.SOPN
group by P.Sopn, Ngaynhap,Sodh,tgnhap
37. Hin th danh sách các nhà cung cp gm các thông tin sau: mã nhà cung
cp,
tên nhà cung cc trùng lp d liu .
select distinct N.Manhacc,Tenncc
from NhaCC N ,DonDH D
where D.Manhacc=N.Manhacc
38. Hin th t hàng gt trong bng DONDH.
select top 1 with ties Sodh,Ngaydh=convert(char(10),Ngaydh,103),Manhacc
from DONDH
order by getdate() - Ngaydh
39. Hin th thông tin phiu xut gm các ct: s phiu xut và tng thành tin.
p xp tng thành tin gim dn.
select Sopx,sum(Slxuat*Dgxuat) as 'Tong Thanh Tien'
from CTPXUAT
group by Sopx
order by sum(Slxuat*Dgxuat) desc
40. Hin th danh sách các phiu xut hàng có tng thành tin ln nht.
select top 1 with ties Sopx,sum(Slxuat*Dgxuat) as 'Tong Thanh Tien'
from CTPXUAT
group by Sopx
order by sum(Slxuat*Dgxuat) desc
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 14
BÀI TẬP VIEW
1. To view có tên vw_DMVT bao gm các thông tin sau; mã vt t, tên vt t.
lit kê danh sách các vt t hin có trong bng VATTU.
if exists (select * from sysobjects where name='vw_DMVT')
drop view vw_DMVT
Go
create view vw_DMVT
as
select Mavtu,tenvtu
from VATTU
2. To view có tên vw_dondh_tongsldat bao gm các thông tin sau : s t
hàng, tng s lt .
thng kê tng s lt hàng.
if exists (select * from sysobjects where name='vw_dondh_tongsldat')
drop view vw_dondh_tongsldat
Go
create view vw_dondh_tongsldat
as
select Sodh,TongSLDat=sum(sldat)
from CTDONDH
group by Sodh
3. To view có tên vw_dondh_tongslnhap bao gm các thông tin sau: s t
hàng, tng s lng nhp.
thng kê tng s lng nht hàng.
if exists (select * from sysobjects where name='vw_dondh_tongslnhap')
drop view vw_dondh_tongslnhap
GO
create view vw_dondh_tongslnhap
as
select Sodh,TongSLNhap=sum(slnhap)
from PNHAP P,CTPNHAP C
where C.Sopn=P.Sopn
group by Sodh
4. To view có tên vw_dondh_tongsldatnhap bao gm các thông tin sau : s
t hàng, tng s lt,tng s lng nhp.
if exists (select * from sysobjects where name='vw_dondh_tongsldatnhap')
drop view vw_dondh_tongsldatnhap
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 15
GO
create view vw_dondh_tongsldatnhap
as
select C.Sodh,TongSLDat=sum(sldat),TongSLNhap=( select sum(slnhap)
from PNHAP P,CTPNHAP CT
where C.Sodh=P.Sodh and
P.Sopn=CT.Sopn )
from CTDONDH C
group by C.Sodh
5. To view có tên vw_dondh_tongsldatnhap_daydu bao gm các thông tin sau
: s t hàng.
lit kê nh hàng(tng
lt bng tng lng nhp)
if exists (select * from sysobjects where
name='vw_dondh_tongsldatnhap_daydu')
drop view vw_dondh_tongsldatnhap_daydu
GO
create view vw_dondh_tongsldatnhap_daydu
as
select Sodh as 'Don Hang Day Du'
from CTDONDH C
group by Sodh
having sum(sldat)= (select sum(slnhap) from PNHAP P,CTPNHAP CT
where C.Sodh=P.Sodh and P.Sopn=CT.Sopn)
6. To view có tên vw_tongnhap bao g
vt t , tng s lng nhp.
thng kê tng s lng nhp ca các vt t trong t
ng yyyy-mm).
chú ý không dùng bng tn kho.
if exists (select * from sysobjects where name='vw_tongnhap')
drop view vw_tongnhap
GO
create view vw_tongnhap
as
select
NamThang=convert(char(7),Ngaynhap,111),Mavtu,TSL_Nhap=sum(Slnhap)
from PNHAP P,CTPNHAP C
where P.Sopn=C.Sopn
group by convert(char(7),Ngaynhap,111),Mavtu
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 16
7. To view có tên vw_tongxuat bao gt
t, tng s lng xut.
thng kê tnng s lng xut ca các vt t trong t
ng yyyy-mm).
chú ý không dùng bng tn kho.
if exists (select * from sysobjects where name='vw_tongxuat')
drop view vw_tongxuat
GO
create view vw_tongxuat
as
select
NamThang=convert(char(7),Ngayxuat,111),Mavtu,TSL_Xuat=sum(Slxuat)
from PXUAT P,CTPXUAT C
where P.Sopx=C.Sopx
group by convert(char(7),Ngayxuat,111),Mavtu
8. To view có tên vw_dondh_mavtu_tongslnhap bao gm các thông tin sau :
s t hàng, ngt hàng,
mã vt t, tên vt t, s lt, tng s lp hàng.
if exists (select * from sysobjects where name='vw_dondh_mavtu_tongslnhap')
drop view vw_dondh_mavtu_tongslnhap
GO
create view vw_dondh_mavtu_tongslnhap
as
select D.Sodh,Ngaydh,V.Mavtu,Tenvtu,Sldat,TongSL_Nhap= (select
sum(Slnhap)
from PNHAP P,CTPNHAP CT
where P.Sopn=CT.Sopn and
D.Sodh=P.Sodh and V.Mavtu=CT.Mavtu
)
from DONDH D,CTDONDH C,VATTU V
where D.Sodh=C.Sodh and C.Mavtu=V.Mavtu
Kt hp các view các câu trên , thc hin các truy vn chn l tr li các
câu hi sau:
1. Cho bit danh sách các phit hàng cha tc nhp hàng.
if exists (select * from sysobjects where name='vw_Sodh_chua_nhaphang')
drop view vw_Sodh_chua_nhaphang
GO
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 17
create view vw_Sodh_chua_nhaphang
as
select Sodh
from vw_dondh_tongsldat
where Sodh not in (select Sodh from vw_dondh_tongslnhap)
2. Cho bit danh sách các mt hàng cha bao gi t hàng.
if exists (select * from sysobjects where name='vw_VT_chua_dathang')
drop view vw_VT_chua_dathang
GO
create view vw_VT_chua_dathang
as
select *
from vw_DMVT
where Mavtu not in(select Mavtu from vw_dondh_mavtu_tongslnhap)
3. Cho bit nhà cung cp nào có nhit hàng nht.
if exists (select * from sysobjects where name='vw_NCC_nhieu_Sodh_nhat')
drop view vw_NCC_nhieu_Sodh_nhat
GO
create view vw_NCC_nhieu_Sodh_nhat
as
select top 1 with ties n.Manhacc,Tenncc,TSL_DonDH=count(Sodh)
from NHACC N,DONDH D
where N.Manhacc=D.Manhacc
group by n.Manhacc,Tenncc
order by count(Sodh) desc
4. Cho bit vt t nào có tng s lng xut bán là nhiu nht.
if exists (select * from sysobjects where name='vw_VT_xuat_nhieu_nhat')
drop view vw_VT_xuat_nhieu_nhat
GO
create view vw_VT_xuat_nhieu_nhat
as
select Top 1 with ties V.Mavtu,Tenvtu,TSL_Xuat=sum(Slxuat)
from VATTU V, CTPXUAT C
where V.Mavtu=C.Mavtu
group by V.Mavtu,Tenvtu
order by sum(Slxuat) desc
t hàng nào có nhiu mt hàng nht.
if exists (select * from sysobjects where name='vw_Sodh_nhieu_VT_nhat')
drop view vw_Sodh_nhieu_VT_nhat
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 18
GO
create view vw_Sodh_nhieu_VT_nhat
as
select Top 1 with ties Sodh,TSL_Vatu=count(Mavtu)
from CTDONDH
group by Sodh
order by count(Mavtu) desc
6. Cho bit tình hình nhp xut ca vt t , thông tin g-
mm), mã vt t, tên vt t, tng s lng nhp, tng s lng xut.
if exists (select * from sysobjects where name='vw_tinhhinh_nhapxuat')
drop view vw_tinhhinh_nhapxuat
GO
create view vw_tinhhinh_nhapxuat
as
select Namthang,V.Mavtu,Tenvtu,TSL_Nhap,TSL_Xuat = ( select
sum(Slxuat)
from CTPXUAT C,PXUAT P
where V.Mavtu=C.Mavtu and
P.Sopx=C.Sopx and convert(char(7),Ngayxuat,111)=Namthang)
from VATTU V, vw_tongnhap N
where N.Mavtu=V.Mavtu
7. Tht hàng, mã vt t, tên vt
t, tng s lt hàng.
if exists (select * from sysobjects where name='vw_tinhhinh_dathang_theongay')
drop view vw_tinhhinh_dathang_theongay
GO
create view vw_tinhhinh_dathang_theongay
as
select
Ngaydh=convert(char(10),Ngaydh,103),V.Mavtu,Tenvtu,TSL_Dat=sum(Sldat)
from DONDH D,VATTU V,CTDONDH C
where D.Sodh=C.Sodh and C.Mavtu=V.Mavtu
group by Ngaydh,V.Mavtu,Tenvtu
8. Tht hàng(dng yyyy-
mm) , mã vt t, tên vt t, tng s lt hàng.
if exists (select * from sysobjects where name='vw_tinhhinh_dathang_theothang')
drop view vw_tinhhinh_dathang_theothang
GO
create view vw_tinhhinh_dathang_theothang
as
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 19
select
Namthang=convert(char(7),Ngaydh,111),V.Mavtu,Tenvtu,TSL_Dat=sum(Sldat)
from DONDH D,VATTU V,CTDONDH C
where D.Sodh=C.Sodh AND C.Mavtu=V.Mavtu
group by convert(char(7),Ngaydh,111),V.Mavtu,Tenvtu
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 20
Bài tập về BIẾN và IF
Dùng cả hai cách IF….ELSE và IF EXISTS
1. Tính xem có vt t nào bán ra s lng nhiu hn 4 hay không? Nu có in
t t có s lng > 4
ng thi Mã vt t, tên vt t.Nu không thy thì xut thông báo
không tìm thy.
if (select count(*) from CTPXUAT where SLXUAT >4) >0
begin
print N' DANH SÁCH CÁC VT T CÓ S LNG XUT > 4 LÀ: '
select V.MAVTU,TENVTU,SLXUAT
from VATTU V, CTPXUAT C
where V.MAVTU=C.MAVTU and SLXUAT >4
end
else
print N' Không tìm thy'
IF EXISTS
if exists (select * from CTPXUAT where SLXUAT >4)
begin
print N' DANH SÁCH CÁC VT T CÓ S LNG XUT > 4 LÀ: '
select V.MAVTU,TENVTU,SLXUAT
from VATTU V, CTPXUAT C
where V.MAVTU=C.MAVTU and SLXUAT >4
end
else
print N' Không tìm thy'
2. Tìm kim nhn nhp hàng vào ngày th 6.Nu có in ra câu thông báo
n hàng nhp vào ngày Friday
là: In ra thông tin ca phiu nhp vào ngày th 6 kèm thêm ct th. Dùng hàm
ly th
tham kho giáo trình.Nu không thy thì xut thông báo là không tìm thy.
if (select count(*) from PNHAP where datename(dw,NGAYNHAP)='Friday') >0
begin
print N' Nhn hàng nhp vào ngày Friday là: '
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 21
select
SOPN,NGAYNHAP=convert(char(10),NGAYNHAP,103),SODH,THU=datename(
dw,NGAYNHAP)
from PNHAP
where datename(dw,NGAYNHAP)='Friday'
end
else
print N' Không tìm thy '
IF EXISTS
if exists ( select * from PNHAP where datename(dw,NGAYNHAP)='Friday' )
begin
print N' Nhn hàng nhp vào ngày Friday là: '
select
SOPN,NGAYNHAP=convert(char(10),NGAYNHAP,103),SODH,THU=datename(
dw,NGAYNHAP)
from PNHAP
where datename(dw,NGAYNHAP)='Friday'
end
else
print N' Không tìm thy'
3. Tìm nhng phit hàng t n tháng 3/2006. Nu tìm
thng phit
hàng t i các thông tin ca các
phit hàng tìm thy.
nu không thy thì xuy.Khi in thông báo nh
truyn bin vào thông báo.
DECLARE @TUNGAY CHAR(7),@DENNGAY CHAR(7)
SET @TUNGAY = '2006/01'
SET @DENNGAY = '2006/03'
if (select count(*) from DONDH where year(NGAYDH)=2006 and
month(NGAYDH) between 1 and 3) >0
begin
print N' Nhng phit hàng t n ngày '+
@DENNGAY +N' là: '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC
from DONDH
where year(NGAYDH)=2006 and month(NGAYDH) between 1 and 3
end
else
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 22
print N' Không tìm thy nhng phit hàng t n
ngày '+ @DENNGAY
IF EXISTS
DECLARE @TUNGAY CHAR(7),@DENNGAY CHAR(7)
SET @TUNGAY = '2006/01'
SET @DENNGAY = '2006/03'
if exists (select * from DONDH where year(NGAYDH)=2006 and
month(NGAYDH) between 1 and 3)
begin
print N' Nhng phit hàng t n ngày '+
@DENNGAY +N' là: '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC
from DONDH
where year(NGAYDH)=2006 and month(NGAYDH) between 1 and 3
end
else
print N' Không tìm thy nhng phit hàng t n
ngày '+ @DENNGAY
4. Tìm nhng phit hàng cha tng nhp hàng trong tháng 01/2006. Nu
tim thy thì xut thông báo: Nhng phit
hàng cha tng nhp hàng trong tháng 01/2006 , kèm thông tin các phit
hàng cha tng nhp hàng trong 01/2006.
nu không thy xuy nha
tng nhp hàng 01/2006.
Dùng bi xut thông báo.
declare @NGAYDH char(7)
set @NGAYDH = '2006/01'
if (select count(*) from DONDH where
convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from
PNHAP)) >0
begin
print N' Nhng phit hàng cha tng nhp hàng trong '+
@NGAYDH +': '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC
from DONDH
where convert(char(7),NGAYDH,111)=@NGAYDH and SODH not
in(select SODH from PNHAP)
end
else
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 23
print N' Không tìm thy nhng phit hàng cha tng nhp hàng trong
'+ @NGAYDH
IF EXISTS
declare @NGAYDH char(7)
set @NGAYDH = '2006/01'
if exists (select * from DONDH where
convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from
PNHAP))
begin
print N' Nhng phit hàng cha tng nhp hàng trong '+
@NGAYDH +': '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC
from DONDH
where convert(char(7),NGAYDH,111)=@NGAYDH and SODH not
in(select SODH from PNHAP)
end
else
print N' Không tìm thy nhng phit hàng cha tng nhp hàng trong
'+ @NGAYDH
5. Cho bit thông tin s lng nhp 01/2006. Nu có nhng phiu nhp
01/2006 thì xut thông báo, kèm thông tin
t, tng s lng nhp. Nu không thy thì xut thông báo
không tìm thy.
Truyn bin khi xut thông báo.Không dùng bng tn kho
declare @NGAYNHAP char(7)
set @NGAYNHAP = '2006/01'
if (select count(*) from PNHAP P,CTPNHAP C where C.SOPN=P.SOPN and
convert(char(7),NGAYNHAP,111)=@NGAYNHAP) >0
begin
print N' Nhng phiu nhp trong '+ @NGAYNHAP +': '
select
NAMTHANG=convert(char(7),NGAYNHAP,111),MAVTU,TSL_NHAP=SUM(SLN
HAP)
from PNHAP P,CTPNHAP C
where C.SOPN=P.SOPN and
convert(char(7),NGAYNHAP,111)=@NGAYNHAP
group by convert(char(7),NGAYNHAP,111),MAVTU
end
else
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 24
print N' Không tìm thy nhng phiu nhp trong '+ @NGAYNHAP
IF EXISTS
declare @NGAYNHAP char(7)
set @NGAYNHAP = '2006/01'
if exists (select * from PNHAP P,CTPNHAP C where C.SOPN=P.SOPN and
convert(char(7),NGAYNHAP,111)=@NGAYNHAP)
begin
print N' Nhng phiu nhp trong '+ @NGAYNHAP +': '
select
NAMTHANG=convert(char(7),NGAYNHAP,111),MAVTU,TSL_NHAP=SUM(SLN
HAP)
from PNHAP P,CTPNHAP C
where C.SOPN=P.SOPN and
convert(char(7),NGAYNHAP,111)=@NGAYNHAP
group by convert(char(7),NGAYNHAP,111),MAVTU
end
else
print N' Không tìm thy nhng phiu nhp trong '+ @NGAYNHAP
6. Cho bit thông tin s lng xut 01/2006.Nu có nhng phiu xut 01/2006
thì xut thông báo , kèm thông tin
t, tng s lng xut. Nu không thy thì xut thông báo
không tìm thy.
Truyn bin khi xut thông báo.Không dùng bng tn kho
declare @NGAYXUAT char(7)
set @NGAYXUAT = '2006/01'
if (select count(*) from PXUAT where
convert(char(7),NGAYXUAT,111)=@NGAYXUAT) >0
begin
print N' Nhng phiu xut trong '+ @NGAYXUAT +': '
select
NAMTHANG=convert(char(7),NGAYXUAT,111),MAVTU,TSL_XUAT=SUM(SLX
UAT)
from PXUAT P,CTPXUAT C
where C.SOPX=P.SOPX and
convert(char(7),NGAYXUAT,111)=@NGAYXUAT
group by convert(char(7),NGAYXUAT,111),MAVTU
end
else
Thực Hành Hệ Quản Trị Cơ Sở Dữ Liệu(SQL SERVER) – 11 LT-TM
Ngô Tất Đạt Page 25
print N' Không tìm thy nhng phiu xut trong '+ @NGAYXUAT
IF EXISTS
declare @NGAYXUAT char(7)
set @NGAYXUAT = '2006/01'
if exists (select * from PXUAT P,CTPXUAT C where C.SOPX=P.SOPX and
convert(char(7),NGAYXUAT,111)=@NGAYXUAT)
begin
print N' Nhng phiu xut trong '+ @NGAYXUAT +': '
select
NAMTHANG=convert(char(7),NGAYXUAT,111),MAVTU,TSL_XUAT=SUM(SLX
UAT)
from PXUAT P,CTPXUAT C
where C.SOPX=P.SOPX and
convert(char(7),NGAYXUAT,111)=@NGAYXUAT
group by convert(char(7),NGAYXUAT,111),MAVTU
end
else
print N' Không tìm thy nhng phiu xut trong '+ @NGAYXUAT
7. Cho bit danh sách vt t có s lng xut nhiu nht.In ra câu thông báo,
kèm thông tin
ca vt t có s lng xut bán nhiu nht.
if (select count(*) from CTPXUAT) >0
begin
print N' Danh sách vt t có s lng xut nhiu nht: '
select top 1 with ties
V.MAVTU,TENVTU,TSL_XUAT=SUM(SLXUAT)
from VATTU V,CTPXUAT C
where V.MAVTU=C.MAVTU
group by V.MAVTU,TENVTU
order by SUM(SLXUAT) desc
end
else
print N' Không tìm thy'
IF EXISTS
if exists (select * from CTPXUAT)
begin
print N' Danh sách vt t có s lng xut nhiu nht: '