Tải bản đầy đủ (.pdf) (55 trang)

Thực hành Hệ quản trị cơ sơ dũ liệu SQL Server

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 (990.03 KB, 55 trang )

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
)


To ràng buc khóa chính, khóa ngoi
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)

To ràng buc
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'Cha 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 liu
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 lnh Sanyo 150 lít',N'Cái',25)
insert into VATTU values('TL90',N'T lnh 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,Hu
Giang,Q6,HCM',8781024)
insert into NHACC Values('C02',N'Trn Minh Thch',N'145,Hùng Vng, M
Tho',7698154)
insert into NHACC Values('C03',N'Hùng Phng',N'154/85, Lê Lai,
Q1,HCM',9600125)
insert into NHACC Values('C04',N'Nhã Thng',N'198/40,Hng L
14,QTB,HCM',8757757)
insert into NHACC Values('C05',N'Luu Nguyt Qu',N'178, Nguy
Ðà Lt',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'Nguyn Th Phng 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'Nguyn Hùng Phng')
insert into PXuat Values('X003','1/31/2006',N'Nguyn Tun 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 TP TRUY VN

1. Thêm d liu vào các bng bng lnh INSERT INTO.

2. Thêm ct tgnhap kiu numeric vào bng PNHAP
alter table PNHAP
add Tgnhap numeric

3. Thêm ct tgxuat kiu numeric vào bng PXUAT
alter table PXUAT
add Tgxuat numeric

4. Làm li tt c nhng ví d p và nhng ví d yêu cu phi làm
mà cha hoàn tt,
n qua câu tip theo

5. Cho bit thông tin sopn,mavtu, slgnhap, dgnhap, thanh tien ca tng 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 bit thông tin sopn,tenvatu, slnhap, dgnhap, thanh tien ca tng mavtu.
select sopn,Tenvtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien]
from CTPNHAP C,VATTU V
where C.Mavtu=V.Mavtu

7. Cho bit thông tin sopn,ngaynhap,mavtu, slgnhap, dgnhap, thanh tien ca
tng 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 bit thông tin sopn, ngaynhap, tên vt t, slnhap, dgnhap, thanh tien
ca tng mavtu trong 01/2006.
Yêu cu ngày nhnh dng 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 bit thông tin sopx,mavtu, slgxuat, dgxuat, thanh tien ca tng mavtu.
select Sopx,mavtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT

10. Cho bit thông tin sopx,tenvattu, slgxuat, dgxuat, thanh tien ca tng
mavtu.

select Sopx,Tenvtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, VATTU V
where C.Mavtu=V.Mavtu

11. Cho bit thông tin sopx,ngayxuat,mavtu, slgxuat, dgxuat, thanh tien ca
tng 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 bit thông tin sopx,ngayxuat,ten vt t, slgxuat, dgxuat, thanh tien ca
tng mavtu
t n 03/03/2006.Yêu cu ngày nhnh dng 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. Cp nht ct tng tr giá nhp(tgnhap) cho bng PNHAP.
ng ctpnhap.Ch cp nht 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. Cp nht ct tng tr giá nhp(tgnhap) cho bng PNHAP.
ng ctpnhap.Ch cp nht cho các
phiu nhp 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. Cp nht ct tng tr giá xut(tgxuat) cho bng PXUAT.
ng ctpxuat.Ch cp nht 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. Cp nht ct tng tr giá xut(tgxut) cho bng PXUAT.

ng ctpxuat.Ch cp nht cho các
phiu 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ã vt t 
delete from VATTU where dvitinh=N'B'

18. Insert li nhng mu tin va b xoá
',40)
',40)
u Karaoke',N'B',30)
insert into VATTU values('KO04u Karaoke 6 s',N'B',30)
i IK-2002',N'B',NULL)
',30)
',15)

19. Th hin thông tin : mã vt t, tên vt t
select Mavtu,Tenvtu
from VATTU


20. Th hin thông tin tt c các vt t .yêu cu ct ph 

select Mavtu,Tenvtu,Dvitinh,PhanTram=rtrim(cast(PhanTram as char(3)))+'%'
from VATTU

21. Th hin thông tin nhng khách hàng có tên cha ch 
select *
from NHACC
where Tenncc like '%H%'

22. Cho bit thông tin sodh, ngaydh, tennhacc.
select Sodh,Ngaydh,Tenncc
from DONDH D,NHACC N
where N.Manhacc=D.Manhacc

23. Cho bit thông tin sodh, ngaydh, tennhacc Yêu cu ct hàng th
hin theo dng 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 bit 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 bit s lt hàng ca tng nhà cung cp.Thông tin gm tên
nhà cung cp, s lt 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 bit 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 bit 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 hin thông tin khách hàng C01 và C02
select *
from NhaCC
where Manhacc in ('C01','C02')

29. Th hit 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 bit thông tin chi tit ca PHIU NHÂP trong tháng 02-2006.Ct
ngày nhp th hin theo dng yyyy-mm.Thông tin gm các ct sopn, ngaynhap,
ten vt 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 bit thông tin chi tit ca PHIU NHÂP trong tháng 02-2006.Ct ngày
nhp th hin theo dng yyyy-mm.
Thông tin gm các ct sopn, ngaynhap, ten vt t, slnhap, dgnhap, thành tin.
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 hin 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. Hin th danh sách vt t trong bng VATTU, sp xp tên vt t gim dn
select *
from VATTU
order by Tenvtu desc

34. Hin th danh sách các nhà cung cp  Q1 HCM , sp h tên nà cung cp
n.
select *
from NhaCC
where Diachi like'%Q1,HCM'
order by Tenncc

35. Hin th danh sách thông tin trong bng CTPNHAP có thêm ct thành
tin(ct biu thc)
bit rng thành tin= SLNHAP * DGNHAP
select *, Slnhap*Dgnhap as 'ThanhTien'
from CTPNHAP

36. Hin th danh sách thông tin trong bng PNHAP có thêm ct tr giá,
bit rng tr giá = tng thành tin ca các mu tin chi tit tng ng trong bng
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. Hin th danh sách các nhà cung cp gm các thông tin sau: mã nhà cung
cp,
tên nhà cung cc trùng lp d liu .

select distinct N.Manhacc,Tenncc
from NhaCC N ,DonDH D
where D.Manhacc=N.Manhacc

38. Hin th t hàng gt trong bng DONDH.
select top 1 with ties Sodh,Ngaydh=convert(char(10),Ngaydh,103),Manhacc
from DONDH
order by getdate() - Ngaydh

39. Hin th thông tin phiu xut gm các ct: s phiu xut và tng thành tin.
p xp tng thành tin gim dn.
select Sopx,sum(Slxuat*Dgxuat) as 'Tong Thanh Tien'
from CTPXUAT
group by Sopx
order by sum(Slxuat*Dgxuat) desc

40. Hin th danh sách các phiu xut hàng có tng thành tin ln nht.
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. To view có tên vw_DMVT bao gm các thông tin sau; mã vt t, tên vt t.
 lit kê danh sách các vt t hin có trong bng 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. To view có tên vw_dondh_tongsldat bao gm các thông tin sau : s t
hàng, tng s lt .
 thng kê tng s lt 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. To view có tên vw_dondh_tongslnhap bao gm các thông tin sau: s t

hàng, tng s lng nhp.
 thng kê tng s lng nht 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. To view có tên vw_dondh_tongsldatnhap bao gm các thông tin sau : s
t hàng, tng s lt,tng s lng nhp.
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. To view có tên vw_dondh_tongsldatnhap_daydu bao gm các thông tin sau
: s t hàng.
 lit kê nh hàng(tng
lt bng tng lng nhp)
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. To view có tên vw_tongnhap bao g
vt t , tng s lng nhp.
 thng kê tng s lng nhp ca các vt t trong t
ng yyyy-mm).
chú ý không dùng bng tn 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. To view có tên vw_tongxuat bao gt
t, tng s lng xut.
 thng kê tnng s lng xut ca các vt t trong t
ng yyyy-mm).
chú ý không dùng bng tn 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. To view có tên vw_dondh_mavtu_tongslnhap bao gm các thông tin sau :
s t hàng, ngt hàng,
mã vt t, tên vt t, s lt, tng s lp 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




Kt hp các view  các câu trên , thc hin các truy vn chn l tr li các
câu hi sau:

1. Cho bit danh sách các phit hàng cha tc nhp 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 bit danh sách các mt hàng cha 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 bit nhà cung cp nào có nhit hàng nht.
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 bit vt t nào có tng s lng xut bán là nhiu nht.
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ó nhiu mt hàng nht.
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 bit tình hình nhp xut ca vt t , thông tin g-
mm), mã vt t, tên vt t, tng s lng nhp, tng s lng xut.
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. Tht hàng, mã vt t, tên vt
t, tng s lt 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. Tht hàng(dng yyyy-
mm) , mã vt t, tên vt t, tng s lt 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ó vt t nào bán ra s lng nhiu hn 4 hay không? Nu có in
t t có s lng > 4
ng thi Mã vt t, tên vt t.Nu không thy thì xut thông báo
không tìm thy.

if (select count(*) from CTPXUAT where SLXUAT >4) >0
begin
print N' DANH SÁCH CÁC VT T CÓ S LNG XUT > 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 thy'


IF EXISTS

if exists (select * from CTPXUAT where SLXUAT >4)
begin
print N' DANH SÁCH CÁC VT T CÓ S LNG XUT > 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 thy'

2. Tìm kim nhn nhp hàng vào ngày th 6.Nu có in ra câu thông báo
n hàng nhp vào ngày Friday
là: In ra thông tin ca phiu nhp vào ngày th 6 kèm thêm ct th. Dùng hàm
 ly th
tham kho giáo trình.Nu không thy thì xut thông báo là không tìm thy.

if (select count(*) from PNHAP where datename(dw,NGAYNHAP)='Friday') >0
begin
print N' Nhn hàng nhp 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 thy '

IF EXISTS

if exists ( select * from PNHAP where datename(dw,NGAYNHAP)='Friday' )
begin
print N' Nhn hàng nhp 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 thy'

3. Tìm nhng phit hàng t n tháng 3/2006. Nu tìm
thng phit
hàng t i các thông tin ca các
phit hàng tìm thy.
nu không thy thì xuy.Khi in thông báo nh
truyn bin 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' Nhng phit 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 thy nhng phit 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' Nhng phit 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 thy nhng phit hàng t n
ngày '+ @DENNGAY

4. Tìm nhng phit hàng cha tng nhp hàng trong tháng 01/2006. Nu
tim thy thì xut thông báo: Nhng phit
hàng cha tng nhp hàng trong tháng 01/2006 , kèm thông tin các phit
hàng cha tng nhp hàng trong 01/2006.
nu không thy xuy nha
tng nhp hàng 01/2006.
Dùng bi xut 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' Nhng phit hàng cha tng nhp 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 thy nhng phit hàng cha tng nhp 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' Nhng phit hàng cha tng nhp 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 thy nhng phit hàng cha tng nhp hàng trong
'+ @NGAYDH

5. Cho bit thông tin s lng nhp 01/2006. Nu có nhng phiu nhp
01/2006 thì xut thông báo, kèm thông tin
 t, tng s lng nhp. Nu không thy thì xut thông báo
không tìm thy.
Truyn bin khi xut thông báo.Không dùng bng tn 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' Nhng phiu nhp 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 thy nhng phiu nhp 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' Nhng phiu nhp 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 thy nhng phiu nhp trong '+ @NGAYNHAP


6. Cho bit thông tin s lng xut 01/2006.Nu có nhng phiu xut 01/2006
thì xut thông báo , kèm thông tin
 t, tng s lng xut. Nu không thy thì xut thông báo
không tìm thy.
Truyn bin khi xut thông báo.Không dùng bng tn 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' Nhng phiu xut 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 thy nhng phiu xut 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' Nhng phiu xut 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 thy nhng phiu xut trong '+ @NGAYXUAT

7. Cho bit danh sách vt t có s lng xut nhiu nht.In ra câu thông báo,
kèm thông tin
ca vt t có s lng xut bán nhiu nht.

if (select count(*) from CTPXUAT) >0
begin

print N' Danh sách vt t có s lng xut nhiu nht: '
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 thy'

IF EXISTS

if exists (select * from CTPXUAT)
begin
print N' Danh sách vt t có s lng xut nhiu nht: '

×