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