Tải bản đầy đủ (.ppt) (27 trang)

Chương 6 hàm SQL server 2005

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (445.65 KB, 27 trang )

Chương 6: HÀM
6.1. Giới thiệu
6.2. Hàm hệ thống
6.3. Hàm do người dùng định nghĩa

SQL Server 2005

1


6.1. Giới thiệu
• Hàm trả về một giá trị thông qua
tên hàm còn thủ tục thì không.
• Hàm được sử dụng như là một thành
phần của một biểu thức.
• Hàm có hai loại: Hàm hệ thống và
hàm do người dụng định nghĩa

SQL Server 2005

2


6.2 Hàm hệ thống
6.2.1 Hàm hệ thống trả về giá trị
đơn
6.2.2 Hàm trả về giá trị tổng hợp
6.2.3 Hàm trả về khoảng giá trị
Ranking

SQL Server 2005



3


6.2.1 Hàm hệ thống trả về giá trị
đơn

• Nhóm hàm Configuration (Cấu hình)
• Nhóm hàm Cursor (Kiểu con trỏ)
• Nhóm hàm Date and Time
• Nhóm hàm Mathematical (Toán học)
• Nhóm hàm Metadata (Siêu dữ liệu)
• Nhóm hàm Security (Bảo mật)
• Nhóm hàm String (Chuỗi)
• Nhóm hàm khác
SQL Server 2005

4


Nhóm hàm Configuration (Cấu
hình)

• Lấy thông tin về cấu hình hiện hành
của SQL Server

SQL Server 2005

5



6.2.2 Hàm trả về giá trị tổng hợp
• Dùng để tổng hợp hay
thống kê dữ liệu
• 5 Hàm cơ bản thường
được sử dụng nhiều nhất
khi khai báo phát biểu
Select với mệnh đề
Group by là Sum, Count,
Avg, Max, Min.

SQL Server 2005

6


6.2.3 Hàm trả về khoảng giá trị
Ranking

Hàm thuộc nhóm Ranking dùng để kết
hợp xếp loại tập kết quả.
Bao gồm các hàm sau:
•Rank
•Ntile
•Dense_Rank
•Row_Number

SQL Server 2005

7



Hàm Rank
•Hàm này dùng để tạo ra cột vị thứ
được sắp xếp dựa vào giá trị của một
cột hoặc sắp xếp trên từng nhóm
(PARTITION).
•Cú pháp của hàm Rank

như sau:

Rank() Over ([Partition By phân nhóm>] Order By <Cột sắp xếp>
[DESC|ASC])

SQL Server 2005

8


Hàm Rank
•Ví dụ: Hiển thị danh sách điểm thi
lần 1 học phần có mã là Tinvp. Trong
kết quả trả về có hiển thị thêm cột
xếp vị thứ dựa vào điểm thi lần 1.
SELECT DT.MASV,
HODEM,TEN,GIOITINH, DIEM,
RANK() OVER (ORDER BY DIEM DESC)
AS [VI THU]
FROM DIEMTHI DT INNER JOIN

SINHVIEN SV ON DT.MASV=SV.MASV
WHERE MAHOCPHAN='TINVP' AND
LANTHI=1
SQL Server 2005

9


Hàm Rank
•Kết quả

SQL Server 2005

10


Hàm Rank
•Ví dụ: Hiển thị danh sách điểm thi lần 1
học phần có mã là Tinvp. Kết quả trả về
hiển thị thêm cột xếp vị thứ theo từng nhóm
giới tính dựa vào điểm thi lần 1.

SELECT DT.MASV,
HODEM,TEN,GIOITINH,DIEM,
RANK() OVER (PARTITION BY
GIOITINH ORDER BY DIEM
DESC) AS
[VI THU]
FROM DIEMTHI DT INNER JOIN SINHVIEN
SV ON DT.MASV=SV.MASV

WHERE MAHOCPHAN='TINVP' AND
LANTHI=1
SQL Server 2005

11


Hàm Rank
•Kết quả

SQL Server 2005

12


Hàm Dense_Rank
•tương tự hàm Rank, tuy nhiên các
giá trị trên cột vị thứ có giá
trị
Dense_Ran
k
liên tục.

Rank

SQL Server 2005

13



Hàm Ntile
•Hàm này tương tự hàm Rank, tuy nhiên
các giá trị trên cột vị thứ được giới hạn
trong phạm vi chỉ định.
•Hàm NTILE chỉ có tác dụng chia đều số
lượng các bản ghi và đưa vào từng nhóm số.
•Ví dụ:

SELECT DT.MASV, HODEM,TEN,GIOITINH,DIEM,
NTILE(2) OVER (ORDER BY DIEM DESC) AS
[VI THU]
FROM DIEMTHI DT INNER JOIN SINHVIEN SV
ON DT.MASV=SV.MASV

SQL Server 2005

14


Hàm Ntile
•Sử dụng hàm NTILE cho từng bản ghi
trong một nhóm sẽ đưa ra các xếp loại
giống nhau.
•Ví dụ:

SELECT DT.MASV,
HODEM,TEN,GIOITINH,DIEM,
NTILE(3) OVER (PARTITION BY
GIOITINH ORDER BY DIEM
DESC) AS

[VI THU]
FROM DIEMTHI DT INNER JOIN SINHVIEN
SV ON DT.MASV=SV.MASV
SQL Server 2005

15


Hàm Row_Number
• Trả về số thứ tự của cho bản ghi
trong tập bản ghi mà phát biểu
SELECT trả về.
• Ví dụ:
SELECT DT.MASV, HODEM, TEN,
GIOITINH , DIEM,
Row_Number () OVER (ORDER BY DIEM)
AS [SO MAU TIN]
FROM DIEMTHI DT INNER JOIN SINHVIEN
SV ON DT.MASV=SV.MASV
SQL Server 2005

16


6.3 Hàm do người dùng định
nghĩa
6.3.1 Tạo hàm

6.3.2 Thay đổi hàm


SQL Server 2005

17


6.3.1 Tạo hàm
6.3.1.1 Tạo hàm trả về giá trị đơn
•Kích nút phải chuột lên mục Scalar valued Functions chọn New Scalar - valued
Function, cửa sổ Query xuất hiện cho phép bạn
soạn thảo câu lệnh T-SQL để tạo hàm. Cú pháp
tạo hàm trả về giá trị đơn như sau:
CREATE FUNCTION tên_hàm
([danh_sách_tham_số])
RETURNS (kiểu_trả_về_của_hàm)
AS
BEGIN
Khai báo biến kết quả trả về
các_câu_lệnh_của_hàm
RETURN kết quả trả về của hàm
END
SQL Server 2005

18


6.3.1.1 Tạo hàm trả về giá trị đơn
Ví dụ 1: Định nghĩa hàm tính thứ trong tuần của một giá
trị kiểu ngày

CREATE FUNCTION thu(@ngay DATETIME)

RETURNS NVARCHAR(10)
AS
BEGIN
DECLARE @st NVARCHAR(10)
SELECT @st=CASE DATEPART(DW,@ngay)
WHEN 1 THEN N'Chủ nhật'
WHEN 2 THEN N'Thứ hai'
WHEN 3 THEN N'Thứ ba'
WHEN 4 THEN N'Thứ tư'
WHEN 5 THEN N'Thứ năm'
WHEN 6 THEN N'Thứ sáu'
ELSE N'Thứ bảy'
END
RETURN (@st) /* Trị trả về của hàm */
END
SQL Server 2005

19


6.3.1.1 Tạo hàm trả về giá trị đơn
•Một hàm khi đã được định nghĩa có
thể sử dụng như các hàm do HQTCSDL
cung cấp (thông thường trước tên hàm,
bạn phải chỉ định thêm tên của người
sở hữu hàm)
•Ví dụ: Câu lệnh dưới đây sử dụng
hàm đã được định nghĩa ở ví dụ trước:
SELECT masv, hodem, ten,
dbo.thu(ngaysinh) as Thu,ngaysinh

FROM sinhvien
WHERE malop='dl01'
SQL Server 2005

20


6.3.1.2 Tạo hàm trả về dữ liệu kiểu
bảng

•Hàm nội tuyến trả về dữ liệu kiểu
bảng (Inline Table- valued
Function):
Cú pháp:
CREATE FUNCTION tên_hàm
([danh_sách_tham_số])
RETURNS TABLE
AS
RETURN (câu_lệnh_select)

SQL Server 2005

21


6.3.1.2 Tạo hàm trả về dữ liệu kiểu
bảng

•Hàm nội tuyến trả về dữ liệu kiểu
bảng:


Ví dụ: Định nghĩa hàm func_XemSV:
CREATE FUNCTION func_XemSV(@khoahoc
SMALLINT)
RETURNS TABLE
AS
RETURN(
SELECT masv,hodem,ten,ngaysinh FROM
sinhvien INNER JOIN lop ON
sinhvien.malop=lop.malop
WHERE khoahoc=@khoahoc)
SQL Server 2005

22


6.3.1.2 Tạo hàm trả về dữ liệu kiểu
bảng

•Hàm nội tuyến trả về dữ liệu kiểu
bảng:
Ví dụ: Định nghĩa hàm

func_XemSV:

Để biết danh sách các sinh viên khoá
1, bạn sử dụng câu lệnh như sau:
SELECT * FROM dbo.func_XemSV(1)

SQL Server 2005


23


6.3.1.2 Tạo hàm trả về dữ liệu kiểu
bảng

•Hàm chứa nhiều lệnh trả về dữ liệu
kiểu bảng (Multi-Statement Table-valued
Function ):
CREATE FUNCTION
tên_hàm([danh_sách_tham_số])
RETURNS @biến_bảng TABLE
định_nghĩa_bảng
AS
BEGIN
    các_câu_lệnh_trong_thân_hàm
    RETURN
END
SQL Server 2005

24


6.3.1.2 Tạo hàm trả về dữ liệu kiểu
bảng

•Hàm chứa nhiều lệnh trả về dữ liệu
kiểu bảng (Multi-Statement Table-valued
Function ):

Ví dụ: Định nghĩa hàm func_TongSV
(@khoahoc SMALLINT) như sau:
- Hiển thị makhoa, tenkhoa, tongsosv
- Nếu @khoahoc=0 thì cho biết tổng
số sinh viên hiện có (tất cả các
khóa) của mỗi khoa.
- Ngược lại Sẽ cho kết quả thống kê
tổng số sinh viên khoá @khoahoc
của mỗi khoa
SQL Server 2005

25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×