Chương 3 HÀM SQL

- Lý thuyết: 3 tiết

3- 1

Chương 3. Hàm SQL

- Thực hành: 2 tiết

Hàm SQL

 chương trình con thực hiện một chức năng nào đó

 trả về chỉ một giá trị

3- 2

Chương 3. Hàm SQL

3.1 Tổng quan về hàm SQL

Hàm SQL

 Phân loại

 từng dòng dữ liệu: trả về một giá trị trên một dòng

 nhóm các dòng dữ liệu: trả về một giá trị trên một nhóm dòng

3- 3

Chương 3. Hàm SQL

3.1 Tổng quan về hàm SQL

Hàm SQL

 kiểu dữ liệu số

 kiểu dữ liệu ký tự

 kiểu dữ liệu thời gian

 Các hàm chuyển đổi kiểu

3- 4

Chương 3. Hàm SQL

3.2 Các hàm trên hàng đơn

Hàm SQL

 Hàm ROUND(n[,m])

 làm tròn n đến m chư˜ số thập phân (mặc định m=0)

 m<0 thì làm tròn số bên trái dấu thập phân

3.2.1 Các hàm trên kiểu số

ROUND(4.923,1), kết quả là 4.9

ROUND(4.923,-1), kết quả là 0

ROUND(6.923,-1), kết quả là 10

3- 5

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm TRUNC(n[,m])

 lấy m chữ số tính từ chấm thập phân (m=0).

 m<0 thì cắt bỏ m chư˜ số bên trái dấu thập phân.

3.2.1 Các hàm trên kiểu số

TRUNC (4.923,1), kết quả là 4.9.

TRUNC(4.923), kết quả là 4.

TRUNC(4.923,-1), kết quả là 0

3- 6

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm CEIL(n)

 trả về số nguyên nhỏ nhất lớn hơn hoặc bằng n

3.2.1 Các hàm trên kiểu số

CEIL(4.923), kết quả là 5

 Hàm FLOOR(n)

 trả về số nguyên lớn nhất nhỏ hơn hoặc bằng n

Ví dụ

Ví dụ

3- 7

Chương 3. Hàm SQL

FLOOR(4.923), kết quả là 4

Hàm SQL

 Hàm SQRT(n)

 trả về căn bậc 2 của n, với n>=0

3.2.1 Các hàm trên kiểu số

SQRT(16), kết quả là 4

 Hàm POWER(m,n)

 trả về lũy thừa bậc n của m

Ví dụ

Ví dụ

3- 8

Chương 3. Hàm SQL

POWER(2,3), kết quả là 8

Hàm SQL

 Hàm SIGN(n)

 Nếu n<0 thì SIGN(n)= -1

 Nếu n=0 thì SIGN(n)= 0

 Nếu n>0 thì SIGN(n)= 1

3.2.1 Các hàm trên kiểu số

SIGN(1724)=1.

SIGN(0)=0.

SIGN(-1724)=-1.

3- 9

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm ABS(n)

ABS(127)=127.

ABS(-127)=127.

 Hàm MOD(m,n)

 trả về phần dư của phép chia m cho n.

3.2.1 Các hàm trên kiểu số

MOD(5,3)=2.

MOD(4,3)=1.

3- 10

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Một số hàm khác

3.2.1 Các hàm trên kiểu số

Hàm SQL LOG(m,n)

Diễn giải Cho logarit cơ số m của n.

SIN(n) COS(n)

Trả về sin của n (n tính bằng radian). Cho cosin của n (n tính bằng radian).

TAN(n)

Trả về tang của n (n tính bằng radian).

3- 11

Chương 3. Hàm SQL

Hàm SQL

 Hàm CONCAT(char1, char2)

 kết hợp của 2 chuỗi ký tự char1 và char2

3.2.2 Các hàm trên kiểu ký tự

CONCAT(‘SQL’, ‘ORACLE’), kết quả là SQLORACLE.

 Hàm INITCAP(char)

 chuỗi với ký tự đầu các từ là ký tự hoa.

Ví dụ

INITCAP(oracle), kết quả là Oracle

3- 12

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm LOWER(char)

 chuỗi ký tự viết thường

3.2.3 Các hàm trên kiểu ký tự

Ví dụ

 Hàm UPPER(char)

 chuỗi ký tự viết hoa.

LOWER(‘ORACLE’), kết quả là oracle.

Ví dụ

3- 13

Chương 3. Hàm SQL

UPPER(oracle), kết quả là ORACLE

Hàm SQL

 Hàm REPLACE(char, search [,replace])

 Thay chuỗi search có trong char bằng chuỗi replace

3.2.3 Các hàm trên kiểu ký tự

REPLACE(‘SALESMAN’, ‘MAN’, ’ ’);

Kết quả là SALES

 Hàm ASCII(char)

 ký tự ASCII của byte đầu tiên của chuỗi char. Ví dụ

ASCII(‘TOI’); kết quả là 84

3- 14

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm SUBSTR(char, m [,n])

 chuỗi con lấy từ vị trí m về bên phải n ký tự,

 nếu không chỉ định n thì lấy cho đến cuối chuỗi

3.2.3 Các hàm trên kiểu ký tự

SUBSTR(‘ORACLE’,2,4); kết quả là RACL.

SUBSTR(‘ORACLE’,2); kết quả là RACLE.

3- 15

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm INSTR(char1, char2 [,n[,m]])

 Tìm vị trí char2 trong char1 từ vị trí n, lần xuất hiện thứ m

3.2.3 Các hàm trên kiểu ký tự

INSTR(‘ACCOUNTING’,'A'); kết quả là 1.

 Hàm LENGTH(char)

 chiều dài của chuỗi char

Ví dụ

LENGTH(‘SQL COURSE’), kết quả là 10.

3- 16

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm MONTHS_BETWEEN(d1, d2)

 số tháng giữa ngày d1 và d2

3.2.3 Các hàm trên kiểu thời gian

kết

MONTHS_BETWEEN('01-01-2000','01-05-2000'); quả 5.

 Hàm ADD_MONTHS(d, n)

 ngày d sau khi thêm n tháng

Ví dụ

ADD_MONTHS('01-05-2000’, 3); kết quả là 01-08-2000 3- 17

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm NEXT_DAY(d, char)

 ngày tiếp theo ngày d có thứ chỉ bởi char

3.2.3 Các hàm trên kiểu thời gian

NEXT_DAY(‘17-11-2000’,’Friday’); kết quả là 24-11- 2000.

 Hàm LAST_DAY(d)

 ngày cuối cùng trong tháng chỉ bởi d.

Ví dụ

LAST_DAY(‘17-11-2000’); kết quả là 30

3- 18

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

Hàm SQL

Diễn giải

ROUND(date1)

Trả về ngày date1 tại thời điểm giữa trưa 12:00 AM

ROUND(date1,’Month’)

Nếu date1 nằm trong nửa tháng đầu trả về ngày đầu tiên của tháng, ngược lại sẽ trả về ngày đầu tiên của tháng sau.

ROUND(date1,’Year’)

Nếu date1 nằm trong nửa năm đầu trả về ngày đầu tiên của tháng, ngược lại sẽ trả về ngày đầu tiên của năm sau.

TRUNC(date1, ’Month’)

Trả về ngày đầu tiên của tháng chứa date1

TRUNC(date1, ’Year’)

Trả về ngày đầu tiên của năm chứa date1

3- 19

Chương 3. Hàm SQL

3.2.3 Các hàm trên kiểu thời gian

Hàm SQL

 Hàm TO_CHAR(number|date, ‘fmt’)

 Chuyển kiểu số và ngày về kiểu ký tự theo định dạng fmt

3.2.4 Các hàm chuyển đổi kiểu

TO_CHAR(‘17-11-2000’,’DD/MM’); kết quả là 17/11.

TO_CHAR(‘17-11-2005’,’MM/YY’); kết quả là 11/05.

 Hàm TO_NUMBER(char)

 Chuyển chuỗi ký tự có nội dung số sang số

TO_NUMBER(‘12345’); kết quả là 12345.

3- 20

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm TO_DATE(‘char’,’fmt’)

 Chuyển ký tự sang kiểu ngày với định dạng fmt.

3.2.4 Các hàm chuyển đổi kiểu

TO_DATE(‘17-11-2005’,’dd-mm-yy’); kết quả 17-11-05

 Hàm GREATEST(value1, value2,…)

 giá trị lớn nhất trong dãy giá trị

Ví dụ

GREATEST(12, 45, 6, 78); kết quả là 78.

3- 21

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm DECODE(Expr, Search1, Result1, Default)

 trả về giá trị result1nếu expr = search1

 trả về giá trị default nếu expr <> search1

3.2.4 Các hàm chuyển đổi kiểu

DECODE(‘SALE’, ‘SALE’, 500,0); kết quả là 500.

DECODE(‘SALE’, ‘MANAGE’, 500,0); kết quả là 0.

3- 22

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm NULLIF

3.3 Một số hàm bổ sung

 trả về giá trị NULL nếu expr1= expr2.

 trả về giá trị của expr1 nếu ngược lại

NULLIF(expr1, expr2)

NULLIF(Length(‘ORA’), Length(‘ORA’)); kết quả là NULL

NULLIF(Length(‘SQL’), Length(‘ORAC’)); kết quả 3

3- 23

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Hàm COALESCE

3.3 Một số hàm bổ sung

 trả về giá trị của tham số đầu tiên khác NULL

COALESCE(expr1, expr2, …exprn)

Giả sử v1=null; v2=null, v3=1, v4=2.

COALESCE(v1, v2, v3)=1;

COALESCE(v1, v2, v4, v3)=2;

3- 24

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Câu lệnh CASE CASE expr

3.3 Một số hàm bổ sung

WHEN comparison_expr1 THEN return_expr1 [WHEN comparison_expr2 THEN return_expr2 WHEN comparison_exprn THEN return_exprn ELSE else_expr]

 so sánh expr lần lượt với các comparison_exprx

 trả về return_expr tương ứng

3- 25

Chương 3. Hàm SQL

END

Hàm SQL

 Câu lệnh CASE

3.3 Một số hàm bổ sung

CASE LENGTH(‘SQL’)

WHEN 2 THEN “Do dai bang 2.”

WHEN 3 THEN “Do dai bang 3.”

WHEN 4 THEN “Do dai bang 4.”

ELSE “Khong thoa man.”

3- 26

Chương 3. Hàm SQL

Ví dụ

Hàm SQL

 Câu lệnh CASE

3.3 Một số hàm bổ sung

Ví dụ

CASE Job_Id WHEN ‘IT_PROG’ THEN 0.5*Sal,

WHEN ‘ST_SALE’ THEN 0.6*Sal,

WHEN ‘SA_MAN’ THEN 0.7*Sal,

ELSE Sal

END “AddSal” FROM Emp;

3- 27

Chương 3. Hàm SQL

SELECT Ename, Job_Id, Sal,

Hàm SQL

 Câu lệnh CASE

3.3 Một số hàm bổ sung

Ví dụ

CASE Job_Id WHEN ‘IT_PROG’ THEN 0.5*Sal,

WHEN ‘ST_SALE’ THEN 0.6*Sal,

WHEN ‘SA_MAN’ THEN 0.7*Sal,

ELSE Sal

END “AddSal” FROM Emp;

3- 28

Chương 3. Hàm SQL

SELECT Ename, Job_Id, Sal,

Hàm SQL

 Hàm tác động trên nhóm

Hàm SQL

Diễn giải

AVG([DISTINCT/ALL] n)

Giá trị trung bình của n, không kể trị null

COUNT([DISTINCT/ALL] expr)

Số hàng có expr khác null

MAX([DISTINCT/ALL] expr)

Giá trị lớn nhất của expr

MIN([DISTINCT/ALL] expr)

Giá trị nhỏ nhất của expr

STDDVE([DISTINCT/ALL] n)

Phương sai của n không kể trị null

SUM([DISTINCT/ALL] n)

Tổng của của n không kể trị null

VARIANCE([DISTINCT/ALL] n)

Variance của n không kể trị null

3- 29

Chương 3. Hàm SQL

3.4 Các hàm gộp nhóm dữ liệu

Hàm SQL

 Mệnh đề GROUP BY

3.4 Các hàm gộp nhóm dữ liệu

SELECT [DISTINCT ] {*, column [alias],...}

FROM table;

[WHERE condition]

[GROUP BY expr]

[HAVING condition]

3- 30

Chương 3. Hàm SQL

[ORDER BY expr/position [DESC/ASC]]

Hàm SQL

 Mệnh đề GROUP BY

 GROUP BY nhóm các dòng dữ liệu có cùng giá trị expr.

 HAVING dùng để đặt điều kiện cho nhóm dữ liệu.

3.4 Các hàm gộp nhóm dữ liệu

SELECT Job, MAX(Sal)

Kết quả

FROM Emp

JOB

MAX(SAL)

GROUP BY Job;

ANALYST PRESIDENT

3000 5000

HAVING MAX(Sal)>=3000

3- 31

Chương 3. Hàm SQL

Ví dụ

Câu lệnh SQL

 Trả lời câu hỏi phần 3.5 trong giáo trình

 Thực hành viết các câu lệnh truy vấn trong phần bài tập

 Chuẩn bị nội dung chương 4.

3- 32

Chương 3. Hàm SQL

Câu hỏi và bài tập