VALUES в Oracle SQL — как правильно вставлять данные в подзапросы

🟢VALUES в Oracle SQL. Введение

Оператор VALUES используется в SQL для задания конкретных данных, которые нужно вставить в таблицу.
В Oracle VALUES применяется в основном в запросах INSERT, а также в подзапросах (с версии 19c и выше) через TABLE(...) и SELECT ... FROM DUAL.


🔤 Написание

sql
INSERT INTO таблица (колонка1, колонка2)
VALUES (значение1, значение2);

С несколькими строками (начиная с Oracle 19c):

sql
INSERT ALL
INTO таблица (a, b) VALUES (1, 'A')
INTO таблица (a, b) VALUES (2, 'B')
SELECT * FROM dual;

🔄 Где часто используется

  • Вставка одной строки в таблицу

  • Массовая вставка через INSERT ALL

  • Эмуляция табличных значений в SELECT

  • Подстановка значений в CTE или временные конструкции

  • Использование в тестах и процедурах


🧪 10 Примеров использования VALUES с пояснениями

1️⃣ Базовая вставка одной строки

sql
INSERT INTO employees (id, name)
VALUES (101, 'Anna');

Добавляем одну запись в таблицу.


2️⃣ Вставка строки с числом, строкой и датой

sql
INSERT INTO events (event_id, title, event_date)
VALUES (1, 'Webinar', TO_DATE('2025-06-18', 'YYYY-MM-DD'));

Используем типы данных в VALUES.


3️⃣ Вставка нескольких строк через INSERT ALL

sql
INSERT ALL
INTO colors (name) VALUES ('Red')
INTO colors (name) VALUES ('Green')
INTO colors (name) VALUES ('Blue')
SELECT * FROM dual;

Множественная вставка в одной конструкции.


4️⃣ ВЭЛЙЮ в SELECT через DUAL

sql
SELECT 'Oracle', 2025 FROM dual;

Имитация строки значений для обработки или теста.


5️⃣ VALUES в WITH-выражении (19c+)

sql
WITH vals AS (
SELECT * FROM (VALUES (1, 'One'), (2, 'Two')) t (id, label)
)
SELECT * FROM vals;

Создание временной таблицы прямо в запросе.

⚠ Поддерживается только в Oracle 19c+


6️⃣ ВЭЛЙЮ  в PL/SQL процедуре

sql
BEGIN
INSERT INTO logs (id, message)
VALUES (logs_seq.NEXTVAL, 'Начало работы');
END;

Используем VALUES в коде PL/SQL.


7️⃣ VALUES как источник для MERGE

sql
MERGE INTO users u
USING (SELECT 10 AS id, 'Alex' AS name FROM dual) s
ON (u.id = s.id)
WHEN MATCHED THEN UPDATE SET name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);

Вставка и обновление с помощью значений.


8️⃣ VALUES с вычисляемыми значениями

sql
INSERT INTO sales (amount, discount)
VALUES (1000, 1000 * 0.1);

Вставка с выражением прямо в VALUES.


9️⃣ VALUES с NULL и DEFAULT

sql
INSERT INTO users (id, name, status)
VALUES (105, NULL, DEFAULT);

Используем NULL и DEFAULT в вставке.


🔟 VALUES через подстановку переменных

sql
INSERT INTO configs (key, val)
VALUES (:my_key, :my_val);

Динамическое использование переменных в приложениях.


🧩 Заключение

Оператор VALUES — один из самых базовых и одновременно мощных инструментов в Oracle SQL. Он делает возможным вставку, построение тестовых запросов, массовую обработку и даже построение виртуальных таблиц.

💡 Запомни:

  • VALUES используется внутри INSERT и в SELECT FROM DUAL

  • С 19c можно использовать VALUES в WITH и TABLE(...)

  • Поддерживает вычисления, NULL, DEFAULT, переменные

  • Используется в MERGE, PL/SQL, INSERT ALL


🔜 Следующая статья будет:

CURRVAL в Oracle SQL — как получить последнее сгенерированное значение


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии