You are on page 1of 36

TRUNG TAM TIN HOC - AI HOC KHOA HOC T NHIEN TP. HCM 227 Nguyen Van C Quan 5 Tp.

p. Ho Ch Minh Tel: 8351056 Fax 8324466 Email: ttth@hcmuns.edu.vn

BAI TAP
CHNG TRNH KY THUAT VIEN NGANH LAP TRNH Hoc phan 4 SQL SERVER

Ma tai lieu: DT_NCM_LT_BT_SQLSERVER Phien ban 1.1 Thang 06/04

Bai tap

BAI 1: TONG QUAN VE MICROSOFT SQL SERVER BAI 2:


S dung tien ch Client NetWork Utility e nh ngha cau hnh ket noi t mot may tram vao may chu SQL Server vi cac thong tin ve may chu nh sau:
Ten may chu: T3H4 a ch IP: 127.29.7.14

BAI 3: BAI 4: BAI 5:


Chuan b:

S dung tien ch Enterprise Manager tai may tram e ang ky quan tr may chu SQL Server T3H4. Xem cau truc va d lieu cua cac bang ben trong c s d lieu NorthWind. S dung tien ch Query Analyzer tai may tram e thc hien mot vai cau lenh truy van chon la (SELECT FROM) nham e xem d lieu cua cac bang ben trong c s d lieu NorthWind. Cai at SQL Server 2000

Bai tap nay c lam tren may n (tai nha) hay cac may tnh trong phong thc hanh vi ieu kien cho phep. Xac nh phien ban he ieu hanh Windows cua may Xac nh ten may Xac nh a ch IP cua may (neu may nam trong mang LAN) Xac nh o a va th muc se cai at SQL Server, dung lng a trong a SQL Server 2000 phien ban Personal Thc hien: Login vao he thong vi quyen administrator e co the thc hien cai at Thc hien cai at SQL Server 2000 theo hng dan trong giao trnh Sau khi cai at thanh cong, thc hien lai cac bai tap 1.1 1.3

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 6: CAC OI TNG TRONG C S D LIEU BAI 7:


Bang cong cu Enterprise Manager, tao mi c s d lieu co ten QLBanHang (Quan ly ban hang) co kch thc c mo ta nh sau:
o Data File: Kch thc tao lap 50MB; moi lan tang 10MB; gii han kch thc tap tin khong tang hn 200MB. Log File: Kch thc tao lap 10MB; moi lan tang 5MB; khong gii han viec tang kch thc tap tin.

BAI 8:

S dung cong cu Enteprise Manager e tao cau truc bang VATU, s dung cong cu Query Analyzer e viet lenh tao cac bang con lai co mo ta nh ben di trong c s d lieu quan ly ban hang.

Chu y: Cac cot in am va gach di xac nh cot lam khoa chnh cua bang. Danh muc Vat t (VATTU) Ten cot MaVTu TenVTu DvTinh PhanTram Y ngha Ma vat t Ten vat t n v tnh Ty le phan tram Kieu Char VarChar VarChar Real o rong 4 100 10

Danh muc Nha cung cap (NHACC) Ten cot MaNhaCc TenNhaCc DiaChi DienThoai Y ngha Ma nha cung cap Ten nha cung cap a ch ien thoai Kieu Char VarChar Varchar Varchar o rong 3 100 200 20

n at hang (DONDH) Ten cot SoDh NgayDh MaNhaCc Y ngha So n at hang Ngay at hang Ma nha cung cap Kieu Char DateTime Char 3 o rong 4

Chi tiet n at hang (CTDONDH) Ten cot Y ngha Kieu o rong

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

SoDh MaVTu SlDat

So n at hang Ma vat t So lng at hang

Char Char Int

4 4

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Phieu nhap hang (PNHAP) Ten cot SoPn NgayNhap SoDh Y ngha So phieu nhap hang Ngay nhap hang So n at hang Kieu Char Datetime Char 4 o rong 4

Chi tiet nhap hang (CTPNHAP) Ten cot SoPn MaVTu SlNhap DgNhap Y ngha So phieu nhap hang Ma vat t So lng nhap hang n gia nhap hang Kieu Char Char Int Money o rong 4 4

Phieu xuat hang (PXUAT) Ten cot SoPx NgayXuat TenKh Y ngha So phieu xuat Ngay xuat hang Ten khach hang Kieu Char Datetime Varchar 100 o rong 4

Chi tiet xuat hang (CTPXUAT) Ten cot SoPx MaVTu SlXuat DgXuat Ton kho (TONKHO) Ten cot NamThan g MaVTu SLDau TongSLN TongSLX SLCuoi Y ngha Nam thang Ma vat t So lng ton au ky Tong so lng nhap trong ky Tong so lng xuat trong ky So lng ton cuoi ky Kieu Char Char Int Int Int Int o rong 6 4 Y ngha So phieu xuat Ma vat t So lng xuat hang n gia xuat hang Kieu Char Char Int Money o rong 4 4

Trong thuoc tnh Formula cua cot SLCuoi: SLDau + TongSLN - TongSLX

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 9:
Mancc C01 C02 C03 C04 C05 C07

S dung cac cau lenh INSERT INTO VALUES e them d lieu mau vao cac bang.
Bang NHACC Tennhacc Le Minh Tr Tran Minh Thach Hong Phng Nhat Thang Lu Nguyet Que Cao Minh Trung Diachi 54 Hau Giang Q6 HCM 145 Hung Vng My Tho 154/85 Le Lai Q1 HCM 198/40 Hng Lo 14 QTB HCM 178 Nguyen Van Luong a Lat 125 Le Quang Sung Nha Trang Bang VATTU Mavtu DD01 DD02 TL15 TL90 TV14 TV21 TV29 VD01 VD02 Tenvtu au DVD Hitachi 1 a au DVD Hitachi 3 a Tu lanh Sanyo 150 lit Tu lanh Sanyo 90 lit Tivi Sony 14 inches Tivi Sony 21 inches Tivi Sony 29 inches au VCD Sony 1 a au VCD Sony 3 a Bang DONDH Sodh D001 D002 D003 D004 D005 D006 Ngaydh 01/15/2005 01/30/2005 02/10/2005 02/17/2005 03/01/2005 03/12/2005 Manhacc C03 C01 C02 C05 C02 C05 Sopn N001 N002 N003 N004 DvTinh Bo Bo Cai Cai Cai Cai Cai Bo Bo Bang PNHAP Ngaynhap Sodh 01/17/2005 D001 01/20/2005 D001 01/31/2005 D002 02/15/2005 D003 Phantram 40 40 25 20 15 10 10 30 30 Dienthoai 8781024 7698154 9600125 8757757 7964251 Cha co

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Bang CTDONDH Sodh D001 D001 D002 D003 D003 D004 D005 D005 D006 D006 D006 Mavtu DD01 DD02 VD02 TV14 TV29 TL90 TV14 TV29 TV14 TV29 VD01 SlDat 10 15 30 10 20 10 10 20 10 20 20 Bang PXUAT Sopx X001 X002 X003 Ngayxuat Tenkh Sopn N001 N001 N002 N002 N003 N004 N004

Bang CTPNHAP Mavtu DD01 DD02 DD01 DD02 VD02 TV14 TV29 SlNhap 8 10 2 5 30 5 12 DgNhap 2,500,000 3,500,000 2,500,000 3,500,000 2,500,000 2,500,000 3,500,000

01/17/2005 Nguyen Ngoc Phng Nhi 01/25/2005 Nguyen Hong Phng 01/31/2005 Nguyen Tuan Tu Bang CTPXUAT

Sopx X001 X002 X002 X003 X003 X003

Mavtu DD01 DD01 DD02 DD01 DD02 VD02

SlXuat 2 1 5 3 2 10

DgXuat 3,500,000 3,500,000 4,900,000 3,500,000 4,900,000 3,250,000

Bang TONKHO Namthang 200501 200501 200501 200502 200502 200502 200502 200502 Mavtu DD01 DD02 VD02 DD01 DD02 VD02 TV14 TV29 SLDau 0 0 0 4 8 20 5 12 TongSLN 10 15 30 0 0 0 0 0 TongSLX 6 7 10 0 0 0 0 0 SLCuoi 4 8 20 4 8 20 5 12

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 10: CAC RANG BUOC TOAN VEN D LIEU BAI 11:
S dung cong cu Query Analyzer e them cac rang buoc sau vao cac bang trong c s d lieu QLBanHang.
Ten vat t phai duy nhat, khong trung. Gia tr mac nh cho cot n v tnh la 0 <= PhanTram <= 100 Ten nha cung cap va a ch nha cung cap phai duy nhat, khong trung. Gia tr mac nh cho cot ien thoai la Cha co. Gia tr mac nh cho cot ngay at hang la ngay hien hanh. Dung ham Getdate() SlDat > 0. SlNhap > 0 DgNhap > 0 SlXuat > 0 DgXuat > 0 SLDau >= 0 TongSLN >= 0 TongSLX >= 0 Gia tr mac nh cho cac cot SLDau, TongSLN, TongSLX la 0

Danh muc Vat t (VATTU)

Danh muc Nha cung cap (NHACC)

n at hang (DONDH)

Chi tiet n at hang (CTDONDH) Ton kho (TONKHO) Chi tiet nhap hang (CTPNHAP)

Chi tiet xuat hang (CTPXUAT)

BAI 12:
Stt 1 2 3

S dung cong cu Query Analyzer e them vao cac kiem tra rang buoc ve khoa ngoai cho cac bang nh sau:
Bang DONDH CTDONDH CTDONDH Cot MaNhaCc MaVTu SoDh Bang tham chieu NHACC VATTU DONDH

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

4 5 6 7 8 9

PNHAP CTPNHAP CTPNHAP CTPXUAT CTPXUAT TONKHO

SoDh MaVTu SoPn MaVTu SoPX MaVTu

DONDH VATTU PNHAP VATTU PXUAT VATTU

Chu y: Tat ca cac moi lien ket khoa ngoai eu co gia tr CASCADE cho s kien ON UPDATE va co gia tr NO ACTION cho s kien ON DELETE

BAI 13:

Thiet lap mo hnh quan he d lieu (diagram) cua c s d lieu quan ly ban hang nh ben di.

BAI 14:

Trong c s d lieu quan ly ban hang, xay dng cac view nh sau:

a. Tao view co ten vw_DMVT bao gom cac thong tin sau: ma vat t, ten vat t. View nay dung e liet ke danh sach cac vat t hien co trong bang VATTU. o Tao view co ten vw_DonDH_TongSLNhap bao gom cac thong tin sau: so at hang, tong so lng

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

nhap. View nay c dung e thong ke tong so lng nhap theo n at hang. o Tao view co ten vw_DonDH_TongSLDatNhap bao gom cac thong tin sau: so at hang, tong so lng at, tong so lng nhap. View nay c dung e thong ke nhng n at hang nao a c nhap hang ay u (tong so lng at bang tong so lng nhap). Tao view co ten vw_DonDH_DaNhapDu bao gom cac thong tin sau: so at hang, a nhap u trong o cot a nhap u se co 2 gia tr la a nhap u neu n at hang o a nhap u hoac Cha nhap u neu n at hang o cha nhap u. Tao view co ten vw_TongNhap bao gom cac thong tin sau: nam thang, ma vat t, tong so lng nhap. View nay dung e thong ke so lng nhap cua cac vat t trong tng nam thang tng ng (nam thang co dang YYYY-MM). Chu y: khong s dung bang TONKHO. Tao view co ten vw_TongXuat bao gom cac thong tin sau: nam thang, ma vat t, tong so lng xuat. View nay dung e thong ke so lng xuat cua vat t trong tng nam thang tng ng. Chu y: khong s dung bang TONKHO. Tao view co ten vw_DonDH_MaVTu_TongSLNhap bao gom cac thong tin sau: so at hang, ngay at hang, ma vat t, ten vat t, so lng at, tong so lng a nhap hang

BAI 15:

Ket hp cac view cau 3.4, thc hien cac truy van chon la e tra li cac cau hoi sau:
o o o o o Cho biet danh sach cac mat hang cha bao gi c at hang. Cho biet nha cung cap nao co nhieu n at hang nhat. Cho biet vat t nao co tong so lng xuat ban la nhieu nhat. Cho biet n at hang nao co nhieu mat hang nhat. Cho biet tnh hnh nhap xuat cua vat t thong tin gom: nam thang, ma vat t, ten vat t, tong so lng nhap, tong so lng xuat. Cho biet tnh hnh at va nhap hang: n at hang, ma vat t, so lng at, tong so lng nhap.

a. Cho biet danh sach cac phieu at hang cha tng c nhap hang.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Thong ke tnh hnh at hang trong tng ngay: ngay at hang, ma vat t, ten vat t, tong so lng at hang. Thong ke tnh hnh at hang trong tng thang: nam thang at hang (nh dang YYYY-MM), ma vat t, ten vat t, tong so lng at hang. Thong ke nhng n at hang nao cha c nhap u so lng hang.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 16: LAP TRNH VI C S D LIEU BAI 17:


Trong c s d lieu quan ly ban hang, thc hien cac truy van sau ay:

a. Hien th danh sach cac vat t trong bang VATTU, sap xep theo th t ten vat t giam dan. o Hien th danh sach cac nha cung cap trong bang NHACC co cot a ch quan 1 HCM, sap xep d lieu theo ho ten tang dan. Hien th danh sach cac thong tin trong bang CTPNHAP co them cot thanh tien biet rang Thanh tien = SLNhap*DgNhap. Hien th danh sach cac thong tin trong bang PNHAP co them cot tr gia, biet rang Tr gia = Tong thanh tien cua cac mau tin chi tiet tng ng trong bang CTPNHAP. Hien th danh sach cac ma nha cung cap, ten nha cung cap khong trung lap d lieu a at hang trong bang DONDH. Hien th danh sach cac n at hang gan ay nhat trong bang DONDH. Hien th danh sach cac phieu xuat hang gom co cac cot: so phieu xuat va tong tr gia. Trong o sap xep theo th t tong tr gia giam dan. Hien th danh sach cac vat t va tong so lng xuat ban (s dung cac moi lien ket INNER, LEFT, RIGHT JOIN gia hai bang VATTU va CTPXUAT e xem cac ket qua co khac nhau g khong?) Xoa chi tiet cac vat t trong bang CTDONDH co ngay at hang la 15/01/2005. Xoa toan bo cac dong d lieu trong bang CTPXUAT. S dung lai tap tin cha cac lenh them d lieu INSERT INTO trc ay e chen lai cac d lieu a b xoa trong bang CTDONDH va CTPXUAT. Cap nhat trong bang TONKHO cho TongSLN, TongSLX va SLCuoi. cac cot

o o

o o o

o o

Them cac mau tin mi vao bang TONKHO tng ng vi nam thang la 200503 va SLDau chnh la SLCuoi cua nam thang 200502 (ket chuyen so d sang ky sau).

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

o So_NX

S dung menh e UNION ket hp d lieu t hai truy van thanh 1 co dang nh ben di: Ten vat t SL Nhap SL Xuat

Ngay_NX

S dung menh e COMPUTE BY va cac ham tnh toan e thong ke nhom d lieu.

Hien th cac thong tin trong bang CTPXUAT va bo sung them cot thanh tien, sao cho co thong ke dong tong cong so tien tng phieu xuat. Hien th cac thong tin: ma vat t, so nhap hang, so lng nhap, n gia nhap trong bang CTPNHAP va thong ke dong tong cong so lng, gia thap nhat, gia cao nhat tng vat t.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 18:
cau sau:

S dung cu phap IF ben di e thc hien cac yeu

a. Cho biet n gia xuat trung bnh cua hang hoa au DVD Hitachi 1 a trong bang CTPXUAT hien gi la bao nhieu? Neu ln hn 3,800,000 th in ra khong nen thay oi gia ban, ngc lai in ra a en luc tang gia ban. o S dung ham DATENAME e tnh xem co n at hang nao a c lap vao ngay chu nhat khong? Neu co th in ra danh sach cac n at hang o, ngc lai th in ra chuoi cac Ngay lap cac n at hang eu la hp le Hay cho biet a co bao nhieu phieu nhap hang cho n at hang D001, neu co th in ra Co xx so phieu nhap hang cho n at hang D001, ngc lai th in ra Cha co nhap hang nao cho D001 Hay cho biet n at hang D001 a co nhap u hang cha, neu co th in ra a nhap u hang cho n at hang D001, ngc lai th in ra Cha nhap u hang cho n at hang D001 Hay cho biet vat t TL90 a co at hang trong thang 2/2005 cha, neu co th in ra a co at hang vi tong so lng at la xxx, ngc lai th in ra Cha co at hang

BAI 19:

S dung cu phap WHILE ben di e thc hien cac

yeu cau sau:

a. Tao mot bang ten VATTU_Temp co cau truc va d lieu da vao bang VATTU (ch lay hai cot: MAVTU, TENVTU). Sau o s dung vong lap WHILE viet oan chng trnh dung e xoa tng dong d lieu trong bang VATTU_Temp vi ieu kien cau lenh ben trong vong lap khi moi lan thc hien ch c phep xoa mot dong d lieu trong bang VATTU_Temp. Trong khi xoa nen thong bao ra man hnh noi dung ang xoa vat t + Ten vat t. o Trong bang VATTU_Temp bo sung them hai cot mi: SOPX CHAR(4), DGXUAT FLOAT. Kiem tra n gia trung bnh cua vat t DD01 trong bang CTPXUAT, neu n gia trung bnh van con <3,500,000 th tang n gia len 5% cho cac vat t DD01 ch co n gia xuat <3,500,000. Ket thuc vong lap cho biet a thc hien viec tang bao nhieu lan trong vong lap. Trc moi lan tang n gia phai chen them dong d lieu vao bang VATTU_Temp vi n gia a tang t d lieu cua cac bang CTXUAT va VATTU (e lay cot TENVTU) nham lu lai cac gia tr trong qua trnh tang n gia.

BAI 20:

S dung cu phap CASE long vao cac lenh truy van can thiet trong cac yeu cau sau:

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

a. Liet ke danh sach cac n at hang trong bang DONDH bo sung them cot hien th th trong tuan (bang tieng Viet) cua ngay at hang. o Giam n gia xuat cua cac hang hoa ban ra trong thang 01/2005 theo cac qui tac sau :

Khong giam neu so lng < 4. Giam 5% neu so lng >= 4 va so lng < 10. Giam 10% neu so lng >= 10 va so lng <= 20. Giam 20% neu so lng > 20.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 21: THU TUC NOI TAI BAI 22:


Trong c s d lieu quan ly ban hang, tao cac thu tuc noi tai tnh toan vi cac yeu cau sau.

a. Xay dng thu tuc tnh so lng at hang vi ten spud_DONDH_TinhSLDat gom co 2 tham so vao la: So at hang va Ma vat t, 1 tham so ra la: So lng at hang cua mot vat t theo mot so at hang. o Xay dng thu tuc tnh tong so lng a nhap hang vi ten spud_PNHAP_TinhTongSLNHang gom co 2 tham so vao la: So at hang va Ma vat t, 1 tham so ra la: Tong so lng a nhap hang cua mot vat t theo mot so at hang. Xay dng thu tuc tnh so lng au ky cua mot vat t vi ten spud_TONKHO_TinhSLDau gom co 2 tham so vao la: Nam thang va Ma vat t, 1 tham so ra la: So lng au ky cua mot vat t theo nam thang truyen vao. Xay dng thu tuc tnh tong so lng nhap va tong so lng xuat cua mot vat t vi ten spud_TONKHO_TinhTongNX gom co 2 tham so vao la: Nam thang va Ma vat t, 2 tham so ra la: Tong so lng nhap va Tong so lng xuat cua mot vat t theo nam thang truyen vao. S dung lai cac thu tuc spud_TONKHO_TinhSLDau, spud_TONKHO_TinhTongNX cua cau c va d e xay dng thu tuc tnh so lng ton kho cuoi ky cua mot vat t vi ten spud_TONKHO_TinhSLCuoi gom co 2 tham so vao la: Nam thang va Ma vat t, 1 tham so ra la: So lng cuoi ky cua mot vat t theo nam thang truyen vao.

BAI 23:

Trong c s d lieu quan ly ban hang, tao cac thu tuc noi tai cap nhat d lieu trong bang VATTU. Cac thu tuc nay co kiem tra cac rang buoc d lieu va thong bao ra cac loi ro rang khi d lieu vi pham cac rang buoc.

a. Xay dng thu tuc them mi d lieu vao bang VATTU vi ten spud_VATTU_Them gom co 4 tham so vao chnh la gia tr them mi cho cac cot trong bang VATTU: ma vat t, ten vat t, n v tnh va phan tram. Trong o can kiem tra cac rang buoc d lieu phai hp le trc khi thc hien lenh INSERT INTO e them d lieu vao bang VATTU. Ma vat t phai cha co trong bang VATTU Ten vat t phai duy nhat trong bang VATTU n v tnh mac nh la chuoi rong 0<= Phan tram <=100

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Xay dng thu tuc xoa mot vat t co trong bang VATTU vi ten spud_VATTU_Xoa gom co 1 tham so vao chnh la ma vat t can xoa. Trong o can kiem tra rang buoc d lieu trc khi thc hien lenh DELETE e xoa d lieu trong bang VATTU.

Ma vat t phai cha co trong bang CTDONDH Ma vat t phai cha co trong bang CTPNHAP Ma vat t phai cha co trong bang CTPXUAT Ma vat t phai cha co trong bang TONKHO o Xay dng thu tuc sa oi vat t trong bang VATTU vi ten spud_VATTU_Sua gom co toi a 4 tham so vao chnh la gia tr can thay oi cua cac cot trong bang VATTU (tr cot ma vat t): ma vat t, ten vat t, n v tnh va phan tram. Trong thu tuc ch thc hien lenh UPDATE SET e cap nhat d lieu vao bang VATTU vi cac gia tr tng ng.

BAI 24:

Trong c s d lieu quan ly ban hang, tao cac thu tuc noi tai liet ke d lieu vi cac yeu cau sau.

a. Xay dng thu tuc liet ke cac cot d lieu trong bang VATTU vi ten spud_VATTU_BcaoDanhSach, thu tuc nay khong co tham so nao. Hanh ong duy nhat trong thu tuc nay n gian ch la mot cau lenh truy van SELECT * FROM VATTU co sap xep theo th t ten vat t tang dan. o Xay dng thu tuc liet ke cac cot d lieu trong bang TONKHO co the hien them cot TENVTU trong bang VATTU vi ten spud_TONKHO_BcaoTonkho gom co 1 tham so vao la: Nam thang muon loc d lieu. Xay dng thu tuc liet ke cac cot d lieu trong hai bang d lieu PXUAT va CTXUAT co the hien them mot cot TENVTU trong bang VATTU vi ten la spud_PXUAT_BcaoPxuat gom co 1 tham so vao la: So phieu xuat muon loc d lieu co gia tr mac nh la NULL. Tuy nhien neu luc goi thc hien thu tuc ma khong truyen gia tr so phieu xuat vao th xem nh khong loc g ca, khi o thu tuc se liet ke tat ca cac phieu xuat ang co trong bang PXUAT.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 25: HAM DO NGI DUNG NH NGHA BAI 26:


Xay dng cac ham n tr sau
a. Fn_TongNhapThang(@NamThang, @MaVTu) tra ve tong so lng a nhap trong thang cua vat t. Chu y: @NamThang co dang YYYYMM. o o Fn_TongXuatThang(@NamThang, @MaVTu) tra ve tong so lng a xuat trong thang cua vat t S dung cac ham Fn_TongNhapThang va Fn_TongXuatThang a tao e viet thu tuc noi tai spud_TONKHO_CapNhatTongSL_NX gom co 1 tham so vao la: Nam thang, dung e cap nhat lai cac cot TongSLNhap, TongSLXuat trong bang TONKHO ng vi nam thang truyen vao Fn_TongNhap(@SoDH, @MaVtu) tra ve tong so lng a nhap cua vat t theo so at hang S dung ham Fn_TongNhap a tao e viet ham Fn_ConNhap(@SoDH, @MaVTu) tra ve so lng con phai nhap cua vat t theo so at hang Fn_TonCuoi(@MaVTu, @NamThang) tra ve so lng ton cuoi ky cua vat t theo nam thang Fn_Lui1Thang(@NamThang) thang lui 1 thang tra ve chuoi nam

o o

o o o

S dung ham Fn_Lui1Thang a tao e viet ham Fn_LuiThang(@NamThang, @n) tra ve chuoi nam thang co lui i n thang

BAI 27:

Xay dng cac ham oc bang sau

a. S dung ham Fn_ConNhap a tao e viet ham Fn_DS_VatTuConNhap(@SoDH) liet ke SoDH, MaVTu, TenVTu, SLConNhap cua cac vat t cha nhap u. o Fn_DS_VatTuTonKho(@NamThang, @ToiThieu) liet ke danh sach cac vat t trong @NamThang vi so lng ton kho di mc toi thieu la @ToiThieu. Fn_DS_VatTuTonKho_Con_Thieu(@NamThang) liet ke danh sach cac vat t khong co trong TONKHO nhng co nhap xuat trong @NamThang. Th a ra cac v du e kiem tra va s dung cac ham a tao cac cau a, b va c.

BAI 28:

Xay dng ham tao bang

a. S dung ham Fn_TonCuoi a tao e viet ham Fn_DS_TonKho_Lech_1Thang(@NamThang) liet ke cac thong tin trong bang ton

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

kho cua cac vat t ma thong tin ton au ky cua nam thang truyen vao khong bang thong tin ton cuoi ky cua nam thang trc. b. S dung ham Fn_DS_TonKho_Lech_1Thang(@NamThang) a tao e viet ham Fn_DS_TonKho_Lech() liet ke cac thong tin trong bang ton kho cua cac vat t ma thong tin ton au ky cua thang nay khong bang thong tin ton cuoi ky cua thang trc.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Fn_DS_VatTuTonKho_Thieu(@NamThang) liet ke danh sach cac vat t khong co trong bang TONKHO nhng co nhap xuat trong @NamThang. Thong tin liet ke gom cac cot: ma vat t, tong so lng nhap, tong so lng xuat. S dung ham Fn_DS_VatTuTonKho_Thieu a tao e viet thu tuc noi tai spud_TONKHO_Them_VatTu_Thieu gom co 1 tham so vao la: Nam thang, dung e them mi cac vat t con thieu (trong nam thang truyen vao) vao bang TONKHO

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 29: TRIGGER BAI 30:


Tao Trigger khi them mi d lieu dung e kiem tra cac rang buoc toan ven d lieu nh yeu cau ben di.

a. Xay dng trigger khi them mi d lieu vao bang PNHAP vi ten tg_PNHAP_Them. Trong o can kiem tra cac rang buoc d lieu phai hp le. So at hang phai co trong bang DONDH Ngay nhap hang phai sau ngay at hang. o Xay dng trigger khi them mi d lieu vao bang CTPNHAP vi ten tg_CTPNHAP_Them. Trong o can kiem tra cac rang buoc d lieu phai hp le.

Ma vat t phai co trong bang CTDONDH ng vi so at hang cua phieu nhap So lng nhap hang <= (So lng at Tong so lng a nhap vao trc o)

BAI 31:

Tao Trigger khi xoa d lieu dung e kiem tra cac rang buoc toan ven d lieu nh yeu cau ben di.

a. Xay dng trigger khi xoa d lieu trong bang PXUAT vi ten tg_PXUAT_Xoa. Trong o can thc hien cac hanh ong: Thc hien t ong xoa cac dong d lieu lien quan ben bang CTPXUAT. o Xay dng trigger khi xoa d lieu trong bang PNHAP vi ten tg_ PNHAP_Xoa. Trong o can thc hien cac hanh ong:

Thc hien t ong xoa cac dong d lieu lien quan ben bang CTPNHAP.

BAI 32:

Tao Trigger khi sa d lieu dung e kiem tra cac rang buoc toan ven d lieu nh yeu cau ben di.

a. Xay dng trigger khi sa d lieu trong bang PNHAP vi ten tg_ PNHAP_Sua. Trong o can kiem tra cac rang buoc d lieu phai hp le. Khong cho phep sa oi gia tr cua cac cot: so nhap hang, so at hang. Kiem tra gia tr mi cua cot ngay nhap hang phai sau ngay at hang. o Xay dng trigger khi sa d lieu trong bang PXUAT vi ten tg_PXUAT_Sua. Trong o can kiem tra cac rang buoc d lieu phai hp le.

Khong cho phep sa oi gia tr cot so phieu xuat. Kiem tra gia tr mi cua ngay xuat phai cung nam thang vi gia tr cu cua ngay xuat. Neu khac nhau th thong bao loi khong cho sa oi.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 33:

Tao Trigger khi them mi d lieu dung e kiem tra cac rang buoc toan ven d lieu va tnh toan t ong nh yeu cau ben di.

a. Trong bang PNHAP tao them cot tong tr gia co ten TONGTG vi kieu Float dung e lu tong tr gia cua 1 phieu nhap hang. Trong trigger tg_CTPNHAP_Them a xay dng trc o phan 1b. Bo sung them cac tnh toan t ong sau: Tang gia tr tai cot TONGTG trong bang PNHAP khi d lieu trong bang CTPNHAP c them vao. Tang gia tr tai cot TONGSLN trong bang TONKHO khi d lieu trong bang CTPNHAP c them vao. o Trong bang PXUAT tao them cot tong tr gia co ten TONGTG vi kieu Float dung e lu tong tr gia cua 1 phieu xuat hang. Xay dng trigger khi them mi d lieu vao bang CTPXUAT vi ten tg_CTPXUAT_Them. Trong o can kiem tra cac rang buoc d lieu phai hp le va tnh toan t ong nh sau:

Kiem tra so phieu xuat phai ton tai trong bang PXUAT. Kiem tra ma vat t phai ton tai trong bang VATTU. Kiem tra so lng xuat phai u trong bang TONKHO. Kiem tra n gia xuat phai dng. Neu tat ca cac rang buoc tren eu hp le th t ong thc hien cac hanh ong sau ay: Tang gia tr tai cot TONGTG trong bang PXUAT. Tang gia tr tai cot TONGSLX trong bang TONKHO.

BAI 34:

Tao Trigger khi xoa d lieu dung e kiem tra cac rang buoc toan ven d lieu va tnh toan t ong nh yeu cau ben di.
o Xay dng trigger khi xoa d lieu trong bang CTPXUAT vi ten tg_CTPXUAT_Xoa. Trong o can thc hien cac tnh toan nh sau:

Giam gia tr tai cot TONGTG trong bang PXUAT. Giam gia tr tai cot TONGSLX trong bang TONKHO. o Xay dng trigger khi xoa d lieu trong bang CTPNHAP vi ten tg_CTPNHAP_Xoa. Trong o can thc hien cac tnh toan nh sau:

Giam gia tr tai cot TONGTG trong bang PNHAP. Giam gia tr tai cot TONGSLN trong bang TONKHO.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 35:
nh sau

Xay dng cac INSTEAD OF trigger tren cac bang ao

e. Vi moi hanh ong them, xoa, sa d lieu trong bang ao, xay dng mot INSTEAD OF trigger e thc hien hanh ong tng ng tren bang chi tiet. V du, trigger tao cho hanh ong them tren vw_VatTu se them d lieu vao bang VATTU. View vw_VatTu c xay dng t cau truy van SELECT * FROM VATTU. Can kiem tra cac rang buoc sau ay: Ma vat t khong c trung. Ten vat t la duy nhat. n v tnh mac nh la chuoi . 0 <= Phan tram <= 100.

f. Trigger tao cho hanh ong them tren vw_CTDONDH se them d lieu vao bang CTDONDH View vw_CTDONDH c xay dng t cau truy van: SELECT c.*, TenVTu FROM CTDONDH c INNER JOIN VATTU v ON c.mavt=v.mavt. Can kiem tra cac rang buoc sau ay: So at hang phai co trong bang DONDH. Neu ma vat t khong co trong bang VATTU th them mi vao bang VATTU. Bo so at hang va ma vat t phai cha co trong CTDONDH. So lng at > 0.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

BAI 36: XAY DNG NG DUNG VI VB VA SQL SERVER BAI 37:


Cap nhat d lieu tren view vi trigger instead of.
a. S dung view vw_VatTu a tao cau 7.6 a ng vi hanh ong Them. Cai at
CREATE VIEW vw_VatTu AS SELECT * FROM VatTu

CREATE TRIGGER tg_vw_VatTu_Them ON vw_VatTu INSTEAD OF INSERT AS DECLARE @mavtu CHAR(4), @tenvtu VARCHAR(100), @dvtinh VARCHAR(10), @phantram REAL SELECT @mavtu = mavtu, @tenvtu = tenvtu, @dvtinh = dvtinh, @phantram = phantram FROM Inserted --Kiem tra IF EXISTS(SELECT * FROM VatTu WHERE mavtu=@mavtu) BEGIN RAISERROR('Trung ma vat tu',16,1) RETURN END IF EXISTS(SELECT * FROM VatTu WHERE tenvtu=@tenvtu) BEGIN RAISERROR('Trung ten vat tu',16,1) RETURN END IF NOT @phantram BETWEEN 0 AND 100 BEGIN RAISERROR('Phan tram phai tu 0 -->100',16,1) RETURN END IF @dvtinh IS NULL SET @dvtinh = '' --Ghi nhan INSERT INTO VatTu VALUES(@mavtu, @tenvtu, @dvtinh, @phantram) GO

b. Xay dng man hnh hien th nguon d lieu t vw_VatTu va cho phep them mot dong mi vao view.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Cai at
S dung oi tng connection e thc hien cau lenh INSERT INTO vw_VatTu

BAI 38:

S dung thu tuc noi tai e tnh toan.

a. Xay dng thu tuc tnh tong so lng a nhap hang vi ten spud_PNHAP_TinhTongSLNHang gom co 2 tham so vao la: So at hang va Ma vat t, 1 tham so ra la: Tong so lng a nhap hang cua mot vat t theo mot so at hang. Thu tuc tra ve 1 neu nh so at hang khong co trong bang DONDH, tra ve 2 neu nh ma vat t khong co trong bang VATTU, ngc lai th tra ve 0. Cai at
CREATE PROC spud_PNHAP_TinhTongSLNHang @sodh CHAR(4), @mavtu CHAR(4), @tongsl REAL OUTPUT AS IF NOT EXISTS(SELECT * FROM DonDH WHERE sodh=@sodh) RETURN 1 IF NOT EXISTS(SELECT * FROM VatTu WHERE mavtu=@mavtu) RETURN 2

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

SELECT @tongsl = SUM(slnhap) FROM CTPNhap c INNER JOIN PNhap p ON c.sopn=p.sopn WHERE sodh=@sodh AND mavtu=@mavtu SET @tongsl = ISNULL(@tongsl,0) RETURN 0 GO

b. Xay dng man hnh goi thc hien spud_PNHAP_TinhTongSLNHang co truyen vao cac tham so va nhan gia tr tra ve e co thong bao loi thch hp.

Cai at
Private Sub Nut_tinh_Click() Dim rst As ADODB.Recordset Dim cmd As New ADODB.Command Set cmd.ActiveConnection = Ket_noi cmd.CommandText = "spud_PNHAP_TinhTongSLNHang" cmd.CommandType = adCmdStoredProc Dim parA As Parameter, parB As Parameter, parTong As Parameter, parkq As Parameter Set parkq = cmd.CreateParameter("Ret", adInteger, adParamReturnValue) cmd.Parameters.Append parkq Set parA = cmd.CreateParameter("sodh", adChar, adParamInput, 4) cmd.Parameters.Append parA parA.Value = Sodh.Text Set parB = cmd.CreateParameter("mavtu", adChar, adParamInput, 4) cmd.Parameters.Append parB parB.Value = Mavtu.Text Set parTong =

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

cmd.CreateParameter("tongsl", adSingle, adParamOutput) cmd.Parameters.Append parTong Set rst = cmd.Execute Select Case parkq Case 0 Tong_sl.Text = parTong Case 1 MsgBox "So dat hang sai" Case 2 MsgBox "Ma vat tu sai" End Select End Sub

BAI 39:

S dung thu tuc noi tai e liet ke d lieu.

a. Xay dng thu tuc liet ke cac chi tiet at hang vi ten spud_DonDH_BaoCao gom co 1 tham so vao la: So at hang. Thu tuc liet ke cac cot so at hang, ngay at, ma vat t, ten vat t, so lng at. Neu truyen vao so at hang th loc chi tiet theo so at hang, ngc lai th liet ke tat ca. Cai at

CREATE PROC spud_DonDH_BaoCao @sodh CHAR(4)='' AS SET NOCOUNT ON IF @sodh='' SELECT d.sodh, ngaydh, c.mavtu, tenvtu, sldat FROM DonDH d INNER JOIN CTDonDH c ON d.sodh=c.sodh INNER JOIN VatTu v ON c.mavtu=v.mavtu ORDER BY d.sodh, c.mavtu ELSE SELECT d.sodh, ngaydh, c.mavtu, tenvtu, sldat FROM DonDH d INNER JOIN CTDonDH c ON d.sodh=c.sodh INNER JOIN VatTu v ON c.mavtu=v.mavtu WHERE d.sodh=@sodh ORDER BY d.sodh, c.mavtu GO

b. Xay dng man hnh goi thc hien spud_DonDH_BaoCao e xuat cac chi tiet at hang ra li.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Cai at
Private Sub Nut_liet_ke_Click() Dim rst As ADODB.Recordset Dim cmd As New ADODB.Command Set cmd.ActiveConnection = Ket_noi cmd.CommandText = "spud_DonDH_BaoCao" cmd.CommandType = adCmdStoredProc Dim parA As Parameter Set parA = cmd.CreateParameter("sodh", adChar, adParamInput, 4) If Sodh <> "" Then

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

cmd.Parameters.Append parA parA.Value = Sodh.Text End If Set rst = cmd.Execute Set Luoi_CTDonDH.DataSource = rst End Sub

c. Xay dng bao cao t nguon d lieu c cung cap bi thu tuc spud_DonDH_BaoCao.

Cai at
Chon More Data Sources Chon Microsoft SQL Server ang nhap Chon Stored Procedure Chon spud_DonDH_BaoCao

Private Sub Nut_bao_cao_Click() Cr.ReportFileName = App.Path & "\report1.rpt" Cr.Connect = "DSN=ntd;UID=sa;PWD=;DSQ=QLBanH ang" Cr.WindowState = crptMaximized Cr.ParameterFields(0) = "@sodh;" & Sodh.Text & ";true" Cr.Action = 1 End Sub

BAI 40:

S dung thu tuc noi tai e cap nhat d lieu.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

a. S dung thu tuc sa oi vat t trong bang VATTU vi ten spud_VATTU_Sua a tao cau 5.2 c. Cai at
CREATE PROC spud_VATTU_Sua @mavtu CHAR(4),@tenvtu VARCHAR(100)=NULL,@dvtinh VARCHAR(10)=NULL,@phantram REAL=NULL AS IF NOT EXISTS(SELECT * FROM VatTu WHERE mavtu=@mavtu) BEGIN RAISERROR('Ma vat tu sai',16,1) RETURN END UPDATE VatTu SET tenvtu = ISNULL(@tenvtu,tenvtu), dvtinh = ISNULL(@dvtinh,dvtinh), phantram = ISNULL(@phantram,phantram) WHERE mavtu=@mavtu GO

b. Xay dng man hnh hien th nguon d lieu t bang VatTu va cho phep sa mot dong tren bang.

Cai at
Private Sub Nut_ghi_Click() On Error GoTo Loi_nut_ghi Dim cmd As New ADODB.Command

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Set cmd.ActiveConnection = Ket_noi cmd.CommandText = "spud_VATTU_Sua" cmd.CommandType = adCmdStoredProc Dim parA As Parameter, parB As Parameter Set parA cmd.CreateParameter("mavtu", adChar, adParamInput, 4) cmd.Parameters.Append parA parA.Value = Mavtu.Text Set parB cmd.CreateParameter("tenvtu", adVarWChar, adParamInput, 100) cmd.Parameters.Append parB parB.Value = Tenvtu.Text Set parB cmd.CreateParameter("dvtinh", adVarWChar, adParamInput, 10) cmd.Parameters.Append parB parB.Value = Dvtinh.Text Set parB cmd.CreateParameter("phantram", adSingle, adParamInput) cmd.Parameters.Append parB parB.Value = Phantram.Text =

cmd.Execute Dim bm bm = Bang_vattu.Bookmark Bang_vattu.Requery Bang_vattu.Bookmark = bm Exit Sub Loi_nut_ghi: MsgBox Ket_noi.Errors(0).Description End Sub

BAI 41:

S dung ham tnh toan n tr.

a. Xay dng ham n tr vi ten Fn_Tong2So gom co 2 tham so vao la: so a va so b. Ham tra ve so tong cua 2 so a va b. Cai at
CREATE FUNCTION Fn_Tong2So(@a INT,@b INT) RETURNS INT AS BEGIN DECLARE @s INT SET @s = @a +@b RETURN @s END

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

b. Xay dng man hnh goi thc hien Fn_Tong2So.

Cai at
Private Sub Nut_tinh_Click() Dim cmd As New ADODB.Command Set cmd.ActiveConnection = Ket_noi cmd.CommandText = "Fn_Tong2So" cmd.CommandType = adCmdStoredProc Dim parA As Parameter, parB As Parameter, parkq As Parameter Set parkq = cmd.CreateParameter("Ret", adInteger, adParamReturnValue) cmd.Parameters.Append parkq Set parA = cmd.CreateParameter("a", adInteger, adParamInput) cmd.Parameters.Append parA parA.Value = SoA.Text Set parB = cmd.CreateParameter("b", adInteger, adParamInput) cmd.Parameters.Append parB parB.Value = SoB.Text cmd.Execute So_tong.Text = parkq End Sub

BAI 42:

S dung ham oc bang.

a. S dung ham oc bang vi ten Fn_DS_VatTuConNhap(@SoDH) a tao cau 6.2 a e liet ke SoDH, MaVTu, TenVTu, SLConNhap cua cac vat t cha nhap u. Cai at
CREATE FUNCTION Fn_TongNhap(@sodh CHAR(4),@mavtu CHAR(4)) RETURNS INT

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

AS BEGIN DECLARE @tongsl INT SELECT @tongsl = SUM(slnhap) FROM CTPNhap c INNER JOIN PNhap p ON c.sopn=p.sopn WHERE sodh=@sodh AND mavtu=@mavtu SET @tongsl = ISNULL(@tongsl,0) RETURN @tongsl END CREATE FUNCTION Fn_ConNhap(@sodh CHAR(4),@mavtu CHAR(4)) RETURNS INT AS BEGIN DECLARE @sldat INT SELECT @sldat = sldat FROM CTDonDH WHERE sodh=@sodh AND mavtu=@mavtu SET @sldat = ISNULL(@sldat,0) RETURN @sldat dbo.Fn_TongNhap(@sodh,@mavtu) END CREATE FUNCTION Fn_DS_VatTuConNhap(@sodh CHAR(4)) RETURNS TABLE AS RETURN (SELECT d.sodh, c.mavtu, tenvtu, dbo.Fn_ConNhap(d.sodh,c.mavtu) AS SLConNhap FROM DonDH d INNER JOIN CTDonDH c ON d.sodh=c.sodh INNER JOIN VatTu v ON c.mavtu=v.mavtu WHERE d.sodh=@sodh AND dbo.Fn_ConNhap(d.sodh,c.mavtu)<>0 )

b. Xay dng man hnh goi thc hien Fn_DS_VatTuConNhap theo so at hang c chon.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Cai at
Private Sub Chon_sodh_Click(Area As Integer) If Chon_sodh.SelectedItem > 0 Then Dim lenh As String lenh = "Select * From Fn_DS_VatTuConNhap('" & Chon_sodh.BoundText & "')" Set bang_chi_tiet = Doc_bang(lenh) Set Luoi_CTDonDH.DataSource = bang_chi_tiet End If End Sub

BAI 43:

S dung ham tao bang.

a. S dung ham tao bang vi ten Fn_DS_TonKho_Lech_1Thang(@NamThang) a tao cau 6.3 a e liet ke cac thong tin trong bang ton kho cua cac vat t ma thong tin ton au ky cua nam thang truyen vao khong bang thong tin ton cuoi ky cua nam thang trc. Cai at
CREATE FUNCTION Fn_Lui1Thang(@NamThang CHAR(6)) RETURNS CHAR(6) AS BEGIN DECLARE @nam INT, @thang INT SET @nam = CAST(LEFT(@NamThang,4) AS INT) SET @thang = CAST(RIGHT(@NamThang,2) AS INT) IF @thang=1 BEGIN SET @thang = 12

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

SET @nam = @nam-1 END ELSE SET @thang = @thang-1 RETURN CAST(@nam AS CHAR(4)) + REPLACE(STR(@thang,2),' ','0') END CREATE FUNCTION Fn_TonCuoi(@MaVTu CHAR(4), @NamThang CHAR(6)) RETURNS INT AS BEGIN DECLARE @Kq INT SELECT @Kq = slcuoi FROM TonKho WHERE namthang=@NamThang AND mavtu=@MaVTu SET @Kq = ISNULL(@Kq,0) RETURN @Kq END CREATE FUNCTION Fn_DS_TonKho_Lech_1Thang(@NamTha ng CHAR(6)) RETURNS @Bang TABLE ( namthang CHAR(6), mavtu CHAR(4), sldau INT, tongslnhap INT, tongslxuat INT, slcuoi INT ) AS BEGIN DECLARE @nt_lui CHAR(6) SET @nt_lui = dbo.Fn_Lui1Thang(@NamThang) INSERT INTO @Bang SELECT * FROM TonKho WHERE namthang=@NamThang AND sldau<>dbo.Fn_TonCuoi(mavtu,@nt_lui) RETURN END

b. Xay dng man hnh goi thc hien Fn_DS_TonKho_Lech_1Thang theo nam thang c chon.

Hoc phan 4 SQL Server 2000

Trang 1/29

Bai tap

Cai at
Private Sub Nut_liet_ke_Click() Dim lenh As String lenh = "Select * From Fn_DS_TonKho_Lech_1Thang('" & Chon_nam.Text & Chon_thang.Text & "')" Set bang_tonkho = Doc_bang(lenh) Set Luoi_tonkho.DataSource = bang_tonkho End Sub

Hoc phan 4 SQL Server 2000

Trang 1/29

You might also like