Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung

I. Thao tác CSDL (tạo, sửa, xoá, thêm dữ liệu)

II. Các câu truy vấn: Select, Insert, Update,

Delete

III. Truy vấn lồng, gom nhóm, điều kiện gom

nhóm

IV. Các hàm xử lý dữ liệu

V. Bài tập thực hành

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 1

Trang 1

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 2

Trang 2

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 3

Trang 3

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 4

Trang 4

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 5

Trang 5

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 6

Trang 6

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 7

Trang 7

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 8

Trang 8

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 9

Trang 9

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 67 trang xuanhieu 7720
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung

Bài giảng Hệ quản trị cơ sở dữ liệu (Oracle) - Chương 3: Truy vấn SQL - Nguyễn Thị Mỹ Dung
] LIKE: so sánh chuỗi 
  BETWEEN AND: so sánh trong khoảng 
  IS [NOT] NULL: tìm các bộ là (không) rỗng. 
  [NOT] IN: tìm trong/ ngoài danh sách 
 - Các ký tự so sánh đại diện đối với chuỗi: ‘%’ (nhiều 
ký tự), ‘_’ (một ký tự). 
 23 
 Truy vấn Select (tt) 
 Select nhiều bảng 
 SELECT * | 
 FROM [bídanh1] 
 [bídanh2] ON () 
 [WHERE[AND|OR] 
 Trong đó : 
 JOIN: Kết nối trong với cột chỉ định 
 LEFT OUTER JOIN: kết trái 
 RIGHT OUTER JOIN: kết phải 
 FULL OUTER JOIN: kết đầy đủ 
 NATURAL JOIN: kết tự nhiên 
 CROSS JOIN: kết liên bảng cho phép kết tất 
cả các bộ có thể có (tương tự phép kết tích đề-các), khi 
đó không cần bất kỳ điều kiện kết nối nào. 
 24 
 Truy vấn Select (tt) 
 Select trên tập hợp 
 UNION [ALL]() | INTERSECT () | MINUS(-) 
 SELECT 
 FROM 
 [WHERE ] 
 UNION | [Intersect] | [Minus] 
 SELECT 
 FROM 
 [WHERE ] 
 25 
 Bài tập select 
1. In ra mã số, họ tên của tất cả sinh viên 
2. In ra mã số, họ tên của tất cả sinh viên từ 30 tuổi trở 
 lên. 
3. Tìm họ tên sinh viên thực hiện tên đề tài, kết quả từ 
 9 trở lên. 
4. Tìm họ tên của tất cả sinh viên thực hiện đề tài (có 
 thể có sinh viên không thực hiện đề tài) gồm, họ tên 
 sinh viên, mã đề tài, kết quả. 
5. Tìm tất cả họ tên chủ nhiệm và sinh viên 
6. Tìm tất cả MASV có quê quán khác với nơi áp dụng 
 đề tài. 
7. Xóa tất cả những sinh viên chưa đăng ký đề tài nào. 
 26 
 Truy vấn Select (tt) 
 3. Update 
 UPDATE 
 SET = ,, 
 = , 
 [FROM ] 
 [WHERE ] 
Ví dụ: 
 UPDATE SINHVIEN 
 SET HOCLUC = 6.2, NAMSINH = 1991 
 WHERE MASV = ‘SV006’ 
 27 
 Truy vấn Select (tt) 
 4. Delete 
 Dạng 1: Xóa một số bộ từ bảng 
 DELETE FROM 
 -- Nếu đk có trong bảng khác 
 [FROM ] 
 [WHERE ] 
 Dạng 2: Xóa tất cả các bộ từ bảng 
 TRUNCATE TABLE 
 VD: Xóa những môn học dưới 20 tiết 
 DELETE FROM MON 
 WHERE SOTIET < 20 
 28 
 Delete (tt) 
 Lưu ý: 
 - Câu lệnh Delete sẽ xóa tất cả dữ liệu trên 
bảng FROM gần nó nhất. 
 - Nếu có nhiều điều kiện kết hợp nhiều bảng 
phải sử dụng truy vấn lồng. 
 VD: Xoá những sinh viên có học lực dưới 5 và kết 
quả thực hiện đề tài < 5. 
 DELETE FROM SINHVIEN 
 WHERE EXISTS (SELECT MASV FROM SVDT 
 WHERE SINHVIEN.MASV = SVDT.MASV AND 
 HOCLUC < 5 AND KETQUA < 5); 
 29 
 Truy vấn Select (tt) 
 Nhận xét: 
 - Các lệnh UPDATE, DELETE có thể gây ra vi 
phạm RBTV (không cho sửa, xóa, hoặc xóa luôn 
các dòng dữ liệu tham chiếu hoặc dữ liệu tham 
chiếu sẽ là Null). 
 - Điều kiện trong mệnh đề WHERE sẽ được 
thực hiện cho các dòng thỏa điều kiện, nếu không 
có mệnh đề WHERE toàn bộ bảng sẽ có ảnh hưởng. 
 - Tránh vi phạm RBTV khi xóa, nên xóa các dữ 
liệu bảng nhiều trước, sau đó xóa bảng một. 
 30 
 Bài tập Select 
 Tìm tên và địa chỉ liên lạc các chủ thầu thi công 
công trình ở Cần Thơ 
CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
 TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, 
 NGAY_BD) 
CHUTHAU (TEN_THAU, TEL, DCHI_THAU) 
SQL: 
Select TEN_THAU, DCHI_THAU 
From CGTRINH CT , CHUTHAU T 
Where CT.TEN_THAU = T.TEN_THAU and 
 TINH_THANH = ‘Cần Thơ '; 
 31 
 Bài tập Select (tt) 
 1. Tìm tên và địa chỉ liên lạc của các chủ thầu thi 
công công trình ở Cần Thơ do kiến trúc sư Lê Kim 
Dung thiết kế. 
 THIETKE (HOTEN_KTS, STT_CTR, THU_LAO) 
CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, 
TEN_THAU, NGAY_BD) 
 CHUTHAU (TEN_THAU, TEL, DCHI_THAU) 
 SQL: ??? 
 32 
 Bài tập Select (tt) 
 2. Tìm nơi tốt nghiệp của kts thiết kế Khách sạn 
Quốc tế Cần Thơ? 
 KTRUCSU (HOTEN_KTS, NAMS_KTS, PHAI, 
NOI_TN, DCHI_LL_KTS) 
 THIETKE (HOTEN_KTS, STT_CTR, THU_LAO) 
 CGTRINH (STT_CTR, TEN_CTR, 
DIACHI_CTR, TINH_THANH, KINH_PHI, 
TEN_CHU, TEN_THAU, NGAY_BD) 
 SQL: ??? 
 33 
 Bài tập Select (tt) 
 3. Tìm tên, năm sinh, năm vào nghề của công nhân 
có chuyên môn hàn hoặc điện tham gia công trình của 
chủ thầu Lê Văn Sơn? 
 CONGNHAN (HOTEN_CN, NAMS_CN, 
NAM_VAO_N, CH_MON) 
 THAMGIA (HOTEN_CN, STT_CTR, NGAY_TGIA, 
SO_NGAY) 
 CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, 
NGAY_BD) 
 SQL??? 
 34 
 Bài tập Select (tt) 
 4. Tìm tên công nhân tham gia công trình Khách 
sạn Quốc tế Cần Thơ ở TP. Cần Thơ trong thời gian 
từ 15/12/1994 đến 31/12/1994? 
 THAMGIA (HOTEN_CN, STT_CTR, 
NGAY_TGIA, SO_NGAY) 
 CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, 
NGAY_BD) 
 SQL??? 
 35 
 Bài tập Select (tt) 
 5. Tìm tên và địa chỉ công trình mà công nhân 
Nguyễn Hồng Vân tham gia vào ngày 18/12/1994? 
 THAMGIA (HOTEN_CN, STT_CTR, 
NGAY_TGIA, SO_NGAY) 
 CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, 
NGAY_BD) 
 SQL??? 
 36 
 Bài tập Select (tt) 
 6. Tìm tên và năm sinh của kiến trúc sư tốt 
nghiệp ở tp HCM và thiết kế ít nhất 1 công trình có 
kinh phí >400? 
 KTRUCSU (HOTEN_KTS, NAMS_KTS, PHAI, 
NOI_TN, DCHI_LL_KTS) 
 THIETKE (HOTEN_KTS, STT_CTR, THU_LAO) 
 CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, TEN_THAU, 
NGAY_BD) 
 SQL??? 
 37 
 III. Truy vấn lồng 
 1. Truy vấn lồng 
 Truy vấn con là một câu lệnh SELECT được lồng 
vào bên trong một câu lệnh SELECT, INSERT, 
UPDATE, DELETE hoặc bên trong một truy vấn khác. 
 Cú pháp: 
 SELECT [ALL | DISTINCT] 
 FROM 
 WHERE AND | OR 
 (SELECT FROM 
 [WHERE ]) 
 38 
 Truy vấn lồng (tt) 
 Mục đích sử dụng: 
–Điều kiện tìm kiếm lấy từ kết quả của 
 câu select khác 
– Giúp trả lời các câu hỏi 
 • Tìm dự án thi công dài nhất? 
 • Tìm kiến trúc sư có thù lao cao nhất? 
 • Tìm các tác giả có nhiều bài viết nhất? 
 39 
 TRUY VẤN CON LỒNG NHAU (tt) 
 a. Sử dụng truy vấn con với toán tử IN 
 Khi cần thực hiện phép kiểm tra giá trị của một 
biểu thức có xuất hiện (không xuất hiện) trong tập 
các giá trị của truy vấn con, ta có thể sử dụng toán 
tử IN (NOT IN) như sau: 
 WHERE [NOT] IN 
() 
 Ví dụ: Tìm những sinh viên không thực hiện đề tài 
 SELECT HOTENSV, HOCLUC 
 FROM SINHVIEN 
 WHERE MASV NOT IN 
 (SELECT MASV FROM SV_DT) 
 40 
 TRUY VẤN CON LỒNG NHAU (tt) 
 b. Truy vấn con với EXISTS 
 Lượng từ EXISTS (NOT EXISTS) để kiểm tra xem 
một truy vấn con có trả về dòng kết quả nào hay không 
được sử dụng trong truy vấn con dưới dạng: 
 WHERE [NOT] EXISTS () 
 Ví dụ: cho biết họ tên của những sinh viên hiện chưa 
có đăng ký đề tài nào 
 SELECT hotensv 
 FROM SINHVIEN 
 WHERE NOT EXISTS (SELECT masv -- * 
 FROM SVDT 
 WHERE sinhvien.masv=svdt.masv) 
 41 
 TRUY VẤN CON LỒNG NHAU (tt) 
 c. Truy vấn con với mệnh đề HAVING 
 Một truy vấn con có thể được sử dụng trong mệnh 
đề HAVING của một truy vấn khác. Kết quả của truy vấn 
con được sử dụng để tạo điều kiện đối với các hàm gộp. 
 Ví dụ: Cho biết mã, tên và trung bình điểm thi của 
các môn học có trung bình lớn hơn trung bình điểm của 
tất cả các môn học. 
 SELECT KETQUA.MAMH,TENMH, AVG(DIEM) 
 FROM KETQUA,MONHOC 
 WHERE KETQUA.MAMH = MON.MAMH 
 GROUP BY KETQUA.MAMH,TENMH 
 HAVING AVG(DIEM) > --[All | Any| Some] 
 (SELECT AVG(DIEM) FROM KETQUA) 
 42 
TRUY VẤN CON LỒNG NHAU (tt) 
 d. Thực hiện phép chia với truy vấn lồng nhau 
 Sử dụng toán tử NOT EXISTS để thực hiện: 
 Cú pháp: 
 SELECT * 
 FROM R 
 WHERE NOT EXISTS (SELECT * 
 FROM S 
 WHERE NOT EXISTS (SELECT * 
 FROM R_S 
 WHERE R_S.C1 = S.C1 AND 
 R_S.C2 = R.C2)) 
 43 
 Phép chia với truy vấn lồng nhau (tt) 
 Ví dụ: Tìm thông tin sinh viên thực hiện tất cả các 
đề tài 
 SELECT * 
 FROM SINHVIEN 
 WHERE NOT EXISTS (SELECT * 
 FROM DETAI 
 WHERE NOT EXISTS (SELECT * 
 FROM SVDT 
 WHERE SVDT.MADT = DETAI.MADT 
 AND 
 SVDT.MASV = SINHVIEN.MASV)) 
 44 
 Truy vấn Select (tt) 
 2. Gom nhóm Group by 
 Tạo bảng tạm 
 WITH AS () 
 [, AS () [,]] 
 SELECT  
 FROM  
 WHERE ; 
 Mục đích: đơn giản trong sử dụng lại nhiều lần cùng 
một câu truy vấn trong select tổng hợp. 
 WITH t1 AS (select * from sinhvien) 
 Select * from t1 
 Lưu ý: các bảng tạm chỉ có ý nghĩa trong câu truy 
vấn ngay sau đó 
 45 
 Truy vấn lồng 
 Các hàm thống kê 
 Cú pháp: 
 SELECT [,] 
 FROM 
 [WHERE ] 
 [GROUP BY ] 
 [HAVING ] 
 Các hàm kết tập bao gồm: SUM, MAX, MIN, AVG 
và COUNT. 
 Đặt lại tên trường: Trong một số trường hợp tên 
trường của kết quả truy vấn không phù hợp ta cần đặt 
lại tên trường 
 Cú pháp: AS 
 46 
 Hàm thống kê (tt) 
 Cách sử dụng các hàm: 
 a. Hàm SUM (): Trả về tổng giá trị 
của tất cả các dòng của một trường kiểu số 
 Ví dụ: Tính tổng kinh phí của tất cả các đề tài 
 SELECT SUM (Kinhphi) as Tong_KP 
 FROM Detai; 
 b. Hàm MAX (): Trả về giá trị lớn 
nhất trong tất cả các dòng của một trường 
 Ví dụ: Tìm kinh phí lớn nhất của tất cả các đề tài 
 SELECT MAX(Kinhphi) AS KP_MAX 
 FROM Detai 
 47 
 Cách sử dụng hàm (tt) 
 c. Hàm MIN (): Trả về giá trị nhỏ 
nhất trong tất cả các dòng của một trường 
 Ví dụ: Tìm kinh phí nhỏ nhất của tất cả các đề tài 
 SELECT MIN(Kinhphi) AS KP_MIN 
 FROM Detai 
 d. Hàm AVG (): Trả về giá trị 
trung bình cộng của tất cả các dòng một trường kiểu 
số 
 Ví dụ: Tính trung bình cộng kinh phí của tất cả 
các đề tài 
 SELECT AVG(Kinhphi) AS TBC_KP 
 FROM Detai 
 48 
 Cách sử dụng hàm (tt) 
 e. Hàm COUNT (): Đếm các dòng 
trong bảng theo một hoặc một số trường nào đó 
 Ví dụ 1: In ra số lượng đề tài mà thầy Lê Đức Phúc 
làm chủ nhiệm 
 SELECT COUNT(MaDT) AS So_DT 
 FROM Detai 
 WHERE Chunhiem = ‘Lê Đức Phúc’ 
 Ví dụ 2: In ra họ tên của các giáo viên chủ nhiệm từ 
2 đề tài trở lên 
 SELECT Chunhiem, COUNT(MaDT) AS SoLG 
 FROM Detai 
 GROUP BY Chunhiem 
 HAVING COUNT(MaDT) >= 2 
 49 
 Gom nhóm (tt) 
 Group by trên nhóm 
 SELECT , <hàmkếttập 
 ()> 
 FROM 
 [ WHERE ] 
 GROUP BY 
 HAVING 
 50 
 Bài tập Group by 
 1. Tìm tổng kinh phí của tất cả các công trình 
theo từng chủ thầu 
 2. Họ tên KTS có tổng thù lao thiết kế công trình 
lớn hơn 25 triệu 
 3. Số lượng KTS có tổng thù lao thiết kế công 
trình lớn hơn 25 triệu 
 4. Tìm tên, địa chỉ công trình có nhiều công nhân 
nhất 
 51 
 GROUP BY (tt) 
 1. Tìm tổng kinh phí của tất cả các công trình 
theo từng chủ thầu 
CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
TINH_THANH, KINH_PHI, TEN_CHU, 
TEN_THAU, NGAY_BD) 
 Select TEN_THAU, sum (KINH_PHI) As 
 TongKP 
 From CGTRINH 
 Group by TEN_THAU; 
 52 
 GROUP BY (tt) 
 2. Họ tên KTS có tổng thù lao thiết kế công 
 trình lớn hơn 25 triệu 
THIETKE (HOTEN_KTS, STT_CTR, THU_LAO) 
 Select HOTEN_KTS, sum (THU_LAO) As 
 TongTL 
 From THIETKE 
 Group by HOTEN_KTS 
 Having sum (THU_LAO) > 25; 
 53 
 GROUP BY (tt) 
 3. Số lượng KTS có tổng thù lao thiết kế công 
 trình lớn hơn 25 triệu 
 THIETKE (HOTEN_KTS, STT_CTR, THU_LAO) 
Select count(*) As Solg_KTS 
From (Select HOTEN_KTS, sum (THU_LAO) 
 As TongTL 
 From THIETKE Group by HOTEN_KTS 
 Having sum (THU_LAO) > 25); 
 54 
 GROUP BY (tt) 
 4. Tìm tên, địa chỉ công trình có nhiều công 
 nhân nhất 
 THAMGIA (HOTEN_CN, STT_CTR, NGAY_TGIA, 
 SO_NGAY) 
 CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, 
 TINH_THANH, KINH_PHI, TEN_CHU, 
 TEN_THAU, NGAY_BD) 
with t1 as ( 
 Select STT_CTR, count(*) As TongSoCN 
 From THAMGIA 
 Group by STT_CTR) 
 55 
 GROUP BY (tt) 
with t1 as ( 
Select STT_CTR, count (*) As TongSoCN 
From THAMGIA 
Group by STT_CTR) 
Select TEN_CTR, DIACHI_CTR, TongSoCN 
From t1 a, CGTRINH b 
Where a.STT_CTR = b.STT_CTR and 
 TongSoCN = (Select Max (TongSoCN) 
 From t1 ); 
 56 
 IV. Các hàm xử lý dữ liệu 
 1. LENGTH (): Trả về chiều dài chuỗi 
 Select LENGTH ('lop DHCNTT') LEN 
 From Dual -- len = 10 
 2. INSTR(, , 
 ,) 
 Tìm vị trí chuỗi b trong chuỗi a bắt đầu từ vị trí n, 
 lần xuất hiện thứ m. 
 n<0: tìm từ phải sang trái 
 Select INSTR ('CORORATE FLOOR','OR',3,2) 
 From Dual -- vị trí 13 
 57 
 Các hàm xử lý dữ liệu (tt) 
 3. SUBSTR (, , 
 ) 
 Cắt lấy chuỗi con của chuỗi a, lấy từ vị trí n về 
 phải m ký tự, nếu không chỉ m thì lấy cho đến 
 cuối chuỗi . 
 n<0: vị trí cắt đếm từ phải sang trái 
 Select SUBSTR('ORACLE',1,3) Substring 
 From Dual --ORA 
 4. CONCAT (,): Nối 2 chuỗi a, b 
 Select CONCAT ('Lop DHCNTT',' Khoa SP Toan-
Tin') Substring 
 From Dual -- Lop DHCNTT Khoa SP Toan-Tin 
 58 
 Các hàm xử lý dữ liệu (tt) 
 5. SUBOWER/UPPER/INITCAPSTR () 
  Chuyển chuỗi thành chuỗi viết thường /hoa /ký 
 tự đầu các từ viết hoa. 
6. LTRIM/RTRIM(, ) 
  Loại bỏ chuỗi b ở bên trái/ phải chuỗi a 
 Select LTRIM(‘khoa su pham toan - tin’, ’khoa’) 
 From Dual; -- su pham toan - tin 
 Select RTRIM(‘LAST WORDx’, ’xy’) 
 FROM Dual; -- LAST WORD 
 59 
 Các hàm xử lý dữ liệu (tt) 
7. REPLACE (chuỗi a, chuỗi b [,chuỗi c]) 
 Thay tất cả các chuỗi b có trong chuỗi a bằng 
 chuỗi c 
SELECT JOB, REPLACE (JOB, ‘SALESMAN’, 
 ‘SALESPERSON’) 
FROM EMP 
WHERE DEPTNO =30 OR DEPTNO =20; 
 60 
 Các hàm xử lý dữ liệu (tt) 
 8. SYSDATE(chuỗi a, chuỗi b [,chuỗi c]) 
  Hàm lấy ngày tháng hiện hành của hệ thống 
 SELECT SYSDATE FROM DUAL 
 9. EXTRACT (YEAR|MONTH|DAY FROM <chuỗi 
ngày>) Tách lấy năm|tháng|ngày của 
 Select EXTRACT(Month FROM DATE 
 ‘2001-05-07’) 
 FROM Dual; -- 5 
 Select EXTRACT(DAY FROM Sysdate) 
 FROM Dual; 
 61 
 Các hàm xử lý dữ liệu (tt) 
10. MONTHS_BETWEEN(, ) 
 Cho biết số tháng giữa và 
Select MONTHS_BETWEEN 
 (DATE ‘1981-01-02’, DATE ‘1980-01-02’) 
 FROM Dual --12 
11. ADD_MONTHS (, n) Thêm n tháng 
vào 
Select ADD_MONTHS (DATE ’1981-01-02’, 2) 
FROM Dual; --3 
 62 
 Các hàm xử lý dữ liệu (tt) 
12. NEXT_DAY(, ) 
 Cho biết sau là ngày nào 
Select NEXT_DAY(DATE ‘2015-04-10’, 'friday') 
FROM Dual; --17-04-2015 
 13. LAST_DAY () Cho biết ngày cuối 
cùng trong tháng chỉ bởi 
Select LAST_DAY (DATE ‘2015-04-10’) 
FROM Dual; --30-04-2015 
 63 
 Các hàm xử lý dữ liệu (tt) 
 14. TO_CHAR(): Chuyển số sang chuỗi 
 TO_CHAR(, ):Chuyển 
ngày sang chuỗi theo định dạng 
 Select TO_CHAR(DATE'2011-09-20', 
 'DD-MM-YYYY') 
 FROM Dual; -- ‘20-09-2011’ 
 16. TO_NUMBER(): Chuyển chuỗi 
ký số sang dạng số 
 Select TO_NUMBER('123')+TO_NUMBER('34') 
 FROM Dual; => 157 
 64 
 Các hàm xử lý dữ liệu (tt) 
 17. TO_DATE(, <chuỗi 
định dạng>) 
 Chuyển chuỗi ngày sang dạng ngày theo định 
dạng 
 Select TO_DATE(’10-04-2015’,’DD-MM-YYYY’) 
 FROM Dual; -- 10-04-2015 
 65 
 Các hàm xử lý dữ liệu (tt) 
 CASE 
 WHEN THEN 
 [WHEN THEN 
 [ELSE ] 
 END 
 Đánh giá danh sách các điều kiện và trả về giá trị 
phù hợp 
 Select CASE 
 WHEN extract(day from sysdate)>15 
 THEN ‘Cuoi thang’ 
 ELSE ‘Dau thang’ END 
 From Dual; 
 66 
 TÓM TẮT NỘI DUNG 
 - Ngôn ngữ xử lý dữ liệu (Insert, Update, Delete) 
 - Truy vấn dữ liệu trên một và nhiều bảng (select 
 from where) 
 - Truy vấn dữ liệu tập hợp (UNION, INTERSECT, 
MINUS), truy vấn lồng nhau 
 - Truy vấn sử dụng hàm kết tập (SUM, MAX, MIN, 
AVG, COUNT) 
 - Truy vấn sắp xếp dữ liệu ORDER BY 
 - Truy vấn thống kê trên nhóm GROUP BY 
 - Các hàm xử lý dữ liệu (chuỗi, ngày, số, kiểu). 
 Biên soạn: Nguyễn Thị Mỹ Dung 67 

File đính kèm:

  • pdfbai_giang_he_quan_tri_co_so_du_lieu_oracle_chuong_3_truy_van.pdf