Швидкий посібник по командам модифікації даних SQL з прикладами

pic

SQL — це не лише запити до бази даних, а й потужні команди для зміни даних у таблицях. Ці команди мови маніпулювання даними (Data Manipulation Language, DML), як-от INSERT, UPDATE та DELETE, дозволяють додавати, змінювати або видаляти рядки в базі даних. У цій статті ми розглянемо ці команди на практичних прикладах.

Приклад таблиці: Співробітники

Розпочнемо з прикладу таблиці "Співробітники", щоб продемонструвати приклади:

| EmployeeID | Name    | Position   | Salary | Department |  
| ---------- | ------- | ---------- | ------ | ---------- |  
| 1          | Alice   | Developer  | 70000  | IT         |  
| 2          | Bob     | Designer   | 65000  | Design     |  
| 3          | Charlie | Developer  | 72000  | IT         |  
| 4          | Diana   | Manager    | 90000  | HR         |  
| 5          | Eve     | Developer  | 70000  | IT         |

1. INSERT: Додавання рядків до таблиці

Команда INSERT використовується для додавання нових рядків до таблиці.

Завдання: Додати нового співробітника Френка, який є тестувальником у відділі QA з зарплатою 60 000 доларів.

INSERT INTO Employees (EmployeeID, Name, Position, Salary, Department)  
VALUES (6, 'Frank', 'Tester', 60000, 'QA');

Результат: Таблиця тепер включає нового співробітника:

| EmployeeID | Name    | Position   | Salary | Department |  
| ---------- | ------- | ---------- | ------ | ---------- |  
| 1          | Alice   | Developer  | 70000  | IT         |  
| 2          | Bob     | Designer   | 65000  | Design     |  
| 3          | Charlie | Developer  | 72000  | IT         |  
| 4          | Diana   | Manager    | 90000  | HR         |  
| 5          | Eve     | Developer  | 70000  | IT         |  
| 6          | Frank   | Tester     | 60000  | QA         |

2. UPDATE: Зміна існуючих рядків

Команда UPDATE дозволяє змінювати дані в існуючих рядках на основі певних умов.

Завдання: Збільшити зарплату всім розробникам у відділі IT на 10%.

UPDATE Employees  
SET Salary = Salary * 1.10  
WHERE Position = 'Developer' AND Department = 'IT';

Результат: Зарплата для Аліси, Чарлі та Єви була оновлена:

| EmployeeID | Name    | Position   | Salary | Department |  
| ---------- | ------- | ---------- | ------ | ---------- |  
| 1          | Alice   | Developer  | 77000  | IT         |  
| 2          | Bob     | Designer   | 65000  | Design     |  
| 3          | Charlie | Developer  | 79200  | IT         |  
| 4          | Diana   | Manager    | 90000  | HR         |  
| 5          | Eve     | Developer  | 77000  | IT         |  
| 6          | Frank   | Tester     | 60000  | QA         |

3. DELETE: Видалення рядків з таблиці

Команда DELETE видаляє рядки з таблиці на основі умови.

Завдання: Видалити всіх співробітників з відділу QA.

DELETE FROM Employees  
WHERE Department = 'QA';

Результат: Френк був видалений з таблиці:

| EmployeeID | Name    | Position   | Salary | Department |  
| ---------- | ------- | ---------- | ------ | ---------- |  
| 1          | Alice   | Developer  | 77000  | IT         |  
| 2          | Bob     | Designer   | 65000  | Design     |  
| 3          | Charlie | Developer  | 79200  | IT         |  
| 4          | Diana   | Manager    | 90000  | HR         |  
| 5          | Eve     | Developer  | 77000  | IT         |

4. MERGE (UPSERT): Комбінування INSERT та UPDATE

Команда MERGE використовується для вставки нових рядків або оновлення існуючих рядків на основі умови співпадіння. Це також відомо як "upsert".

Завдання: Якщо співробітник з EmployeeID = 5 існує, змінити його позицію на "Lead Developer".
Інакше, вставити нового співробітника.

MERGE INTO Employees AS Target  
USING (SELECT 5 AS EmployeeID, 'Eve' AS Name, 'Lead Developer' AS Position, 80000 AS Salary, 'IT' AS Department) AS Source  
ON Target.EmployeeID = Source.EmployeeID  
WHEN MATCHED THEN  
 UPDATE SET Position = Source.Position, Salary = Source.Salary  
WHEN NOT MATCHED THEN  
 INSERT (EmployeeID, Name, Position, Salary, Department)  
 VALUES (Source.EmployeeID, Source.Name, Source.Position, Source.Salary, Source.Department);

Результат: Позиція Єви була оновлена на "Lead Developer":

| EmployeeID | Name | Position       | Salary | Department |  
| ---------- | ------- | -------------- | ------ | ---------- |  
| 1          | Alice   | Developer      | 77000  | IT         |  
| 2          | Bob     | Designer       | 65000  | Design     |  
| 3          | Charlie | Developer      | 79200  | IT         |  
| 4          | Diana   | Manager        | 90000  | HR         |  
| 5          | Eve     | Lead Developer | 80000  | IT         |

5. TRUNCATE: Швидке очищення всіх рядків

Команда TRUNCATE видаляє всі рядки з таблиці, але на відміну від DELETE, вона не веде журнал окремих видалених рядків, що робить її швидшою.

Завдання: Очистити всі рядки в таблиці "Employees".

TRUNCATE TABLE Employees;

Результат: Таблиця тепер порожня, але структура залишається незмінною.

6. DROP: Видалення всієї таблиці

Команда DROP видаляє таблицю та її дані назавжди.

Завдання: Видалити таблицю "Employees" з бази даних.

DROP TABLE Employees;

Результат: Таблиця "Employees" більше не існує.

Підсумок

SQL надає широкий набір команд для зміни даних та структури таблиць. Ось короткий підсумок:

Команда Використання

  1. INSERT Додавання нових рядків до таблиці.
  2. UPDATE Зміна даних у існуючих рядках.
  3. DELETE Видалення конкретних рядків з таблиці.
  4. MERGE Комбінування логіки INSERT і UPDATE (upsert).
  5. TRUNCATE Швидке очищення всіх рядків у таблиці.
  6. DROP Видалення всієї структури таблиці та даних.

Ці команди дозволяють підтримувати вашу базу даних актуальною, чистою та організованою. Практикуйте ці приклади на власній базі даних, щоб набратись впевненості в зміні даних за допомогою SQL!

Дякую, що знайшли час ознайомитися з даними та їх маніпулюванням. Я ціную вашу зацікавленість. Якщо ви вважаєте цю інформацію корисною, запрошую вас підписатися на мене або зв'язатися через LinkedIn. Успіхів у вивченні!👋

pic

Перекладено з: A Quick Guide to SQL Data Modification Commands with Examples

Leave a Reply

Your email address will not be published. Required fields are marked *