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 cột dữ liệu
Toán tử ghép tiếp chuỗi (||) cho phép ghép tiếp dữ liệu trong các cột khác nhau của cùng một dòng dữ liệu với nhau thành một chuỗi. Ta có thể có nhiều toán tử ghép chuỗi trong cùng một column alias.
Ví dụ:
SELECT
empno||ename EMPLOYEE FROM emp;
·
Ghép tiếp chuỗi ký tự
Trong mệnh đề SELECT, ta có thể thực hiện ghép tiếp bất kỳ ký tự nào, biểu thức hay số nào mà không phải là column hoặc column alias.
Ví dụ:
SELECT empno ||
ename || ‘ WORK IN DEPARTMENT ’
|| deptno
‘Employee Detail’
FROM emp;
·
Để kiểm tra có phải NULL hay không dùng các toán tử IS NULL hoặc 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)
|
|