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

Bài giảng Cơ sở dữ liệu: Hàm do người dùng định nghĩa - ThS. Nguyễn Ngọc Quỳnh Châu

38 45 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 38
Dung lượng 284,58 KB

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

Nội dung

Bài giảng Cơ sở dữ liệu: Hàm do người dùng định nghĩa trình bày các khái niệm, các loại hàm, định nghĩa hàm vô hướng, ví dụ về hàm, định nghĩa hàm trả về bảng, khác nhau giữa hàm và thủ tục, định nghĩa view,... Mời các bạn cùng tham khảo.

Trang 1

HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA

(USER-DEFINED FUNCTION)

Trang 3

CÁC LOẠI HÀM

• Hàm vô hướng: trả về một giá trị

• Hàm thao tác trên bản ghi: trả về một bảng

Trang 4

ĐỊNH NGHĨA HÀM VÔ HƯỚNG

• Cú pháp:

Trang 5

VÍ DỤ VỀ HÀM

• Ví dụ về hàm vô hướng: viết một hàm để tính

số lượng nhân viên trong một phòng

CREATE FUNCTION Ham_Soluong_Phong ( @BienMaPhong CHAR (3) ) RETURNS int

AS

BEGIN

DECLARE @SL int;

SELECT @SL = COUNT (*) FROM NhanVien

WHERE MaPhong=@BienMaPhong ; RETURN (@SL);

END

Trang 9

• Ví dụ 2: Viết một hàm trả về ngày sinh của

một nhân viên Tham số của hàm là mã nhânviên

• Viết một thủ tục sử dụng hàm đó so sánh ngàysinh của hai nhân viên bất kỳ Nếu trùng nhauthì in ra “Hai nhân viên cùng ngày sinh”

Ngược lại thì in ra “Hai nhân vien không cùngngày sinh”

Trang 10

VÍ DỤ VỀ HÀM

• Sử dụng hàm HAM_DSPHONG:

• SELECT * FROM HAM_DSPHONG(‘QT’)

Trang 11

ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG

• Cú pháp 2

Trang 12

ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG

Ví dụ 2: sử dụng cú pháp 2 để viết lại hàm trong ví dụ 1:

CREATE FUNCTION HAM_DSPHONG (@bienmaphong

Trang 13

BÀI TẬP

• Cho CSDL như sau:

– Sinhvien (MãSV, Họ tên, Ngày sinh, Mã lớp )

– Lớp (Mã lớp, Tên lớp, Mã khóa)

Câu 1: Viết hàm để tính xem một ngày nào đó là rơi vào thứ mấy trong tuần (Gợi ý, sử dụng cấu trúc IF…ELSE hoặc cấu trúc CASE)

Câu 2: Viết hàm cho biết (mã khóa, tổng số sinh viên) của một khóa nào đó (Mã khóa >=1)

Câu 3: Viết hàm cho biết (mã khóa, tổng số sinh viên) của một khóa nào đó Trong trường hợp khóa có giá trị=0 thì cho biết (mã khóa, tổng số sinh viên) của tất cả các khóa

Trang 14

KHÁC NHAU GIỮA HÀM VÀ THỦ TỤC

• Sinh viên tự tìm hiểu

Trang 15

VIEW

Trang 16

KHÁI NIỆM

– View là bảng không chứa dữ liệu, nó chỉ là truy vấn

dữ liệu từ 1 hay nhiều bảng View được lưu thànhmột đối tượng của SQL SV

– NSD có thể áp dụng ngôn ngữ thao tác dữ liệu trêncác View giống như Table

Trang 18

Ví dụ 1: tạo View nv_kinh doanh

CREAT VIEW nv_kinhdoanh

Trang 19

Ví dụ 2: tạo View nv_tre (nhân viên dưới 35 tuổi)

CREAT VIEW nv_tre (Manv, Hoten, Tuoi)

SELECT * FROM NV_TRE

 Nếu một thuộc tính trong View được xây dựng từ một biểu thức thì bắt buộc phải đặt tên cho thuộc tính đó.

Trang 20

HAI LOẠI VIEW

• VIEW chỉ đọc (read-only view): View này chỉ dùng để xem dữ liệu

• VIEW có thể cập nhật (updatable view):

Trang 21

• Các yêu cầu để tạo view có thể cập nhật :Câu lệnh SELECT trong định nghĩa VIEW không

• Nếu câu lệnh tạo View vi phạm một trong số điều

kiện trên =>VIEW được tạo ra là VIEW chỉ đọc

Trang 22

• Tóm lược nhiều cơ sở dữ liệu vật lý vào một

cơ sở dữ liệu logic

Trang 23

TRIGGER

Trang 24

KHÁI NIỆM

• Là một stored procedure đặc biệt

• Trigger không có tham số đầu vào, đầu ra

• Trigger tự động chạy khi có một hành động liên quan đến nó xảy ra.

• Sử dụng trong việc:

– Kiểm tra dữ liệu nhập

– Tính toán, cập nhật giá trị tự động

• Các loại trigger: INSERT TRIGGER, DELETE

TRIGGER, UPDATE TRIGGER, TRIGGER tổng hợp

Trang 25

Cú pháp

CREATE TRIGGER <tên triger>

ON <tên bảng>|<tên view>

FOR | AFTER | INSTEAD OF

< INSERT [, UPDATE ] [, DELETE ]>

AS

<câu lệnh SQL>

Trang 26

PRINT ‘Ban da chen thanh cong’

Trigger này tự động được thực hiện mỗi khi có bản

ghi mới được chèn vào bảng NHANVIEN

Trang 27

PRINT ‘Ban da xoa thanh cong’

Trigger này tự động được thực hiện mỗi khi có một

hoặc nhiều bản ghi bị xóa ở bảng NHANVIEN

Trang 28

Trigger cập nhật (Update trigger): ví dụ

CREATE TRIGGER trUpNV

ON NHANVIEN

FOR UPDATE

AS

PRINT ‘Ban da cap nhat thanh cong’

Trigger này tự động được thực hiện mỗi khi có một

câu lệnh Update được thực hiện trên bảng

NHANVIEN.

Trang 30

Trigger Instead of

– cho phép cập nhật DL các bảng thông qua

view có liên kết nhiều bảng

Trang 31

Xóa, sửa trigger

Trang 32

Ứng dụng: Đảm bảo ràng buộc toàn vẹn dữ liệu

CREATE TRIGGER trDelNV

Trang 33

Một số chú ý khi dùng trigger

– Một bảng có nhiều trigger

– Mỗi một trigger có tên duy nhất

– Trong trigger thường dùng mệnh đề IF

EXISTS

Trang 34

1 Viết một trigger không cho phép thêm một

nhân viên nếu như tuổi của anh ta >60

2 Viết một trigger không cho phép cập nhật trên

bảng NHANVIEN nếu như số lượng bản ghi

được cập nhật >3

3 Viết một trigger để đảm bảo rằng lương của

nhân viên không được phép thay đổi giá trị

>1000

4 Viết một trigger để đảm bảo rằng không được

phép xóa những nhân viên là trưởng phòng

Trang 35

1 Trong CSDL QLNV, tạo một view chứa những

thông tin sau: MaNv, TenNV, MaP TenP

2 Tạo một view cho biết mức lương trung bình

của mỗi phòng

3 Sử dụng view ở câu 1để tìm xem phòngnào có

số nhân viên đông nhất

Trang 36

• CREATE

Trang 37

sp_configure 'nested trigger', 1

Create trigger casc_del

create trigger del_NV

on Nhanvien for delete

as

select * from Phong

select * from Nhanvien

Trang 38

• CSDL NHANVIEN gồm bảng:

NHANVIEN (MaNV, TenNV, Ngaysinh, Luong, MATP) PHONG (MaP, TenP, SoLuong)

Ngày đăng: 26/10/2020, 15:59

HÌNH ẢNH LIÊN QUAN

ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG - Bài giảng Cơ sở dữ liệu: Hàm do người dùng định nghĩa - ThS. Nguyễn Ngọc Quỳnh Châu
ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG (Trang 11)

TỪ KHÓA LIÊN QUAN

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

w