PL/SQL - Операторы

Здравствуйте, стремящиеся к знаниям программисты! Сегодня мы отправимся в увлекательное путешествие в мир операторов PL/SQL. Не волнуйтесь, если вы еще ни разу не писали строку кода – мы начнем с самых азов и будем двигаться дальше. К концу этого урока вы будете manipulate данные, как профессионaл!

PL/SQL - Operators

Арифметические операторы

Давайте начнем с чего-то знакомого: математики! Операторы арифметики в PL/SQL работают так же, как и те, что выучили в школе. Они позволяют нам выполнять базовые математические операции с числами.

Вот таблица арифметических операторов в PL/SQL:

Оператор Описание Пример
+ Сложение 5 + 3 = 8
- Вычитание 10 - 4 = 6
* Умножение 3 * 4 = 12
/ Деление 15 / 3 = 5
** Степень 2 ** 3 = 8

Давайте посмотрим, как они работают в простом примере кода PL/SQL:

DECLARE
num1 NUMBER := 10;
num2 NUMBER := 5;
result NUMBER;
BEGIN
result := num1 + num2;
DBMS_OUTPUT.PUT_LINE('Сложение: ' || result);

result := num1 - num2;
DBMS_OUTPUT.PUT_LINE('Вычитание: ' || result);

result := num1 * num2;
DBMS_OUTPUT.PUT_LINE('Умножение: ' || result);

result := num1 / num2;
DBMS_OUTPUT.PUT_LINE('Деление: ' || result);

result := num1 ** 2;
DBMS_OUTPUT.PUT_LINE('Степень: ' || result);
END;

В этом примере мы declare две переменные num1 и num2, и затем выполняем различные арифметические операции над ними. Результаты затем выводятся в output.

When you run this code, you'll see:

Сложение: 15
Вычитание: 5
Умножение: 50
Деление: 2
Степень: 100

Реляционные операторы

Теперь перейдем к реляционным операторам. Эти операторы используются для сравнения двух значений и определения между ними отношений. Они resemble вопросы, которые вы задаете при сравнении вещей: "Это больше, чем то?" или "Эти два одинаковые?"

Вот таблица реляционных операторов в PL/SQL:

Оператор Описание Пример
= Равно 5 = 5 is true
<> Не равно 5 <> 3 is true
< Меньше 3 < 5 is true
> Больше 5 > 3 is true
<= Меньше или равно 3 <= 3 is true
>= Больше или равно 5 >= 5 is true

Давайте посмотрим, как они работают:

DECLARE
a NUMBER := 10;
b NUMBER := 20;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a равно b');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a меньше b');
ELSE
DBMS_OUTPUT.PUT_LINE('a больше b');
END IF;

IF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a не равно b');
END IF;
END;

Этот код сравнивает a и b с использованием реляционных операторов. When you run it, you'll see:

a меньше b
a не равно b

Операторы сравнения

Операторы сравнения в PL/SQL довольно похожи на реляционные операторы, но они включают дополнительную функциональность, особенно для работы с NULL значениями и сравнения разных типов данных.

Вот таблица операторов сравнения:

Оператор Описание
IS NULL Проверяет, является ли значение NULL
IS NOT NULL Проверяет, является ли значение не NULL
LIKE Сопоставление шаблонов
BETWEEN Проверяет, находится ли значение в диапазоне
IN Проверяет, соответствует ли значение одному из значений в списке

Давайте посмотрим пример:

DECLARE
name VARCHAR2(20) := 'John Doe';
age NUMBER := 25;
BEGIN
IF name IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('Имя: ' || name);
END IF;

IF name LIKE 'J%' THEN
DBMS_OUTPUT.PUT_LINE('Имя начинается с J');
END IF;

IF age BETWEEN 20 AND 30 THEN
DBMS_OUTPUT.PUT_LINE('Возраст между 20 и 30');
END IF;

IF age IN (25, 30, 35) THEN
DBMS_OUTPUT.PUT_LINE('Возраст 25, 30 или 35');
END IF;
END;

Этот код демонстрирует различные операторы сравнения. When you run it, you'll see:

Имя: John Doe
Имя начинается с J
Возраст между 20 и 30
Возраст 25, 30 или 35

Логические операторы

Логические операторы позволяют нам combine несколько условий. Они resemble "и" и "или" в повседневном языке, когда мы описываем сложные ситуации.

Вот таблица логических операторов в PL/SQL:

Оператор Описание
AND Истина, если оба условия истинны
OR Истина, если одно из условий истинно
NOT Инвертирует результат условия

Давайте посмотрим, как они работают:

DECLARE
age NUMBER := 25;
has_license BOOLEAN := TRUE;
BEGIN
IF age >= 18 AND has_license THEN
DBMS_OUTPUT.PUT_LINE('Вы можете водить машину');
END IF;

IF age < 18 OR NOT has_license THEN
DBMS_OUTPUT.PUT_LINE('Вы не можете водить машину');
ELSE
DBMS_OUTPUT.PUT_LINE('Вы можете водить машину');
END IF;
END;

Этот код проверяет, может ли человек водить машину на основе его возраста и наличия прав. When you run it, you'll see:

Вы можете водить машину
Вы можете водить машину

Приоритетность операторов в PL/SQL

Как и в математике, операторы PL/SQL имеют определенный порядок, в котором они evaluerated. Это называется приоритетностью операторов. Понимание этого важно для написания correct и предсказуемого кода.

Вот приоритетность операторов в PL/SQL, отhighest до lowest:

  1. Степень (**)
  2. Умножение (*), Деление (/)
  3. Сложение (+), Вычитание (-)
  4. Сравнительные операторы (=, <>, <, >, <=, >=)
  5. IS NULL, LIKE, BETWEEN, IN
  6. NOT
  7. AND
  8. OR

Давайте посмотрим пример, как это работает:

DECLARE
result BOOLEAN;
BEGIN
result := 5 > 3 AND 10 / 2 = 5 OR NOT (2 + 2 = 4);

IF result THEN
DBMS_OUTPUT.PUT_LINE('Результат ИСТИНА');
ELSE
DBMS_OUTPUT.PUT_LINE('Результат ЛОЖЬ');
END IF;
END;

В этом примере выражение evaluerated следующим образом:

  1. 10 / 2 = 5 (деление, затем сравнение)
  2. 5 > 3 (сравнение)
  3. 2 + 2 = 4 (сложение, затем сравнение)
  4. NOT (2 + 2 = 4) (логическое NOT)
  5. 5 > 3 AND 10 / 2 = 5 (логическое AND)
  6. Result of step 5 OR result of step 4 (логическое OR)

When you run this code, you'll see:

Результат ИСТИНА

И вот мы и добрались до конца! Мы рассмотрели основные типы операторов в PL/SQL. Помните, что практика делает мастера. Попробуйте написать свои собственные примеры кода и experiment с различными комбинациями операторов. Before you know it, вы будете легко писать сложные предложения PL/SQL!

Credits: Image by storyset