Bài giảng Hệ quản trị cơ sơ dữ liệu oracle - Chương 2: Cơ bản về SQL - Ngô Thùy Linh

Kiểu dữ liệu

 Kiểu ký tự:

• Char(): 1byte  2000 byte

• Varchar2(): 4000 byte

• Nvarchar2(): 4000 byte

 Kiểu số:

• Number(p,s)

• p is the precision (138) and s (-84127) is the

scale

 Kiểu ngày tháng

• Date: Jan 1, 4712 BC  Dec 31, 9999 AD2-6

Kiểu dữ liệu (tt)

 Kiểu số: Number(p,s)

• Number: có thể lưu trữ bất cứ giá trị nào

• Number(6): lưu trữ tối đa số có 6 chữ số

• Number(5, 2): -999.99  999.99

• Number(5, -2): số nguyên tối đa có (5-(-2)) chữ số

và có 2 chữ số cuối là 0

• Number(3, 8): -0.00000999  0.00000999

pdf 122 trang kimcuc 2620
Bạn đang xem 20 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 2: Cơ bản về SQL - Ngô Thùy Linh", để 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 2: Cơ bản về SQL - Ngô Thùy Linh

Bài giảng Hệ quản trị cơ sơ dữ liệu oracle - Chương 2: Cơ bản về SQL - Ngô Thùy Linh
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 
CƠ BẢN VỀ SQL 
 Giảng viên: Ngô Thùy Linh 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-2 
Nội dung chính 
• Giới thiệu về SQL 
• Truy vấn dữ liệu: Select 
• Định nghĩa dữ liệu: DDL (Create, Alter, Drop) 
• Thao tác dữ liệu: DML (Insert, Update, Delete) 
• Tối ưu hóa câu lệnh SQL 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-3 
SQL 
 SQL: Structured Query Language 
 Các loại: 
• DML (Data Manipulation Language) 
• DDL (Data Definition Language) 
• Transaction Control 
• Session Control 
• System Control 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-4 
Kiểu dữ liệu 
Character Numeric Datetime LOB ROWID Binary 
CHAR (n) NUMBER(m,n) DATE CLOB ROWID 
RAW(size) 
NCHAR(n) FLOAT TIMESTAMP WITH 
TIMEZONE 
NCLOB UROWID LONG 
RAW 
VARCHAR2(n) BINARY_FLOAT 
TIMESTAMP 
WITH LOCAL 
TIMEZONE 
BLOB 
NVARCHAR2(n) BINARY_DOUBLE 
INTERVAL 
YEAR[(n)] TO 
MONTH 
BFILE 
INTERVAL 
DAY[(m)] TO 
SECOND[(n)] 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-5 
Kiểu dữ liệu 
 Kiểu ký tự: 
• Char(): 1byte 2000 byte 
• Varchar2(): 4000 byte 
• Nvarchar2(): 4000 byte 
 Kiểu số: 
• Number(p,s) 
• p is the precision (1 38) and s (-84 127) is the 
scale 
 Kiểu ngày tháng 
• Date: Jan 1, 4712 BC Dec 31, 9999 AD 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-6 
Kiểu dữ liệu (tt) 
 Kiểu số: Number(p,s) 
• Number: có thể lưu trữ bất cứ giá trị nào 
• Number(6): lưu trữ tối đa số có 6 chữ số 
• Number(5, 2): -999.99 999.99 
• Number(5, -2): số nguyên tối đa có (5-(-2)) chữ số 
và có 2 chữ số cuối là 0 
• Number(3, 8): -0.00000999 0.00000999 
8-3 3 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-7 
Lấy dữ liệu 
SELECT [DISTINCT] danh_sách_cột 
FROM {table_name | view_name} 
[WHERE điều_kiện] 
[GROUP BY danh_sách_cột_1] 
[HAVING điều_kiện_lọc] 
[ORDER BY danh_sách_cột_2 [ASC | DESC]] 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-8 
Phép toán 
Loại phép toán Phép toán 
Toán học +, -, *, / 
So sánh =, {!=, , ^=}, , = 
 SOME/ANY, ALL 
Logic NOT, AND, OR 
Các phép toán 
chuỗi 
||, LIKE, NOT LIKE 
Các phép toán 
khác 
IN, NOT IN, BETWEEN, EXISTS, IS NULL, IS 
NOT NULL 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-9 
VÍ DỤ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-10 
Câu lệnh SELECT đơn giản 
 SELECT [DISTINCT] {*, column_list [alias],} 
 FROM table-name 
 Chọn tất cả các cột? 
 Một cột cụ thể? 
 Thay đổi tên hiển thị 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-11 
Câu lệnh SELECT đơn giản 
 select tencb 
 from canbo; 
 select * 
 from ngoaingu; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-12 
Select (Limiting Results) 
 Hiển thị N bản ghi đầu tiên của bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-13 
SQL Alias (Bí danh cột) 
 SELECT column_name AS alias_name 
 FROM table_name; 
 Ví dụ 
 select macb as MaCanBo, tengoaingu as "Ngoai Ngu" 
 from ngoaingu; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-14 
Toán tử nối 
 Nối các cột hoặc chuỗi ký tự vào các cột 
 Tượng trưng bởi 2 vạch đứng || 
 Tạo ra các cột kết quả là một biểu thức ký tự 
 Ví dụ 
 select macb || tengoaingu as "CanBo NgoaiNgu" 
 from ngoaingu; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-15 
SQL SELECT DISTINCT 
 SELECT DISTINCT column_name,column_name 
 FROM table_name; 
 Ví dụ 1: select quequan from canbo; 
 Ví dụ 2: 
 select distinct quequan from canbo; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-16 
Biểu thức số học 
 Phép toán số học: * / + - 
 Ví dụ: Thưởng cho mỗi cán bộ 1 tháng lương cộng 
thêm 500000đ 
 select tencb as "Ho ten", luong as Luong, 
 luong + 500000 as Thuong 
 from canbo; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-17 
SQL WHERE Syntax 
 SELECT column_name,column_name 
 FROM table_name 
 WHERE column_name comparison-operator value; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-18 
SQL WHERE Syntax  
 Ví dụ: Hiển thị tên và lương của các cán bộ có 
lương hơn 3 triệu: 
 select tencb as "Ho Ten", luong as "Luong thang" 
 from canbo 
 where luong > 3000000; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-19 
ALL, ANY/SOME 
 The ALL comparison condition is used to compare a 
value to a list or subquery. 
 It must be preceded by =, !=, >, = and followed 
by a list or subquery. 
 select tencb, luong 
 from canbo 
 where luong <= ALL (3000000, 4000000, 8000000); 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-20 
ANY/ SOME 
 The ANY comparison condition is used to compare a 
value to a list or subquery. 
 It must be preceded by =, !=, >, = and followed 
by a list or subquery. 
 The SOME and ANY comparison conditions do exactly 
the same thing and are completely interchangeable. 
 select tencb as "Ho Ten", luong as "Luong thang" 
 from canbo 
 where luong > ANY (4000000, 7000000); 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-21 
Một số phép toán khác 
 Các phép toán so sánh khác 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-22 
Một số phép toán khác  
 IN (NOT IN) 
• Dùng để kiểm tra các giá trị thuộc (không thuộc) một 
danh sách cho trước 
 SELECT column_name(s) 
 FROM table_name 
 WHERE column_name IN (value1,value2,...); 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-23 
Một số phép toán khác  
 Ví dụ: hiển thị lương các cán bộ thỏa mãn 1 trong 
các giá trị sau 
 select tencb, luong 
 from canbo 
 where luong IN (2000000,3000000, 4000000, 
5000000, 6000000); 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-24 
Một số phép toán khác  
 Select tencb, luong 
 from canbo 
 where luong NOT IN (2000000, 3000000, 4000000); 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-25 
Một số phép toán khác  
 SQL LIKE Syntax 
• The LIKE operator is used to search for a specified pattern 
in a column. 
 SELECT column_name(s) 
 FROM table_name 
 WHERE column_name LIKE pattern; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-26 
Một số phép toán khác  
 Ví dụ: hiển thị ra các cán bộ có quê quán bắt đầu 
bởi chữ H 
 Select tencb,quequan 
 from canbo 
 where quequan LIKE 'H%'; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-27 
Một số phép toán khác  
 BETWEEN  AND 
• Dùng để lựa chọn giá trị của trường trong một khoảng giá 
trị (numbers, text, dates) cho trước. 
 SELECT column_name(s) 
 FROM table_name 
 WHERE column_name BETWEEN value1 AND value2; 
 Ví dụ 1: 
Ví dụ 2: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-28 
Một số phép toán khác  
 IS NULL/ IS NOT NULL 
 Giá trị NULL 
• Nếu một bản ghi thiếu giá trị tại một trường nào đó 
thì giá trị đó là NULL. 
 Ví dụ: hiển thị các cán bộ không biết ngoại ngữ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-29 
 EXISTS 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-30 
Phép toán logic 
 AND, OR, NOT 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-31 
Phép toán logic  
 AND 
• Ví dụ 1: hiển thị các cán bộ quê không ở Hà Nội và 
lương trên 4 triệu 
 OR 
• Ví dụ 2: hiển thị mã cán bộ của các cán bộ hoặc biết 
tiếng Pháp hoặc có trình độ B 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-32 
Phép toán logic  
 NOT 
• Ví dụ: hiển thị mã cán bộ không biết tiếng Trung Quoc 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-33 
Mệnh đề ORDER BY 
 Sắp xếp thứ tự hàng với mệnh đề ORDER BY 
 SELECT column_name1, column_name2, 
 FROM table_name 
 ORDER BY column_name1,column_name2, 
 ASC | DESC ; 
 Với ASC: thứ tự tăng (mặc định) 
• DESC: thứ tự giảm 
 Hiển thị thông tin của bảng cán bộ với cột lương 
giảm dần 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-34 
Hàm đơn 
Single – Row Functions 
 Mô tả nhiều loại hàm khác nhau có sẵn trong SQL 
 Các hàm này chỉ thao tác trên từng hàng và trả về 
kết quả theo từng hàng. 
 Nhận nhiều đối số và trả về đơn trị 
 Có thể hiệu chỉnh kiểu dữ liệu 
 Có thể lồng nhau 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-35 
Hàm đơn  
 Các loại hàm đơn: 
• Character 
• Number 
• Date 
• Conversion 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-36 
Một hàm phục vụ cho truy vấn 
Chuỗi Số Thời gian Chuyển đổi Rẽ 
nhánh 
Gộp 
LENGTH FLOOR, 
CEIL, 
ROUND 
ADD_MONTHS CAST CASE MIN, 
MAX 
LOWER, 
UPPER 
MOD SYSDATE TO_CHAR DECODE COUNT 
LPAD, 
RPAD 
SQRT EXTRACT TO_DATE AVG 
LTRIM, 
RTRIM, 
TRIM 
MONTHS_BETWEEN TO_NUMBER SUM 
SUBSTR SIGN 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-37 
Hàm Character 
 Nhận dữ liệu character là input và có thể trả về giá 
trị character hoặc number 
Tên hàm Ý nghĩa 
LOWER(string_value) Chuyển chuỗi ký tự string_value sang chữ thường 
UPPER (string_value) Chuyển chuỗi ký tự string_value sang chữ hoa 
INITCAP (string_value) Chuyển ký tự đầu tiên sang chữ hoa 
CONCAT(string1,string2) Nối string1 với string2 
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-38 
Hàm Character  
Tên hàm Ý nghĩa 
SUBSTR (string_value, m, n) Returns 'n' number of characters from 
'string_value' starting from the 'm' position. 
LENGTH (string_value) / 
LENGTHB(string_value) 
Number of characters/bytes in 'string_value' in 
returned. 
TRIM (trim_text FROM 
string_value) 
All occurrences of 'trim_text' from the left and 
right of 'string_value' , 'trim_text' can also be 
only one character long . 
LTRIM(string_value, 
trim_text) 
All occurrences of 'trim_text' is removed from 
the left of 'string_value'. 
RTRIM (string_value, 
trim_text) 
All occurrences of 'trim_text' is removed from 
the right of 'string_value' 
LPAD (string_value, n, 
pad_value) 
Returns 'string_value' left-padded with 
'pad_value' . The length of the whole string will 
be of 'n' characters. 
RPAD (string_value, n, 
pad_value) 
Returns 'string_value' right-padded with 
'pad_value' . The length of the whole string will 
be of 'n' characters. 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-39 
Tên hàm Ví dụ Giá trị trả về 
LOWER(string_value) LOWER('Good Morning') good morning 
UPPER(string_value) UPPER('Good Morning') GOOD 
MORNING 
INITCAP(string_value) INITCAP('GOOD MORNING') Good Morning 
LTRIM(string_value, 
trim_text) 
LTRIM ('Good Morning', 'Good‟) 
Morning 
RTRIM (string_value, 
trim_text) 
RTRIM ('Good Morning', ' 
Morning') 
Good 
TRIM (trim_text FROM 
string_value) 
TRIM ('o' FROM 'Good Morning') Gd Mrning 
SUBSTR 
(string_value, m, n) 
SUBSTR ('Good Morning', 6, 7) Morning 
LENGTH 
(string_value) 
LENGTH ('Good Morning') 12 
LPAD (string_value, n, 
pad_value) 
LPAD ('Good', 6, '*') **Good 
RPAD (string_value, n, 
pad_value) 
RPAD ('Good', 6, '*') 
Good** 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-40 
Ví dụ các hàm ký tự 
 Hàm TRIM 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-41 
Ví dụ các hàm ký tự  
 Hàm LTRIM 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-42 
Ví dụ các hàm ký tự  
 Hàm RTRIM 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-43 
Hàm Number 
Tên hàm Mô tả 
ABS (x) Absolute value of the number 'x' 
CEIL (x) Integer value that is Greater than or equal to 
the number 'x' 
FLOOR (x) Integer value that is Less than or equal to the 
number 'x' 
TRUNC (x, y) Truncates value of number 'x' up to 'y' decimal 
places 
ROUND (x, y) Rounded off value of the number 'x' up to the 
number 'y' decimal places 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-44 
Hàm Number  
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-45 
Hàm Number  
 Hàm SIGN 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-46 
Hàm DATE 
 Tất cả hàm Date trả về giá trị kiểu Date ngoại trừ 
hàm MONTHS_BETWEEN (trả về numeric) 
Tên hàm Mô tả 
MONTHS_BETWEEN (x1, x2) Returns the number of months between 
dates x1 and x2. 
ADD_MONTHS (date, n) Returns the number of months between 
dates x1 and x2. 
ROUND (x, date_format) Returns the date 'x' rounded off to the 
nearest century, year, month, date, hour, 
minute, or second as specified by the 
'date_format'. 
TRUNC (x, date_format) Returns the date 'x' lesser than or equal 
to the nearest century, year, month, date, 
hour, minute, or second as specified by 
the 'date_format'. 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-47 
Hàm DATE  
Tên hàm Mô tả 
NEXT_DAY (x, week_day) Returns the next date of the 'week_day' on or 
after the date 'x' occurs. 
LAST_DAY (x) It is used to determine the number of days 
remaining in a month from the date 'x' 
specified. 
SYSDATE Returns the systems current date (host) 
CURRENT_DATE Returns the current date (client) 
EXTRACT( c FROM date) Returns and extracts a value c from a date or 
interval value. 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-48 
Hàm DATE  
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-49 
Hàm DATE  
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-50 
Hàm DATE  
 Ví dụ 
2013 
9 
2 
2013 
9 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-51 
Hàm Conversion 
 SQL cung cấp hàm chuyển giá trị từ kiểu dữ liệu 
này sang kiểu dữ liệu khác 
Tên hàm Mô tả 
TO_CHAR (x [,y]) Converts Numeric and Date 
values to a character string value. 
TO_DATE (x [, date_format]) Converts a valid Numeric and 
Character values to a Date value. 
Date is formatted to the format 
specified by 'date_format'. 
TO_NUMBER(char) Converts a string to a number 
NVL(expr1, expr2) Converts a NULL to a vaild 
CAST(x AS type) Converts x to a compatible 
database type specified in type 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-52 
Hàm Conversion  
 Ví dụ 1: hiển thị thông tin về đề tài có ngày hết hạn 
là 20/11/2013 
 Ví dụ 2: hiển thị thông tin về đề tài với ngày nhận 
đề tài (16/1/2012) có dạng Sixteen of January 2012 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-53 
Hàm Conversion  
 Hàm CAST 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-54 
SQL GROUP Functions 
 Hàm Group 
• Cho phép thao tác trên một nhóm các bản ghi và cho kết 
quả ứng với từng nhóm đó 
• MAX, MIN, AVG, SUM, COUNT, DISTINCT  
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-55 
SQL GROUP Functions 
 Một số chú ý 
• Các hàm Group bỏ qua giá trị NULL của cột 
• Hàm COUNT(*) đếm cả giá trị NULL, nếu dùng 
COUNT(expr) đếm giá trị khác NULL 
• Hàm MIN, MAX dùng với mọi kiểu dữ liệu 
• Dùng hàm NVL giúp hàm group tính giá trị NULL 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-56 
SQL GROUP Functions  
  Ví dụ minh họa 
• Ví dụ 1: hiển thị lương cao nhất của các cán bộ 
• Ví dụ 2: đếm số cán bộ biết tiếng anh 
• Ví dụ 3: có bao nhiêu loại tiếng nước ngoài? 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-57 
SQL GROUP Functions  
 Ví dụ 4: Ngày nhận đề tài sớm nhất? 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-58 
SQL GROUP Functions  
 Ví dụ 5: Tính lương trung bình của các cán bộ 
• Trường hợp 1: trung bình lương các cán bộ nhận 
được lương 
• Trường hợp 2: trung bình lương các tất cả các cán bộ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-59 
SQL GROUP BY Clause 
 Mệnh đề GROUP BY 
• Dùng để chia các bản ghi thành từng nhóm. Sau đó 
dùng hàm Group để tính thông tin tổng hợp của từng 
nhóm 
• Không được dùng bí danh cột trong mệnh đề Group by 
• Cột GROUP BY không nhất thiết phải có trong SELECT 
• Tất cả các trường trong SELECT mà không có trong 
HÀM GROUP thì PHẢI có trong GROUP BY 
• Mệnh đề WHERE có thể loại bỏ trước các bản ghi trước 
khi chia chúng thành nhóm 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-60 
SQL GROUP BY Clause  
 Ví dụ: hiển thị tên ngoại ngữ và số người biết 
tương ứng? 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-61 
SQL GROUP BY Clause  
  GROUP BY trên nhiều cột: GROUP BY c1, c2 
• Đầu tiên các bản ghi được nhóm theo c1 
• Trong từng nhóm theo c1, được phân nhóm theo c2 
 Ví dụ: Hiển thị thông tin trên bảng canbo: phân nhóm 
theo mã đề tài, sau đó phân nhóm tiếp theo quê quán 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-62 
SQL GROUP BY Clause  
 Ví dụ: trường tencb không có trong GROUP BY 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-63 
SQL HAVING Clause 
 SELECT column_name, group_function(column_name) 
 FROM table_name 
 WHERE column_name operator value 
 GROUP BY column_name 
 HAVING group_function(column_name) operator value; 
 Dùng mệnh đề HAVING để giới hạn các nhóm 
 Ví dụ: hiển thị lương trung bình lớn hơn 3 triệu theo vùng miền 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-64 
Hàm rẽ nhánh 
 Hàm DECODE 
• expression is the value to compare. 
• search is the value that is compared against 
expression. 
• result is the value returned, if expression is equal to 
search. 
• default is optional. If no matches are found, the 
DECODE function will return default. If default is 
omitted, then the DECODE function will return null 
(if no matches are found). 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-65 
Hàm rẽ nhánh  
 Hàm DECODE 
• Ví dụ 
20 
20 
9 
null 
50 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-66 
Hàm rẽ nhánh  
 Hàm CASE 
 Chú ý: Nếu không có ELSE thì hàm CASE sẽ trả về giá trị NULL 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-67 
Hàm rẽ nhánh  
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-68 
Hàm rẽ nhánh 
 Ví dụ: so sánh giá trị 20 và 10 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-69 
Lấy dữ liệu từ nhiều bảng 
 Sử dụng phép nối 
• INNER JOIN 
• NATURAL JOIN 
• OUTER JOIN 
– LEFT OUTER JOIN 
– RIGHT OUTER JOIN 
– FULL OUTER JOIN 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-70 
Lấy dữ liệu từ nhiều bảng  
 Cho csdl gồm 2 bảng 
• Tinh(matinh, tentinh) 
• Sinhvien(masv, tensv, matinh) 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-71 
Lấy dữ liệu từ nhiều bảng  
 INNER JOIN 
 Ví dụ: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-72 
Lấy dữ liệu từ nhiều bảng  
 NATURAL JOIN 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-73 
Lấy dữ liệu từ nhiều bảng  
 NATURAL JOIN 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-74 
Lấy dữ liệu từ nhiều bảng  
 OUTER JOIN: LEFT JOIN 
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-75 
Lấy dữ liệu từ nhiều bảng  
 OUTER JOIN: RIGHT JOIN 
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-76 
Lấy dữ liệu từ nhiều bảng  
 OUTER JOIN: FULL JOIN 
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-77 
Lấy dữ liệu từ nhiều bảng  
 JOIN USING. (INNER JOIN) 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-78 
Lấy dữ liệu từ nhiều bảng  
 JOIN USING. (INNER JOIN) 
• Chú ý: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-79 
Truy vấn phụ - Subqueries 
 Khái niệm 
 Ví dụ 
 Phân loại 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-80 
Truy vấn phụ - Subqueries  
 Câu hỏi: Ai có lương cao hơn „Dinh Thuy Hien‟ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-81 
Truy vấn phụ - Subqueries  
 A subquery is a query within a query 
 Syntax 
 These subqueries can reside in Clause: 
 the WHERE clause 
 the FROM clause 
 the SELECT clause 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-82 
Truy vấn phụ - Subqueries  
 The subquery can be nested inside Statement: 
• A SELECT 
• A INSERT 
• A UPDATE 
• A DELETE 
• A another subquery 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-83 
Truy vấn phụ - Subqueries  
 Ví dụ 1 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-84 
Truy vấn phụ - Subqueries  
 Chú ý khi dùng truy vấn phụ: 
• Câu truy vấn phụ đặt trong ngoặc đơn 
• Không bổ sung mệnh đề ORDER BY cho câu truy 
vấn phụ 
• Dùng toán tử đơn hàng với câu truy vấn đơn hàng 
– Toán tử: =, >, >=, 
• Dùng toán tử đa hàng với câu truy vấn đa hàng 
– Toán tử: IN, ALL, ANY/SOME 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-85 
Truy vấn phụ - Subqueries  
 Chú ý 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-86 
Truy vấn phụ - Subqueries  
 Ví dụ 2: Hiển thị thông tin của bảng canbo, với 
điều kiện quê không ở Hà nội và lương nhỏ hơn bất 
kỳ lương của cán bộ nào quê ở Hà nội? 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-87 
Truy vấn phụ - Subqueries  
 Ví dụ hiển thị mã đề tài, tên đề tài, ngày phải nộp 
đề tài của bảng đề tài, với các đề tài đã được phân 
công cho cán bộ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-88 
Truy vấn phụ - Subqueries  
 EXISTS/ NOT EXISTS 
 Ví dụ 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-89 
Truy vấn phụ - Subqueries  
 EXISTS/ NOT EXISTS 
 Ví dụ được viết như sau:? Kết quả? 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-90 
Truy vấn phụ - Subqueries  
 Hiển thị thông tin 3 cán bộ có lương cao nhất (thấp nhất) 
• B1: sắp xếp bảng canbo có lương giảm dần 
• B2: Lấy ra 3 bản ghi đầu tiên 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-91 
Null Values in a Subquery 
 Nếu có giá trị NULL trong tập trả về của Subquery 
• Cho bảng nhanvien(manv, tennv, luong, ghichu) 
 Dữ liệu của bảng nhanvien 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-92 
Null Values in a Subquery 
 Câu lệnh sau trả về bao nhiêu bản ghi 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-93 
SQL TUNING 
 Tối ưu hóa truy vấn 
• Chỉ SELECT những cột và những bản ghi cần thiết 
• Sử dụng JOIN thay vì subquery 
• Tránh truy vấn trên view 
• Gọi tên cột tường mình 
• Dùng CASE thay vì sử dụng nhiều truy vấn 
• Dùng INDEX 
• Dùng WHERE tốt hơn HAVING 
• Dùng EXISTS/NOT EXISTS tốt hơn IN/NOT IN 
• Hạn chế sử dụng các phép tính toán trong mệnh đề 
WHERE 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-94 
DML 
  Một câu lệnh DML được thực hiện khi: 
• Thêm một hàng vào bảng 
• Thay đổi một hàng đã có trong bảng 
• Xóa hàng đang tồn tại trong bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-95 
 Sửa dữ liệu: thay đổi hàng đã tồn tại trong bảng 
UPDATE Tên_bảng 
SET cột1 = giá_trị1, , cộtn = giá_trị_n 
[WHERE điều_kiện]; 
 Tăng lương của mỗi cán bộ thêm 500000 đồng 
DML – Sửa dữ liệu 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-96 
DML – Xóa dữ liệu 
 Xóa dữ liệu 
• Xóa từng bản ghi 
• Xóa toàn bộ dữ liệu trong bảng 
DELETE Tên_bảng WHERE [điều_kiện]; 
TRUNCATE TABLE Tên_bảng; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-97 
Thêm mới dữ liệu 
 Nhập giá trị cho mọi cột trong bảng 
 Nhập giá trị cho một số cột trong bảng 
 Lấy giá trị từ bảng khác 
INSERT INTO Tên_bảng VALUES(gt1, gt2, ) 
INSERT INTO Tên_bảng (cột1, cột2, ) 
 VALUES (gt1, gt2, ) 
INSERT INTO Tên_bảng (cột1, cột2, ) 
SELECT gt1, gt2,  
FROMWHERE 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-98 
DDL 
 Tạo bảng 
 Hiệu chỉnh cấu trúc bảng 
 Xóa bảng 
 Đổi tên bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-99 
Bảng 
 Tên bảng & tên cột tuân theo quy tắc: 
• 1-30 kí tự 
• Bắt đầu bằng chữ cái 
• Bao gồm chữ cái, số, _, #, $ (hạn chế dùng #, $) 
• Không dùng những từ có sẵn trong Oracle 
(NUMBER, INDEX) 
• Tên cột phải duy nhất trong bảng 
• Tên bảng phải duy nhất trong namespace 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-100 
Các thao tác liên quan tới bảng 
 Ví dụ: 
> Tạo bảng 
 Sửa bảng 
 Xóa bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-101 
 Bảng tạm: 
• Lưu trữ dữ liệu dùng riêng cho 1 session 
• Dữ liệu bị xóa khi kết thúc session hoặc transaction 
• Có thể thao tác dữ liệu, nối với với các bảng khác 
như bình thường 
 Tạo bảng tạm 
Các thao tác liên quan tới cấu trúc bảng 
> Tạo bảng 
 Sửa bảng 
 Xóa bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-102 
 Sửa giá trị mặc định của cột 
 Đổi tên bảng 
 Xóa cột 
Các thao tác liên quan tới bảng 
 Tạo bảng 
> Sửa bảng 
 Xóa bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-103 
 Sửa cột 
 Thêm cột 
Các thao tác liên quan tới bảng 
 Tạo bảng 
> Sửa bảng 
 Xóa bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-104 
 Khi xóa bảng, Oracle tiến hành: 
• Xóa dữ liệu 
• Xóa cấu trúc dữ liệu lưu trữ bảng 
• Xóa các trigger liên quan tới bảng 
• Xóa các quyền liên quan tới bảng 
 Một số tùy chọn cho câu lệnh xóa bảng 
• PURGE: không cho phép flashback 
• CASCADE CONSTRAINTS: xóa mọi ràng buộc dữ 
liệu có liên quan 
Các thao tác liên quan tới bảng 
 Tạo bảng 
 Sửa bảng 
> Xóa bảng 
DROP TABLE hr.employees PURGE; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-105 
Constraint 
 Đảm bảo tính toàn vẹn của dữ liệu 
 Có thể tạo constraint lúc tạo bảng hoặc sau khi 
tạo bảng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-106 
Các loại constraint 
 NOT NULL 
 UNIQUE 
• Không cho phép nhập giá trị giống nhau 
• Oracle tự động tạo unique index cho cột có ràng buộc 
UNIQUE 
 PRIMARY KEY 
• Có thể tạo khóa chính cho 1 hoặc nhiều cột 
• Oracle tự động tạo unique index cho cột làm khóa chính 
 FOREIGN KEY 
• Thiết lập mối quan hệ của 1 bảng với bảng khác 
 CHECK 
• Kiểm tra giá trị của một cột thỏa mãn điều kiện cho trước 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-107 
Khai báo constraint - 1 
 NOT NULL contraint 
 UNIQUE contraint 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-108 
Khai báo constraint - 2 
 PRIMARY KEY constraint 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-109 
Khai báo constraint - 3 
 FOREIGN KEY constraint 
• Chú ý: Không được phép tạo khóa ngoại cho những 
cột có kiểu dữ liệu: CLOB, NCLOB, BLOB, LONG, 
LONG RAW, TIMESTAMP WITH TIMEZONE 
 Ví dụ: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-110 
Khai báo constraint - 4 
 CHECK constraint 
• Kiểm tra giá trị của một cột có thỏa mãn điều kiện 
cho trước hay không 
 Ví dụ: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-111 
Sửa constraint 
 Xóa 
 Đổi tên 
 Vô hiệu hóa (disable) 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-112 
Sequence 
 Là một đối tượng trong schema dùng để tự động 
sinh ra các số nguyên theo thứ tự nào đó(thường 
dùng cho khóa chính) 
 Đặc điểm 
• Mỗi sequence có 1 tên xác định 
• Không gắn với 1 cột hay 1 bảng nào 
• Có thể tạo ra số nguyên theo thứ tự tăng hoặc giảm 
dần đều 
• Khoảng cách giữa 2 số nguyên do người dùng tùy 
đặt 
• Có thể quay vòng nếu giá trị sinh ra đã đạt ngưỡng 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-113 
1 3 5 7 9 11 13 15  
Sequence  
 Các thuộc tính: 
• START WITH 
• INCREMENT BY 
• MAXVALUE/NOMAXVALUE 
• MINVALUE/NOMINVALUE 
• CACHE/NOCACHE 
• CYCLE/NOCYCLE 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-114 
Quản lý sequence 
 Sửa sequence 
• Có thể sửa các thuộc tính: INCREMENT BY, 
MAXVALUE, MINVALUE, CYCLE, CACHE 
• Không thể sửa: START WITH 
• Ví dụ: 
 Xóa sequence 
 Sử dụng sequence 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-115 
VIEW 
 Biểu diễn dữ liệu từ một hoặc nhiều bảng bảng ảo 
 Câu lệnh truy vấn lưu ở Data Dictionary, dữ liệu vẫn 
để ở bảng gốc 
 Truy vấn dữ liệu trên view như trên các bảng thông 
thường 
 Cú pháp: 
CREATE VIEW tên_view 
AS 
câu_truy_vấn; 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-116 
VIEW 
 Có thể thực hiện các thao tác DML, nếu view: 
• View không chứa các mệnh đề: DISTINCT, GROUP 
BY, START WITH, CONNECT BY, ROWNUM 
• View không chứa các phép toán tập quan hệ đại số: 
UNION, UNION ALL, INTERSECT, MINUS 
• View không chứa subquery 
• Câu lệnh DML tác động lên 1 bảng gốc 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-117 
INDEX 
 Là cấu trúc dữ liệu tùy chọn, xây dựng cho một bảng 
xác định Tăng tốc độ truy vấn dữ liệu 
 Có thể tạo index cho nhiều cột hoặc một cột có thể 
tạo nhiều index 
 Có 2 loại index: 
• B-tree index (mặc định) 
– Sắp xếp giá trị khóa & ROWID dưới dạng B-tree 
– Phù hợp với những cột có ít giá trị giống nhau 
– Hỗ trợ “row locking” 
– Có 2 loại: unique và non-unique 
• Bitmap 
– Khóa và ROWID lưu dưới dạng bitmap 
– Phù hợp với những cột có nhiều giá trị giống nhau 
– Không hỗ trợ “row-locking” 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-118 
B-Tree Index 
Index entry header 
Key column length 
Key column value 
ROWID 
Root 
Branch 
Leaf 
Index entry 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-119 
Bitmap Index 
Key 
Start 
ROWID 
End 
ROWID Bitmap 
Table 
Index 
Block 10 
Block 11 
Block 12 
File 3 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-120 
INDEX 
 Tạo index 
 Xóa index 
 Quản lý index 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-121 
Synonym 
 Bí danh cho mọi đối tượng trong Oracle 
 Ưu điểm: 
• Đơn giản cho câu lệnh SQL 
• Không tốn không gian lưu trữ 
• Tăng tính bảo mật 
 Ví dụ: 
Khoa Hệ thống thông tin quản lý – Học viện Ngân Hàng 2-122 

File đính kèm:

  • pdfbai_giang_he_quan_tri_co_so_du_lieu_oracle_chuong_2_co_ban_v.pdf