1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng cơ sở dữ liệu chương 5 ths lương thị ngọc khánh

62 316 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 62
Dung lượng 817,32 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TẠO THỦ TỤC LƯU TRỮ BẰNG SQL SERVER... GIÁ TRỊ TRẢ VỀ CỦA THAM SỐ TRONG THỦ TỤC... THỦ TỤC LƯU TRỮ - THAM SỐ GIÁ TRỊ MẶC... THỦ TỤC LƯU TRỮ - THAM SỐ GIÁ TRỊ MẶC FROM sinhvien INNER JOIN

Trang 1

CHƯƠNG 5:

LẬP TRÌNH VỚI SQL

TRANSACT-1

Trang 2

TH T C L U TR (STORE Ủ Ụ Ư Ữ

PROCEDURE)

2

Trang 4

BIẾN CỤC BỘ (TT)

DECLARE @Tên_bi n Ki u_d _li u [, ] ế ể ữ ệ

 Ki u d li u text, ntext ho c image không đ c ể ữ ệ ặ ượ

ch p nh n khi khai báo bi n ấ ậ ế

Ví d : ụ Đ khai báo các bi n l u tr giá tr t ng s ể ế ư ữ ị ổ ố

l ng đ t hàng, h tên nhà cung c p, ngày xu t ượ ặ ọ ấ ấ

hàng S d ng l nh DECLARE nh sau: ử ụ ệ ư

DECLARE @Tongsldat INT, @Hotenncc CHAR(50)

DECLARE @Ngayxh DATETIME

Trang 5

BIẾN CỤC BỘ (TT) – GÁN GIÁ TRỊ CHO BIẾN

T khóa SET hay SELECT đ ừ ượ c dùng đ gán

Trang 6

BIẾN CỤC BỘ (TT) – GÁN GIÁ TRỊ CHO BIẾN

Trang 7

BIẾN CỤC BỘ (TT) – XEM GIÁ TRỊ HIỆN HÀNH

Trang 9

th t c nủ ụ ày có th đ c dể ượ ùng chung gi a cữ ác th t c ủ ụ

khác->gi m th i gian thi t k vả ờ ế ế à th c thi cự ác th t c ủ ụ

Trang 11

TẠO THỦ TỤC LƯU TRỮ BẰNG SQL SERVER

Trang 12

t ng khi th t c đ c g i ượ ủ ụ ượ ọ

 2100 tham s c ố ó th đ c s d ng trong m t th t c l u ể ượ ử ụ ộ ủ ụ ư

Trang 14

 2 Lên danh sách nh p đi m thi môn ậ ể c s d li uơ ở ữ ệ cho

các sinh viên h c l p cọ ớ ó mã CDT002 (b sung thêm vổ ào

b ng DIEMTHI cả ác b n ghi v i c t MAMONHOC nh n ả ớ ộ ậ

giá trị CST005, c t MASV nh n giộ ậ á tr l n l t lị ầ ượ à mã các

sinh viên h c l p cọ ớ ó mã CDT002 và các c t đi m lộ ể à

Trang 15

TẠO THỦ TỤC LƯU TRỮ BẰNG T-SQL (TT)

 Theo cách thông th ng ta s vi t 2 l nh nh sau: ườ ẽ ế ệ ư

INSERT INTO monhoc

 L u ý: đây b n có cú pháp câu l nh chèn d li u vào ư ở ạ ệ ữ ệ

m t b ng có tên banga v i d li u l y t b ng có tên ộ ả ớ ữ ệ ấ ừ ả

bangb khác nh sau: ư

INSERT INTO banga (cot1, cot2)

SELECT cot1, cot2 FROM bangb

15

Đây là mã môn học, đã cho trước nên ghi cụ thể ra luôn

Trang 16

TẠO THỦ TỤC LƯU TRỮ BẰNG T-SQL (TT)

 Thay vì ph i vi t 2 câu l nh nh trên, ta có th đ nh ả ế ệ ư ể ị

nghĩa m t th t c v i các tham s sau @mamh, ộ ủ ụ ớ ố

@tenmh, @sodvht, @malop đ nh p d li u cho ể ậ ữ ệ

Trang 17

BEGIN

INSERT INTO monhoc

VALUES(@mamh,@tenmh,@sodvht)  INSERT INTO diemthi(mamh,masv)

Trang 18

 N u l i g i th t c đ c th c hi n bên trong m t th t c ế ờ ọ ủ ụ ượ ự ệ ộ ủ ụ

khác, bên trong m t trigger hay k t h p v i c ộ ế ợ ớ ác câu l nh ệ

 Th t c a c ứ ự ủ ác đ i s đ c truy n cho th t c c ố ố ượ ề ủ ụ ó th ể

không c n ph i tuân theo th t c a c ầ ả ứ ự ủ ác tham s nh khi ố ư

đ nh nghĩa th t c n u t t c c ị ủ ụ ế ấ ả ác đ i s đ c vi t d i ố ố ượ ế ướ

Trang 19

VD SỬ DỤNG BIẾN TRONG THỦ TỤC:

CREATE PROC sp_Vidu(@malop1 CHAR(4),@malop2

CHAR(4))

AS

DECLARE @tenlop1 NVARCHAR(30)

DECLARE @namnhaphoc1 INT

DECLARE @tenlop2 NVARCHAR(30)

DECLARE @namnhaphoc2 INT

SELECT @tenlop1=tenlop,@namnhaphoc1=namnhaphoc

FROM lop WHERE malop=@malop1

SELECT @tenlop2=tenlop, @namnhaphoc2=namnhaphoc

FROM lop WHERE malop=@malop2

 PRINT @tenlop1+' nhap hoc nam '+str(@namnhaphoc1)

print @tenlop2+' nhap hoc nam '+str(@namnhaphoc2)

Trang 20

GIÁ TRỊ TRẢ VỀ CỦA THAM SỐ TRONG THỦ

TỤC

 Tr ng h p c n gi l i giá tr c a đ i s sau khi k t thúc ườ ợ ầ ữ ạ ị ủ ố ố ế

th t c, khai báo tham s c a th t c theo cú pháp: ủ ụ ố ủ ủ ụ

@tên_tham_s ki u_d _li u OUTPUT ố ể ữ ệ

 Ho c: ặ

@tên_tham_s ki u_d _li u OUT ố ể ữ ệ

 Trong l i g i th t c, sau đ i s đ c truy n cho th t c, ờ ọ ủ ụ ố ố ượ ề ủ ụ

cũng ph i ch đ nh thêm t khoá OUTPUT (ho c OUT) ả ỉ ị ừ ặ

CREATE PROCEDURE sp_Conghaiso(

Trang 21

GIÁ TRỊ TRẢ VỀ CỦA THAM SỐ TRONG THỦ TỤC

Trang 22

THỦ TỤC LƯU TRỮ - THAM SỐ GIÁ TRỊ MẶC

Trang 23

THỦ TỤC LƯU TRỮ - THAM SỐ GIÁ TRỊ MẶC

FROM sinhvien INNER JOIN lop

ON sinhvien.malop=lop.malop

WHERE noisinh=@noisinh

ELSE

SELECT hodem,tenFROM sinhvien INNER JOIN lop

ON sinhvien.malop=lop.malop WHERE noisinh=@noisinh AND

tenlop=@tenlop END

Trang 24

THỦ TỤC LƯU TRỮ - THAM SỐ GIÁ TRỊ MẶC ĐỊNH

 Cho bi t h tên c a các sinh viên sinh t i ế ọ ủ ạ Ngh An ệ :

 sp_testDefault @noisinh=N'Ngh An‘ệ

 Cho bi t h tên c a các sinh viên l p ế ọ ủ ớ Tin K26 sinh

Trang 25

THỦ TỤC LƯU TRỮ - BIÊN DỊCH LẠI THỦ

Trang 26

THỦ TỤC LƯU TRỮ - THAY ĐỔI THỦ TỤC

Trang 29

 Ch rõ ỉ WITH RECOMPILE v i l nớ ệ EXECUTE

 Câu l nh ALTER PROCEDURE đ c s d ng đ ệ ượ ử ụ ể

Trang 30

HÀM (FUNCTION)

30

Trang 33

 Các hàm thao tác v i t p b n ghi có th đ c ớ ậ ả ể ượ

dùng thay cho tên các b ng trong SQL ả

 Các hàm t p h p tính toán cho ra k t qu là m t ậ ợ ế ả ộ

giá tr đ n nh t (ví d tính t ng hay trung bình) ị ơ ấ ụ ổ

 Các hàm vô h ng thao tác trên m t giá tr và tr ướ ộ ị ả

v m t giá tr Các hàm này có th đ c dùng ề ộ ị ể ượ

Trang 34

HÀM – ĐỊNH NGHĨA HÀM

 CREATE FUNCTION tên_hàm ([danh_sách_tham_s ]) ố

RETURNS (ki u_tr _v _c a_hàm)ể ả ề ủ

AS

BEGIN các_câu_l nh_c a_hàmệ ủ

Trang 35

SELECT @st=CASE DATEPART(DW,@ngay)

WHEN 1 THEN 'Chu nh t' ậ

WHEN 2 THEN 'Th hai' ứ

WHEN 3 THEN 'Th ba' ứ

WHEN 4 THEN 'Th t ' ứ ư

WHEN 5 THEN 'Th năm' ứ

WHEN 6 THEN 'Th sáu' ứ

Trang 37

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

KIỂU BẢNG

([danh_sách_tham_số]) RETURNS TABLE

 Trong ph n thân c a hàm ch có duy nh t m t câu l nh ầ ủ ỉ ấ ộ ệ

RETURN xác đ nh giá tr tr v c a hàm thông qua duy ị ị ả ề ủ

nh t m t câu l nh SELECT (không s d ng b t kỳ câu ấ ộ ệ ử ụ ấ

l nh nào khác trong ph n thân c a hàm).ệ ầ ủ

Trang 38

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

KIỂU BẢNG (TT)

 Vd: đ nh nghĩa hàm xemsv ị

CREATE FUNCTION func_XemSV(@khoa

SMALLINT) RETURNS TABLE

AS

RETURN(SELECT masv,hodem,ten,ngaysinh FROM sinhvien INNER JOIN lop

Trang 39

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

Trang 40

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

Trang 41

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

FROM (khoa INNER JOIN lop

ON khoa.makhoa=lop.makhoa) INNER JOIN sinhvien

Trang 42

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

KIỂU BẢNG (TT)

INSERT INTO @bangthongke

SELECT khoa.makhoa,tenkhoa,COUNT(masv) FROM (khoa INNER JOIN lop

ON khoa.makhoa=lop.makhoa)

INNER JOIN sinhvien

ON lop.malop=sinhvien.malop WHERE khoa=@khoa

Trang 43

HÀM – HÀM VỚI GIÁ TRỊ TRẢ VỀ LÀ DỮ LIỆU

KIỂU BẢNG (TT)

 Câu l nh: ệ

SELECT * FROM dbo.func_TongSV(25)

 S cho k t qu th ng kê t ng s sinh viên khoá 25 c a ẽ ế ả ố ổ ố ủ

m i khoa:ỗ

 Còn câu l nh: ệ

SELECT * FROM dbo.func_TongSV(0)

 Cho ta bi t t ng s sinh viên hi n có (t t c các khoá) ế ổ ố ệ ấ ả

Trang 44

TRIGGER

44

Trang 45

TRIGGER – TRIGGER LÀ GÌ?

 C u trúc g n gi ng nh m t th t c n i t i nh ng ấ ầ ố ư ộ ủ ụ ộ ạ ư

 Không có tham s đ u vào và đ u raố ầ ầ

 Ph i đ c liên k t v i m t b ng/ b ng o trong CSDLả ượ ế ớ ộ ả ả ả

Trang 46

CÁC XỬ LÝ BÊN TRONG TRIGGER

Trang 47

CÁC HẠN CHẾ TRÊN TRIGGER

 Không đ c t o và tham chi u b ng t m ượ ạ ế ả ạ

 Không t o hay thay đ i, xoá c u trúc các đ i t ng ạ ổ ấ ố ượ

Trang 48

CÁC LOạI TRIGGER

 Có 2 lo i trigger: ạ

 Trigger thông th ng: AFTER (FOR) triggerườ

 Ch y sau các hành đ ng ki m tra d li u c a các Rule ạ ộ ể ữ ệ ủ

Trang 49

CÁC BẢNG TRUNG GIAN INSERTED VÀ

Trang 50

LÀM VI C V I TRIGGER Ệ Ớ

50

Trang 51

TẠO MỚI TRIGGER

 Trigger có th đ c t o b ng câu l nh ho c b ng ể ượ ạ ằ ệ ặ ằ

SQL Server Management Studio

 Trong c hai tr ng h p, câu l nh CREATE ả ườ ợ ệ

TRIGGER đ c s d ng đ t o ra trigger ượ ử ụ ể ạ

CREATE TRIGGER Tên_Trigger ON Tên_bảng

{ [ INSTEAD OF ] | [ FOR | AFTER ] }

{ [ INSERT [, UPDATE [,DELETE ] ] ] }

Trang 52

MÔ TẢ

 Tên b ng ả

 Tên b ng mà trigger t o m i s liên k tả ạ ớ ẽ ế

 INSTEAD OF: ch đ nh đây là trigger lo i instead of ỉ ị ạ

trigger

 M i b ng ch có quy n t o m t instead of trigger cho ỗ ả ỉ ề ạ ộ

m t hành đ ng c p nh tộ ộ ậ ậ

 FOR ho c AFTER ặ

 N u t o trigger thông th ngế ạ ườ

 INSERT, UPDATE, DELETE

Trang 54

SỬA NỘI DUNG TRIGGER

 S a n i dung ử ộ

ALTER TRIGGER Tên_Trigger ON Tên_bảng

FOR INSERT [, UPDATE [,DELETE ]]

Trang 55

TRIGGER LỒNG NHAU

 Trigger có th l ng nhau ể ồ

 Hành đ ng c p nh t ộ ậ ậ  Trigger  C p nh t b ng khác ậ ậ ả

 Trigger trên b ng t ng ngả ươ ứ

 Instead Of trigger không phát sinh l i trên chính b ng ạ ả

 C u hình cho phép trigger l ng nhau ấ ồ

EXEC sp_configure 'nested triggers', [0 | 1]

Trang 56

TRIGGER - KI M TRA RÀNG BU C Ể Ộ

D LI U Ữ Ệ

56

Trang 57

KHI THÊM MỚI MẪU TIN

 Th ng dùng đ ki m tra ườ ể ể

 Khóa ngo i, Mi n giá tr , Liên thu c tính trong cùng ạ ề ị ộ

m t b ngộ ả

 Liên thu c tính c a nhi u b ng khác nhau ộ ủ ề ả

 3 lo i đ u tiên, ch dùng trigger n u mu n cung c p ạ ầ ỉ ế ố ấ

các báo l i c th b ng ti ng Vi t ỗ ụ ể ằ ế ệ

 N u đã khai báo các ràng bu c này b ng constraintế ộ ằ

 Các c u trúc l nh th ng dùng khi ki m tra ấ ệ ườ ể

Trang 58

KHI HỦY BỎ MẪU TIN

 T ng t , ki m tra các ràng bu c nh trigger ươ ự ể ộ ư

INSERT

 Nên ki m tra ràng bu c khoá ngo i ể ộ ạ

 Thông th ng ràng bu c này d n đ n vi c ph i c p nh t ườ ộ ẫ ế ệ ả ậ ậ

Trang 59

KHI SỬA ĐỔI MẪU TIN

 T ng t , ki m tra các ràng bu c nh trigger ươ ự ể ộ ư

Trang 60

 H y b d li u do quan h khoá ngo iủ ỏ ữ ệ ệ ạ

 Tính l i các c t 'tính toán' trong các b ng liên quanạ ộ ả

 V trí th c hi n ị ự ệ

 Trong cùng trigger ki m tra ràng bu c đã đ nh nghĩaể ộ ị

 Sau khi ki m tra d li u đã h p l (tho mãn các ràng ể ữ ệ ợ ệ ả

Trang 62

VÍ DỤ

 T o b ng o sau ạ ả ả

Select D.SoDH, NgayDH, MaNhaCC, V.MaVTu, TenVTu,

SoLuong, DonGia From CTDONDH CT, DONDH D, VATTU

V Where CT.SoDH = D.SoDH And CT.MaVTu = V.MaVTu

CREATE TRIGGER tg_vw_CTDONDH_BI

AS

Insert Into DONDH Select SoDH, NgayDH, MaNhaCC

From Inserted Where SoDH Not In (Select SoDH

From DonDH)

Insert Into VATTU(MaVTu, TenVTu) Select MaVTu,

TenVTu From Inserted Where MaVTu Not In (Select

MaVTu From VATTU)

Insert Into CTDONDH Select SoDH, MaVTu, SoLuong,

DonGia From Inserted

Ngày đăng: 03/12/2015, 01:03

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm