Thứ Ba, 14 tháng 7, 2015

BÀI 03: TRUY VẤN DỮ LIỆU VỚI CÂU LỆNH SELECT (phần 2)

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';




2 nhận xét:

  1. What is Baccarat? | Worrione
    Baccarat 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

    Trả lờiXóa