Tran Huu Dang
9 min

Function và View

Nội dung:

  • Hàm người dùng định nghĩa
  • Khung nhìn View

1. Hàm người dùng định nghĩa

INFO

  • Là một đối tượng CSDL chứa các câu lệnh SQL, được biên dịch sẵn và lưu trữ trong CSDL.
  • Thực hiện một hành động như các tính toán phức tạp và trả về kết quả là một giá trị.
  • Giá trị trả về có thể là: giá trị vô hướng hoặc một bảng

So sánh với thủ tục

  • Tương tự như Stored Procedure
    Là một đối tượng CSDL chứa các câu lệnh SQL, được biên dịch sẵn và lưu trữ trong CSDL.

  • Khác với Stored Procedure
    Các hàm luôn phải trả về một giá trị, sử dụng câu lệnh RETURN
    Hàm không có tham số đầu ra
    Không được chứa các câu lệnh INSERT, UPDATE, DELETE một bảng hoặc view đang tồn tại trong CSDL
    Có thể tạo bảng, bảng tạm, biến bảng và thực hiện các câu lệnh INSERT, UPDATE, DELETE trên các bảng, bảng tạm, biến bảng vừa tạo trong thân hàm

  • Ví dụ:
    Viết hàm tính tuổi của người có năm sinh là @ns: pic1

Các loại hàm

  • Hàm giá trị vô hướng: Trả về giá trị đơn của mọi kiểu dữ liệu T-SQL
  • Hàm giá trị bảng đơn giản: Trả về bảng, là kết quả của một câu lệnh SELECT đơn giản
  • Hàm giá trị bảng nhiều câu lệnh: Trả về bảng, là kết quả của nhiều câu lệnh

Hàm giá trị vô hướng

  • Cú pháp pic1

WARNING

  • Không thể truyền tham số theo tên
  • Truyền đầy đủ các tham số theo vị trí. Kể cả tham số tùy chọn, nếu muốn sử dụng giá trị mặc định, phải đặt từ khóa DEFAULT tại đúng vị trí tham số tùy chọn đó.
  • Ví dụ 1:
    Câu lệnh tạo hàm giá trị vô hướng trả về tổng số lượng nhân viên: pic1

  • Ví dụ 2:
    Câu lệnh tạo hàm giá trị vô hướng trả về tổng số lượng nhân viên theo giới tính: pic1

Hàm giá trị bảng đơn giản

INFO

  • Hàm giá trị bảng đơn giản còn gọi là hàm giá trị bảng nội tuyến
  • Hàm giá trị bảng đơn giản có thể được dùng trong câu lệnh truy vấn thay thế cho tên bảng hoặc tên view
  • Cú pháp pic1

  • Ví dụ:
    Viết hàm trả về bảng các nhân viên làm việc ở phòng số 5 pic1

Hàm giá trị bảng đa câu lệnh

  • Cú pháp pic1

  • Ví dụ:
    pic1

Xóa nội dung một hàm

TIP

  • Cú pháp
    DROP FUNCTION [<tên schema>.]<tên hàm>[,...]

2. Lợi ích của VIEW

  • Che dấu và bảo mật dữ liệu
  • Hiển thị dữ liệu một cách tùy biến
  • Lưu trữ câu lệnh truy vấn phức tạp và thường xuyên sử dụng
  • Thực thi nhanh hơn các câu lệnh truy vấn do đã được biên dịch sẵn
  • Đảm bảo tính toàn vẹn dữ liệu

Cú pháp tạo VIEWpic1

Tên view không được trùng với tên bảng hoặc view đã tồn tại

Câu lệnh SELECT tạo VIEW không được chứa mệnh đề INTO, hoặc ORDER BY trừ khi chứa từ khóa TOP

Đặt tên cột:

  • Cột chứa giá trị được tính toán từ nhiều cột khác phải được đặt tên
  • Nếu cột không được đặt tên, tên cột sẽ được mặc định giống tên cột của bảng cơ sở
  • Ví dụ:
    Tạo view chứa 2 thông tin là tên nhân viên và tên phòng ban pic1

Phân 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

WARNING

  • Câu lệnh select không được chứa
    Mệnh đề DISTINCT hoặc TOP
    Một hàm kết tập (Aggregate function)
    Một giá trị được tính toán
    Mệnh đề GROUP BY và HAVING
    Toán tử UNION
    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

VIEW có thể cập nhật

  • Ví dụ:
    Tạo View có thể cập nhật được, hiển thị tên phòng có mã phòng 6 pic1

VIEW chỉ đọc

  • Ví dụ:
    Tạo View có thể cập nhật được, hiển thị tên phòng có mã phòng 6 pic1

Xóa và chỉnh sửa VIEW

  • Câu lệnh xóa
    DROP VIEW <tên View>

  • Câu lệnh chỉnh sửa
    pic1

  • Ví dụ: pic1