intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Minh Vũ | Ngày: | Loại File: PDF | Số trang:38

52
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: 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

  1. HÀM DO NGƯỜI DÙNG ĐỊNH NGHĨA (USER-DEFINED FUNCTION)
  2. KHÁI NIỆM • Là một đối tượng của CSDL • Có hai loại hàm: – Hàm do hệ quản trị CSDL cung cấp sẵn – Hàm do người dùng tự định nghĩa để phục vụ cho mục đích của riêng mình • Có thể sử dụng hàm trong các biểu thức tính toán.
  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
  4. ĐỊNH NGHĨA HÀM VÔ HƯỚNG • Cú pháp:
  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
  6. VÍ DỤ VỀ HÀM Sử dụng hàm: SELECT Ham_Soluong_Phong('KD'); SELECT MaPhong, count (*) FROM NhanVien GROUP BY MaPhong HAVING count(*) > Ham_Soluong_Phong('QT')
  7. ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG • Cú pháp 1: CREATE FUNCTION Tên_hàm ([tham số]) RETURNS TABLE BEGIN Các câu lệnh END
  8. ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG • Ví dụ 1: viết hàm để trả về danh sách nhân viên trong phòng. CREATE FUNCTION HAM_DSPHONG (@bienmaphong char(5)) RETURNS TABLE AS BEGIN RETURN (SELECT MANV, HOTEN, DIACHI FROM NHANVIEN WHERE MAPHONG=@bienmaphong) END
  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ân viên. • Viết một thủ tục sử dụng hàm đó so sánh ngày sinh của hai nhân viên bất kỳ. Nếu trùng nhau thì 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ùng ngày sinh”
  10. VÍ DỤ VỀ HÀM • Sử dụng hàm HAM_DSPHONG: • SELECT * FROM HAM_DSPHONG(‘QT’)
  11. ĐỊNH NGHĨA HÀM TRẢ VỀ BẢNG • Cú pháp 2
  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 char(5)) RETURNS @kq TABLE (MaNV char(10), hoten nchar(40), diachi nchar(50)) AS BEGIN INSERT INTO @kq SELECT MANV, HOTEN, DIACHI FROM NHANVIEN WHERE MAPHONG=@bienmaphong RETURN END
  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
  14. KHÁC NHAU GIỮA HÀM VÀ THỦ TỤC • Sinh viên tự tìm hiểu
  15. VIEW
  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ành một đối tượng của SQL SV – NSD có thể áp dụng ngôn ngữ thao tác dữ liệu trên các View giống như Table.
  17. ĐỊNH NGHĨA VIEW Cú pháp: CREATE VIEW [() ] AS
  18. Ví dụ 1: tạo View nv_kinh doanh CREAT VIEW nv_kinhdoanh AS SELECT Manv, Hoten, Luong FROM NHANVIEN * Sử dụng View: SELECT * FROM NV_KINHDOANH
  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) AS SELECT Manv, Hoten, Year(Getdate()) – Year(Ngaysinh) FROM NHANVIEN WHERE Year(Getdate()) – Year(Ngaysinh)
  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): – Xem dữ liệu – Có thể sử dụng câu lệnh INSERT, UPDATE, DELETE để cập nhật dữ liệu trong các bảng cơ sở qua View
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2