Skip to main content

Язык SQL (DML: INSERT, UPDATE, DELETE). Варианты синтаксиса для множественного обновления данных.

DDL и DML — подмножество языка SQL

DDL (Data Definition Language, язык описания данных) служит для создания и модификации структуры БД, т.е. для создания/изменения/удаления таблиц и связей.

DML (Data Manipulation Language, язык манипулирования данными) позволяет осуществлять манипуляции с данными таблиц, т.е. с ее строками. Он позволяет делать выборку данных из таблиц, добавлять новые данные в таблицы, а также обновлять и удалять существующие данные.

INSERT

Оператор используется для добавления данных в таблицу.

Добавление одной строки:

INSERT INTO Employees (Name, Department, Salary)
VALUES ('Ivan', 'IT', 1000);

Добавление нескольких строк (множественная вставка):

INSERT INTO Employees (Name, Department, Salary)
VALUES
  ('Ivan', 'IT', 1000),
  ('Anna', 'HR', 900),
  ('Petr', 'IT', 1100);

Вставка данных из другой таблицы:

INSERT INTO Employees (Name, Department, Salary)
SELECT Name, Department, Salary
FROM NewEmployees;

UPDATE

Оператор используется для изменения существующих данных.

Обновление нескольких строк по условию:

UPDATE Employees
SET Salary = Salary * 1.1
WHERE Department = 'IT';

В SQL нет отдельного оператора для обновления «одной» или «нескольких» строк — количество обновляемых строк определяется условием WHERE.

Множественное обновление нескольких столбцов:

UPDATE Employees
SET
  Salary = 1200,
  Department = 'Finance'
WHERE Name = 'Ivan';

Обновление с использованием подзапроса:

UPDATE Employees
SET Salary = (
    SELECT AVG(Salary)
    FROM Employees
)
WHERE Department = 'HR';

Обновление с JOIN (диалектозависимо, например MySQL / PostgreSQL):

UPDATE Employees e
SET Salary = s.NewSalary
FROM SalaryChanges s
WHERE e.EmployeeID = s.EmployeeID;

DELETE

Оператор используется для удаления данных.

Удаление строк по условию:

DELETE FROM Employees
WHERE Department = 'HR';

Удаление всех строк таблицы:

DELETE FROM Employees;

Удаление с использованием подзапроса:

DELETE FROM Employees
WHERE Salary < (
    SELECT AVG(Salary)
    FROM Employees
);

Summary:

  • INSERT — добавляет одну или несколько строк
  • UPDATE — изменяет одну или несколько строк (множественное обновление задаётся через WHERE)
  • DELETE — удаляет одну или несколько строк

Множественное обновление данных в SQL достигается:

  • обновлением всех строк, подходящих под WHERE
  • обновлением нескольких столбцов за один запрос
  • использованием подзапросов и JOIN