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àmVí dụ:
Viết hàm tính tuổi của người có năm sinh là @ns:
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
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: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:
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
Ví dụ:
Viết hàm trả về bảng các nhân viên làm việc ở phòng số 5
Hàm giá trị bảng đa câu lệnh
Cú pháp
Ví dụ:
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 VIEW
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
Phân loại VIEW
VIEW chỉ đọc (read-only view)
View này chỉ dùng để xem dữ liệuVIEW 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
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
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
Ví dụ: