Обновление значений на NULL

Обновление значений на NULL в SQL может быть полезным, когда необходимо установить значение NULL в столбец вместо текущего значения, чтобы указать отсутствие данных или сделать данные более точными. Этот процесс выполняется с помощью оператора UPDATE и выражения SET.

Основной синтаксис

UPDATE table_name
SET column_name = NULL
WHERE condition;

Где:

  • table_name — имя таблицы, в которой вы хотите обновить данные.

  • column_name — имя столбца, который нужно обновить.

  • condition — условие, которое определяет, какие строки будут обновлены.

Примеры обновления значений на NULL

1. Обновление всех строк в столбце на NULL

Если вам нужно обновить все строки в определенном столбце, чтобы установить NULL, можно использовать следующий запрос:

UPDATE employees
SET bonus = NULL;

Этот запрос установит NULL в столбец bonus для всех сотрудников.

2. Обновление строк на NULL по условию

2.1. Установить NULL для строк, которые соответствуют определенному условию

Пример: Установить NULL для столбца manager_id в таблице employees, где salary меньше 40000

UPDATE employees
SET manager_id = NULL
WHERE salary < 40000;

Этот запрос установит NULL в столбец manager_id для сотрудников, у которых зарплата меньше 40,000.

2.2. Установить NULL для строк, где дата истечения срока годности просрочена

Пример: Установить NULL в столбец expiry_date в таблице products, где дата истечения срока годности раньше текущей даты

UPDATE products
SET expiry_date = NULL
WHERE expiry_date < CURRENT_DATE;

Этот запрос установит NULL в столбец expiry_date для продуктов, у которых дата истечения срока годности меньше текущей даты.

3. Использование подзапросов для установки NULL

Пример: Установить NULL для department_id в таблице employees, если соответствующий department_id не существует в таблице departments

UPDATE employees
SET department_id = NULL
WHERE department_id NOT IN (
    SELECT department_id
    FROM departments
);

Этот запрос установит NULL в столбец department_id для сотрудников, чьи department_id отсутствуют в таблице departments.

4. Применение функции для установки NULL

В некоторых случаях можно использовать функции для замены значений на NULL.

Пример: Установить NULL в столбец bonus, если его значение равно 0

UPDATE employees
SET bonus = NULL
WHERE bonus = 0;

Этот запрос заменит значения 0 в столбце bonus на NULL.

5. Обновление с учетом условий в нескольких столбцах

Пример: Установить NULL в столбец phone_number и email в таблице contacts, если оба значения отсутствуют

UPDATE contacts
SET phone_number = NULL, email = NULL
WHERE phone_number IS NULL AND email IS NULL;

Этот запрос установит NULL в столбцы phone_number и email для строк, где оба значения уже равны NULL.

6. Использование CASE для более сложных условий

Если требуется более сложная логика для обновления значений, можно использовать конструкцию CASE в выражении SET.

Пример: Установить NULL в столбец discount в зависимости от значений в других столбцах

UPDATE orders
SET discount = CASE
    WHEN total_amount < 100 THEN NULL
    WHEN total_amount >= 100 AND total_amount < 500 THEN discount
    ELSE discount * 0.9
END;

Этот запрос устанавливает NULL в столбец discount для заказов с суммой менее 100, оставляет текущие значения для заказов от 100 до 499, и применяет скидку 10% для заказов на сумму 500 и более.

Заключение

Обновление значений на NULL в SQL можно выполнить с помощью оператора UPDATE и выражения SET. Важно правильно использовать условие WHERE для определения, какие строки будут обновлены, чтобы избежать нежелательных изменений. Использование функций и конструкций, таких как CASE, позволяет выполнять более сложные обновления в зависимости от значений других столбцов.

Last updated