Tiếp tục bài học về câu lệnh SELECT.
 
 
 
  
  
    
    
  
  
   
   
    
   
  
  
   
   
   
   
   
   
   
   
   
   
   
   
               
  
  
     
  
     
 
    
 
  
  
  
   
   
    
    
  
     
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
 
       
 
   
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
   
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
  
  
  
  
  
  
  
  
  
  
  
  
              
 
 
    
 
   
 
 
 
 
 
 
       
 
   
 
 
 
 
 
 
       
 
   
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
 
 
 
 
 
       
 
Toán tử nối
Bạn có thể nối giá trị của 2 cột,
nối 1 chuỗi với 1 cột, hay một biểu thức với 1 cột bằng cách sử dụng toán tử nối
(||)
SELECT    last_name||job_id
  AS "Employees" 
FROM      employees; 
 | 
 
Chú ý: Nếu bạn nối 1 chuỗi với 1 giá trị
NULL, thì kết quả trả về sẽ vẫn là chuỗi đó.
2.2 Loại bỏ dòng trùng lặp
Mặc định, Oracle sẽ trả về tất cả kết quả
mà không lọc ra các giá trị trùng nhau. Để lọc ra các giá trị trùng nhau, các bạn
dùng từ khóa DISTINCT ở ngay sau SELECT. Hai ví dụ dưới đây sẽ cho bạn thấy sự
khác nhau khi dùng và không dùng từ khóa DISTINCT
Ví dụ:
Khi SELECT không dùng từ khóa DISTINT:
SELECT department_id 
FROM  
  employees; 
 | 
 
| 
      
… 
 | 
    
Khi SELECT có dùng từ khóa DISTINCT
SELECT DISTINCT department_id 
FROM  
  employees; 
 | 
 
2.3 Mô tả cấu trúc bảng
Để xem cấu trúc của bảng như thế nào, ta dùng
lệnh DESCRIBE
DESC[RIBE] tablename 
 | 
 
2.4 Giới hạn số dòng trả về bằng mệnh đề WHERE
SELECT *|{[DISTINCT] column|expression
  [alias],...} 
FROM  
  table 
[WHERE condition(s)]; 
 | 
 
Bạn có thể giới hạn số dòng trả về từ câu lệnh
bằng mệnh đề WHERE. Một mệnh đề WHERE chứa một điều kiện và nó xuất hiện ngay
sau mệnh đề FROM. Nếu điều kiện là đúng, những dòng trong bảng thỏa mãn điều kiện
sẽ được lấy ra
Trong cú pháp bên trên:
WHERE                                                 Giới
hạn số dòng trả về 
Condition                            Bao
gồm các tên cột, các biểu thức, các biến, các toán tử so sánh. Một điều kiện chỉ
ra 1 tập hợp các biểu thức và toán tử logic, và trả về các giá trị là TRUE,
FAIL hay UNKNOWN.
SELECT employee_id, last_name, job_id,
  department_id 
FROM  
  employees 
WHERE 
  department_id = 90 
 | 
 
Các toán tử so sánh có thể được dùng trong
mệnh đề WHERE
Ví dụ 1:
SELECT last_name, salary 
FROM  
  employees 
WHERE 
  salary <= 3000 ; 
 | 
 
Ví dụ 2:
SELECT last_name, salary 
FROM  
  employees 
WHERE 
  salary BETWEEN 2500 AND 3500 ; 
 | 
 
Ví dụ 3:
SELECT employee_id, last_name, salary, manager_id 
FROM  
  employees 
WHERE 
  manager_id IN (100, 101, 201) ; 
 | 
 
Ví dụ 4:
SELECT last_name, manager_id 
FROM  
  employees 
WHERE 
  manager_id IS NULL ; 
 | 
 
Ví dụ 5:
SELECT last_name 
FROM  
  employees 
WHERE 
  last_name LIKE '_o%' ; 
 | 
 
Ví dụ 6:
SELECT employee_id, last_name, job_id,
  salary 
FROM  
  employees 
WHERE 
  salary >= 10000 
AND   
  job_id LIKE '%MAN%' ; 
 | 
 
Ví dụ 7:
SELECT employee_id, last_name, job_id,
  salary 
FROM  
  employees 
WHERE 
  salary >= 10000 
OR    
  job_id LIKE '%MAN%' ; 
 | 
 
Ví dụ 8:
SELECT last_name, job_id 
FROM  
  employees 
WHERE 
  job_id  
      
  NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ; 
 | 
 
Sắp xếp dữ liệu sử dụng mệnh đề ORDER BY
Khi sử dụng từ khóa ORDER BY, kết quả sẽ được
sắp xếp theo thứ tự, nếu không kết quả sẽ không tuân theo một thứ tự nào. Từ
khóa ORDER BY phải để cuối cùng của câu lệnh SELECT
Cú pháp: 
                SELECT                   
                FROM                                   table
                [WHERE                                điều kiện]
                [ORDER BY          {côt, biểu thức, số thứ tự của cột}
[ASC|DESC]];
ASC: Sắp xếp kết quả theo thứ tự tăng dần
DESC: Sắp xếp kết quả theo thứ tự giảm dần
ORDER BY: Sắp xếp thứ tự của các dòng theo
thứ tự
Ví dụ 1
SELECT  
  last_name, job_id, department_id, hire_date 
FROM    
  employees 
ORDER BY hire_date ; 
 | 
 
Ví dụ 2:
Sắp
xếp theo thứ tự giảm dần
SELECT  
  last_name, job_id, department_id, hire_date 
FROM    
  employees 
ORDER BY hire_date DESC ; 
 | 
 
Ví dụ 3:
Sử
dụng số thứ tự của cột để thay thế cho tên cột trong việc sắp xếp kết quả
SELECT  
  last_name, job_id, department_id, hire_date 
FROM    
  employees 
ORDER BY 3; 
 | 
 
Các hàm tính toán, chuyển đổi
Các hàm biến đổi chuỗi
LOWER: Đưa chuỗi về dạng viết thường
UPPER: Đưa chuỗi toàn bộ sang viết hoa
INITCAP: Viết hoa chữ đầu trong các từ trong chuỗi.
Ví dụ:
| 
   
SELECT employee_id, last_name,
  department_id 
FROM  
  employees 
WHERE 
  LOWER(last_name) = 'higgins'; 
 | 
 
Các hàm
thao tác với chuỗi
CONCAT: Hàm nối 2 chuỗi
SUBSTR: Cắt chuỗi. Tham số đầu tiên là chuỗi gốc,
tham số thứ 2 là ký tự bắt đầu cắt, tham số thứ 3 là độ dài chuỗi cần cắt bắt đầu
từ vị trí ký tự bắt đầu cắt.
LENGTH: Cho ra độ dài của chuỗi
INSTR: Tìm ra vị trí của 1 ký tự hay 1 từ trong chuỗi.
REPLACE: Hàm thay thế ký tự
Ví dụ:
| 
   
SELECT employee_id, CONCAT(first_name,
  last_name) NAME,  
      
  job_id, LENGTH (last_name),  
      
  INSTR(last_name, 'a') "Contains 'a'?" 
FROM  
  employees 
WHERE 
  SUBSTR(job_id, 4) = 'REP'; 
 | 
 
Các hàm
số học
ROUND: Hàm làm tròn số.
TRUNC: Hàm cắt số
MOD: Hàm tính số dư
Ví dụ 1:
| 
   
SELECT ROUND(45.923,2), ROUND(45.923,0), 
      
  ROUND(45.923,-1) 
FROM  
  DUAL; 
 | 
 
Ví dụ 2:
| 
   
SELECT TRUNC(45.923,2), TRUNC(45.923), 
      
  TRUNC(45.923,-1) 
FROM  
  DUAL; 
 | 
 
Ví dụ 3:
| 
   
SELECT last_name, salary, MOD(salary, 5000) 
FROM  
  employees 
WHERE 
  job_id = 'SA_REP'; 
 | 
 





















rất hay !
Trả lờiXóaWhat is Baccarat? | Worrione
Trả lờiXóaBaccarat in the UK? — Baccarat is a gambling game that has been 제왕 카지노 popular for centuries. 바카라 It has been kadangpintar a popular card game in the UK ever since it first came