PL/SQL - Operators
Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các toán tử PL/SQL. Đừng lo lắng nếu bạn chưa từng viết một dòng mã trước đây - chúng ta sẽ bắt đầu từ những điều cơ bản nhất và dần dần nâng cao. Cuối bài hướng dẫn này, bạn sẽ có khả năng manipulates dữ liệu như một chuyên gia!
Các toán tử số học
Hãy bắt đầu với điều quen thuộc: toán học! Các toán tử số học trong PL/SQL hoạt động tương tự như những toán tử bạn đã học ở trường. Chúng cho phép chúng ta thực hiện các phép toán cơ bản trên các số.
Dưới đây là bảng các toán tử số học trong PL/SQL:
Toán tử | Mô tả | Ví dụ |
---|---|---|
+ | Cộng | 5 + 3 = 8 |
- | Trừ | 10 - 4 = 6 |
* | Nhân | 3 * 4 = 12 |
/ | Chia | 15 / 3 = 5 |
** | Lũy thừa | 2 ** 3 = 8 |
Hãy xem các toán tử này trong hành động với một ví dụ mã PL/SQL đơn giản:
DECLARE
num1 NUMBER := 10;
num2 NUMBER := 5;
result NUMBER;
BEGIN
result := num1 + num2;
DBMS_OUTPUT.PUT_LINE('Cộng: ' || result);
result := num1 - num2;
DBMS_OUTPUT.PUT_LINE('Trừ: ' || result);
result := num1 * num2;
DBMS_OUTPUT.PUT_LINE('Nhân: ' || result);
result := num1 / num2;
DBMS_OUTPUT.PUT_LINE('Chia: ' || result);
result := num1 ** 2;
DBMS_OUTPUT.PUT_LINE('Lũy thừa: ' || result);
END;
Trong ví dụ này, chúng ta khai báo hai biến num1
và num2
, sau đó thực hiện các phép toán số học khác nhau trên chúng. Kết quả được in ra đầu ra.
Khi bạn chạy đoạn mã này, bạn sẽ thấy:
Cộng: 15
Trừ: 5
Nhân: 50
Chia: 2
Lũy thừa: 100
Các toán tử quan hệ
Bây giờ, hãy chuyển sang các toán tử quan hệ. Các toán tử này được sử dụng để so sánh hai giá trị và xác định mối quan hệ giữa chúng. Chúng giống như những câu hỏi bạn hỏi khi so sánh các thứ: "Điều này có lớn hơn điều đó không?" hoặc "Cả hai có alike không?"
Dưới đây là bảng các toán tử quan hệ trong PL/SQL:
Toán tử | Mô tả | Ví dụ |
---|---|---|
= | Bằng | 5 = 5 là true |
<> | Không bằng | 5 <> 3 là true |
< | Nhỏ hơn | 3 < 5 là true |
> | Lớn hơn | 5 > 3 là true |
<= | Nhỏ hơn hoặc bằng | 3 <= 3 là true |
>= | Lớn hơn hoặc bằng | 5 >= 5 là true |
Hãy xem các toán tử này trong hành động:
DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a bằng b');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a nhỏ hơn b');
ELSE
DBMS_OUTPUT.PUT_LINE('a lớn hơn b');
END IF;
IF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a không bằng b');
END IF;
END;
Đoạn mã này so sánh a
và b
sử dụng các toán tử quan hệ. Khi bạn chạy nó, bạn sẽ thấy:
a nhỏ hơn b
a không bằng b
Các toán tử so sánh
Các toán tử so sánh trong PL/SQL rất giống với các toán tử quan hệ, nhưng chúng có một số chức năng bổ sung, đặc biệt là khi làm việc với các giá trị NULL và so sánh giữa các loại dữ liệu khác nhau.
Dưới đây là bảng các toán tử so sánh:
Toán tử | Mô tả |
---|---|
IS NULL | Kiểm tra nếu giá trị là NULL |
IS NOT NULL | Kiểm tra nếu giá trị không phải là NULL |
LIKE | Khớp mẫu |
BETWEEN | Kiểm tra nếu giá trị nằm trong một phạm vi |
IN | Kiểm tra nếu giá trị khớp với bất kỳ giá trị nào trong một danh sách |
Hãy xem một ví dụ:
DECLARE
name VARCHAR2(20) := 'John Doe';
age NUMBER := 25;
BEGIN
IF name IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('Tên là: ' || name);
END IF;
IF name LIKE 'J%' THEN
DBMS_OUTPUT.PUT_LINE('Tên bắt đầu bằng J');
END IF;
IF age BETWEEN 20 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('Tuổi nằm trong khoảng 20 và 30');
END IF;
IF age IN (25, 30, 35) THEN
DBMS_OUTPUT.PUT_LINE('Tuổi là 25, 30, hoặc 35');
END IF;
END;
Đoạn mã này minh họa các toán tử so sánh. Khi bạn chạy nó, bạn sẽ thấy:
Tên là: John Doe
Tên bắt đầu bằng J
Tuổi nằm trong khoảng 20 và 30
Tuổi là 25, 30, hoặc 35
Các toán tử logic
Các toán tử logic cho phép chúng ta kết hợp nhiều điều kiện. Chúng giống như "và" và "hoặc" trong ngôn ngữ hàng ngày khi chúng ta mô tả các tình huống phức tạp.
Dưới đây là bảng các toán tử logic trong PL/SQL:
Toán tử | Mô tả |
---|---|
AND | Đúng nếu cả hai điều kiện đều đúng |
OR | Đúng nếu bất kỳ điều kiện nào là đúng |
NOT | Đảo ngược kết quả của một điều kiện |
Hãy xem các toán tử này trong hành động:
DECLARE
age NUMBER := 25;
has_license BOOLEAN := TRUE;
BEGIN
IF age >= 18 AND has_license THEN
DBMS_OUTPUT.PUT_LINE('Bạn có thể lái xe');
END IF;
IF age < 18 OR NOT has_license THEN
DBMS_OUTPUT.PUT_LINE('Bạn không thể lái xe');
ELSE
DBMS_OUTPUT.PUT_LINE('Bạn có thể lái xe');
END IF;
END;
Đoạn mã này kiểm tra xem một người có thể lái xe hay không dựa trên tuổi và giấy phép lái. Khi bạn chạy nó, bạn sẽ thấy:
Bạn có thể lái xe
Bạn có thể lái xe
Trình tự các toán tử PL/SQL
Giống như trong toán học, các toán tử PL/SQL có một thứ tự nhất định trong đó chúng được đánh giá. Điều này được gọi là precedense của toán tử. Hiểu rõ điều này là rất quan trọng để viết mã chính xác và dự đoán được.
Dưới đây là thứ tự precedense của các toán tử trong PL/SQL, từ cao đến thấp:
- Lũy thừa (**)
- Nhân (*), Chia (/)
- Cộng (+), Trừ (-)
- Các toán tử so sánh (=, <>, <, >, <=, >=)
- IS NULL, LIKE, BETWEEN, IN
- NOT
- AND
- OR
Hãy xem một ví dụ về cách điều này hoạt động:
DECLARE
result BOOLEAN;
BEGIN
result := 5 > 3 AND 10 / 2 = 5 OR NOT (2 + 2 = 4);
IF result THEN
DBMS_OUTPUT.PUT_LINE('Kết quả là ĐÚNG');
ELSE
DBMS_OUTPUT.PUT_LINE('Kết quả là SAI');
END IF;
END;
Trong ví dụ này, biểu thức được đánh giá như sau:
- 10 / 2 = 5 (chia, sau đó so sánh)
- 5 > 3 (so sánh)
- 2 + 2 = 4 (cộng, sau đó so sánh)
- NOT (2 + 2 = 4) (đảo ngược logic)
- 5 > 3 AND 10 / 2 = 5 (và logic)
- Kết quả của bước 5 OR kết quả của bước 4 (hoặc logic)
Khi bạn chạy đoạn mã này, bạn sẽ thấy:
Kết quả là ĐÚNG
Và thế là xong! Chúng ta đã bao gồm các loại toán tử chính trong PL/SQL. Hãy nhớ, thực hành làm cho hoàn hảo. Hãy thử viết các ví dụ mã của riêng bạn và thử nghiệm với các kết hợp khác nhau của toán tử. Trước khi bạn biết điều đó, bạn sẽ viết các câu lệnh PL/SQL phức tạp một cách dễ dàng!
Credits: Image by storyset