Thứ Tư, 8 tháng 1, 2020

Bài 1.PL/SQL cơ bản - Các yếu tố cơ bản, các phép toán

1.    Comment:
/* … */
--
2.    Khai báo biến
SET SERVEROUTPUT ON
DECLARE
Myname VARCHAR2(20);
BEGIN
DBMS_OUTPUT.PUT_LINE('My name is: '||Myname);
Myname := 'John';
DBMS_OUTPUT.PUT_LINE('My name is: '||Myname);
END;
/



·         INTO: đổ dữ liệu vào biến
declare
    result number;
begin
    SELECT (HISAL*12) INTO result FROM SCOTT.SALGRADE WHERE grade = 4;
    DBMS_OUTPUT.PUT_LINE(result);
end;
/

DECLARE
emp_hiredate employees.hire_date%TYPE;
emp_salary employees.salary%TYPE;
BEGIN
SELECT hire_date, salary
INTO emp_hiredate, emp_salary
FROM employees
WHERE employee_id = 100;
END;
/
·         Khai báo hằng
DECLARE
v_char CONSTANT VARCHAR2(10) := 'Hello World';
 v_number CONSTANT NUMBER := 123;
BEGIN
NULL;
END;

·         Toán tử:
·         Ghép tiếp các ct d liu
Toán tử ghép tiếp chui (||) cho phép ghép tiếp d liu trong các ct khác nhau ca cùng mt dòng dữ liu vi nhau thành mt chui. Ta có th có nhiu toán t ghép chui trong cùng mt column alias.
Ví dụ:
SELECT empno||ename EMPLOYEE FROM emp;

·         Ghép tiếp chui ký tự
Trong mệnh đề SELECT, ta có th thc hin ghép tiếp bt k ký tự nào, biu thc hay s nào mà không phi là column hoc column alias.
Ví dụ:
SELECT empno || ename || ‘ WORK IN DEPARTMENT ’
|| deptno ‘Employee Detail’
FROM emp;

·         Để kim tra có phi NULL hay không dùng các toán t IS NULL hoc IS NOT NULL
The Relational Operators: =, <>, !=, ~=, <, >, <=, >=
Operator
Example
Usage
=
IF A = B THEN
The equality operator.
<> 
IF A <> B THEN
The inequality operator.
!=
IF A != B THEN
Another inequality operator, synonymous with <>.
~=
IF A ~= B THEN
Another inequality operator, synonymous with <>.
< 
IF A < B THEN
The less than operator.
> 
IF A > B THEN
The greater than operator.
<=
IF A <= B THEN
The less than or equal to operator.
>=
IF A >= B THEN
The greater than or equal to operator.
LIKE
IF A LIKE B THEN
The pattern-matching operator.
BETWEEN
IF A BETWEEN B AND C THEN
Checks to see if a value lies within a specified range of values.
IN
IF A IN (B,C,D) THEN
Checks to see if a value lies within a specified list of values.
IS NULL
IF A IS NULL THEN
Checks to see if a value is null.


True Expressions
False Expressions
5 = 5
5 = 3
'AAAA' = 'AAAA'
'AAAA ' = 'AAAA'
5 != 3
5 <> 5
'AAAA ' ~= 'AAAA'
'AAAA' ~= 'AAAA'
10 < 200
10.1 < 10.05
'Jeff' < 'Jenny'
'jeff' < 'Jeff'
TO_DATE('15-Nov-61' < '15-Nov-97')
TO_DATE('1-Jan-97' < '1-Jan-96')
10.1 <= 10.1
10 <= 20
'A' <= 'B'
'B' <= 'A'
TO_DATE('1-Jan-97') <= TO_DATE('1-Jan-97)
TO_DATE('15-Nov-61') <= TO_DATE('15-Nov-60)

Để tìm những nhân viên có tên có chuỗi 'A_B'
SELECT ename FROM emp WHERE ename LIKE '%A\_B%'; ESCAPE '\'

Vì ký hiệu "_" dùng để đại diện cho một ký tự bất kỳ nên nếu không có mệnh đề ESCAPE, câu lệnh trên sẽ tìm tất cả các nhân viên tên AAB, ABB, ACB, v.v...
·          Toán tử tập hợp
UNION: Kết hợp kết quả của nhiều câu hỏi với nhau, chỉ giữ lại một đại diện cho các mẫu tin trùng nhau.
UNION ALL: Kết hợp kết quả của nhiều câu hỏi với nhau, các mẫu tin trùng nhau cũng được lặp lại
INTERSET:Lấy phần giao các kết quả của nhiều câu hỏi

MINUS: Lấy kết quả có trong câu hỏi thứ nhất mà không có trong câu hỏi thứ hai (câu hỏi sau toán tử MINUS)

·         Toán tử khác:
NOT IN: Không thuộc
ANY và SOME: So sánh một giá trị với mỗi giá trị trong một danh sách hay trong kết quả trả về của câu hỏi con, phải sau toán tử =
ALL:So sánh một giá trị với mọi giá trị trong danh sách hay trong kết quả trả về của câu hỏi con.
EXISTS: Trả về TRUE nếu có tồn tại.
SELECT * FROM emp
WHERE sal = ANY (SELECT sal FROM emp WHERE deptno=30);

SELECT * FROM emp
WHERE sal >= ALL (select distinct sal From emp
Where deptno =30)
Order by sal desc;

SELECT ENAME, SAL, JOB, DEPTNO
FROM EMP
WHERE SAL > SOME (SELECT DISTINCT SAL
FROM EMP
WHERE DEPTNO =30)
ORDER BY SAL DESC;


Tìm những người có nhân viên
SELECT EMPNO, ENAME, JOB, DEPTNO
FROM EMP E
WHERE EXISTS (SELECT EMPNO FROM EMP WHERE EMP.MGR = E.EMPNO);

·         Constant
You cannot use SYSDATE in the condition of a CHECK constraint
5.    Từ khóa
·         DEFINE:

·         Chuyển đổi kiểu dữ liệu (converision)
Explicit (Tường minh)
– TO_CHAR
– TO_DATE
– TO_NUMBER
– TO_TIMESTAMP
Implicit (internal, tự động)






@ Trần Văn Bình - Founder of Oracle DBA AZ #OraAz #OracleDBAAz #OracleTutorial

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master